Blaž Hrastnik
e9a3245aae
Re-export unicode crates from helix_core
3 years ago
Blaž Hrastnik
9275021497
ui: prompt: Better unicode support
...
We copied over eval_movement from wezterm, that already solves most of
our problems. self.cursor is now byte-based.
3 years ago
wojciechkepka
59c59deb46
Add missing `theme` to toml config
3 years ago
Jan Hrastnik
8634e04a31
added the line_end helper function
3 years ago
Jan Hrastnik
701eb0dd68
changed some hardcoded newlines, removed a else if in line_ending.rs
3 years ago
wojciechkepka
2d629a880c
Fix overflow
3 years ago
Blaž Hrastnik
28d9673a8e
Fix compilation
3 years ago
wojciechkepka
42e13bd542
Add `:theme <name>` command
3 years ago
wojciechkepka
b1a41c4cc8
Add `theme` to global configuration
3 years ago
wojciechkepka
a2db161d5a
Add theme completer
3 years ago
wojciechkepka
ce97a2f05f
Add ability to change theme on editor
3 years ago
Blaž Hrastnik
10f9f72232
Revert "Refactor key into helix-view"
...
Did not use defaults when custom keymap was used
This reverts commit ca806d4f85
.
3 years ago
wojciechkepka
11f20af25f
Make `home` and `end` work in insert mode
3 years ago
Jan Hrastnik
1e80fbb602
fix merge issue
3 years ago
Jan Hrastnik
cdd9347457
Merge remote-tracking branch 'origin/master' into line_ending_detection
3 years ago
Jan Hrastnik
97323dc2f9
ran cargo fmt
3 years ago
Jan Hrastnik
ecb884db98
added get_line_ending from pr comment
3 years ago
Ivan Tham
ca806d4f85
Refactor key into helix-view
...
Now also make use of Deserialize for Config.
3 years ago
wojciechkepka
1c25852021
Make arrow keys and page up/down work in insert mode
3 years ago
wojciechkepka
c5a2fd5da3
Add `close_language_servers` method on `Editor`
3 years ago
wojciechkepka
c2aad859b1
Handle language server shutdown with timeout
3 years ago
Benoît CORTIER
03d1ca7b0a
cargo: add more metadata to manifests
3 years ago
Benoît CORTIER
db5bdf4f2d
Run cargo-diet
...
cargo-diet is a helper for computing the optimal `include` directives
for Cargo.toml manifests.
https://github.com/the-lean-crate/cargo-diet
3 years ago
Benoît CORTIER
b48054f3ee
cargo: add version to local dependencies
...
First step towards enabling us to publish on crates.io.
See: https://github.com/helix-editor/helix/issues/42
3 years ago
wojciechkepka
1c1474c3b8
Add `ui.statusline.inactive`, use `ui.statusline` for statusline text
3 years ago
Wojciech Kępka
1bb3b778ad
Don't derive `Default` for `GlobalConfig` ( #297 )
...
We shouldn't derive Default because `lsp_progress` by default should be turned on (opt out).
3 years ago
Gokul Soumya
b1cb98283d
Fix indent regression issue with o, O
...
Indents were no longer respected with `o` and `O`. Using counts resulted
in multiple cursors in the same line instead of cursors on each line.
Introduced by 47d2e3ae
3 years ago
wojciechkepka
a3cb79ebaa
Use kebab-case for config
3 years ago
wojciechkepka
bbefc1db63
Add an option to disable display of progress in status bar
3 years ago
wojciechkepka
612511dc98
Handle workDoneProgress/create request
3 years ago
wojciechkepka
e1109a5a01
Update handling of progress notification
3 years ago
wojciechkepka
38cb934d8f
Add unique id to each lsp client/server pair
3 years ago
wojciechkepka
a6d39585d8
Add `work_done_token` as parameter to lsp methods
3 years ago
Wojciech Kępka
41b07486ad
Fix expansion of `~` ( #284 )
...
* Fix expansion of `~`, dont use directory relative to cwd.
* Add `expand_tilde`
* Bring back `canonicalize_path`, use `expand_tilde` to `normalize`
* Make `:open ~` completion work
* Fix clippy
* Fold home dir into tilde in Document `realitve_path`
3 years ago
Benoît CORTIER
42142cf680
Fix panic when entering unicode in command prompt
...
It was attempted to use `String::insert` and `String::remove` to insert
without taking care of unicodes.
Fixes https://github.com/helix-editor/helix/issues/282
3 years ago
Benoît CORTIER
8664d70e73
Replace `Editor::current` by a macro
...
This is necessary to workaround ownership issues across function calls.
The issue notably arised when implementing the registers into `Editor`
and I was getting annoyed again when implementing copy/pasting into
system clipboard.
The problem is addressed by using macro calls instead of function calls.
There is no notable side effect.
3 years ago
Jan Hrastnik
8bccd6df30
applied changes from pr review
3 years ago
PabloMansanet
f7e00cf720
Configurable keys 2 (Mapping keys to commands) ( #268 )
...
* Add convenience/clarity wrapper for Range initialization
* Add keycode parse and display methods
* Add remapping functions and tests
* Implement key remapping
* Add remapping book entry
* Use raw string literal for toml
* Add command constants
* Make command functions private
* Map directly to commands
* Match key parsing/displaying to Kakoune
* Formatting pass
* Update documentation
* Formatting
* Fix example in the book
* Refactor into single config file
* Formatting
* Refactor configuration and add keymap newtype wrappers
* Address first batch of PR comments
* Replace FromStr with custom deserialize
3 years ago
Gokul Soumya
47d2e3aefa
Let o, O take counts for multiple cursors
3 years ago
Gokul Soumya
20d6b202d5
Fix cursor position bugs related to o and O
...
- `O` at the beginning of file didn't move cursor
- `o` and `O` messed up cursor position with multiple cursors
Fixes #127
3 years ago
Jan Hrastnik
9c3eadb2e4
fixed some problems from rebasing
3 years ago
Jan Hrastnik
7cf0fa05a4
doc.line_ending() now returns &'static str
3 years ago
Jan Hrastnik
a4f5a0134e
trying out line ending helper functions in commands.rs
3 years ago
Jan Hrastnik
3756c21bae
rebase on branch line_ending_detection
3 years ago
Gokul Soumya
d1c8a74771
Add theme key for selected line number
...
Adds `ui.linenr.selected` which controls highlight of linu numbes which
have cursors on.
- Fallback to linenr if linenr.selected is missing
- Update docs and themes
- Add TODOs for themes with temporary linenr.selected
3 years ago
Ivan Tham
124514aa70
Add cursor kind to separate hidden cursor from pos
...
Now IME cursor position should be correct since we can still set cursor
position without drawing the cursor.
3 years ago
Benoît CORTIER
6bdf609caa
Remove RwLock for registers
...
Registers are stored inside `Editor` and accessed without `RwLock`.
To work around ownership, I added a sister method to `Editor::current`:
`Editor::current_with_context`. I tried to modify `Editor::current`
directly but it's used at a lot of places so I reverted into this for
now at least.
3 years ago
Benoît CORTIER
6fb2d2679d
Use `_impl` suffix instead of `_` prefix
...
Helpers / internal implementations where using the `_` prefix.
However, this prefix also suppress unused warnings.
I suggest we use the `_impl` suffix instead.
3 years ago
Ivan Tham
05ed3e8fb8
Remove unused variables
3 years ago
Ivan Tham
002f1ad397
Add filter ability to picker
...
Inspired by doom emacs. Able to filter picker options multiple times.
3 years ago
Nathan Vegdahl
7c2fb92c91
Report indent style when calling indent-style with no arguments.
...
Also print an error message when the argument is malformed.
3 years ago
Nathan Vegdahl
d415a666fe
Address PR comments.
...
* Clean up "indent-style" command argument parsing.
* Adjust command's name to match the style of other commands.
* Add a "0" alias to the command, for tabs indent style.
3 years ago
Nathan Vegdahl
4faf1d3bf4
Remove indent style status-line display for now.
3 years ago
Nathan Vegdahl
358ea6a37c
Implement command to change the indent-style setting of a document.
3 years ago
Nathan Vegdahl
8648e483f7
Render indent-style status in status line.
...
Also cleaned up the status line code a little.
3 years ago
Ivan Tham
1bda454149
Add ctrl-w for prompt
3 years ago
Blaž Hrastnik
e819121f6e
fix: wq/wqa functions need to wait for save to finish before closing
3 years ago
Gokul Soumya
f33aaba53f
Add ui.selection to theme.toml
...
Enables changing the color of the selection which was previously
hard coded.
3 years ago
Gokul Soumya
9cfa163370
Refactor keymap definitions using macros
...
Adds a macro rule to the `key!` macro so that keymaps using `Left`,
`Home`, `Esc`, etc. will also be accepted.
3 years ago
dependabot[bot]
e4b3a666d2
Bump once_cell from 1.7.2 to 1.8.0 ( #255 )
...
Bumps [once_cell](https://github.com/matklad/once_cell ) from 1.7.2 to 1.8.0.
- [Release notes](https://github.com/matklad/once_cell/releases )
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md )
- [Commits](https://github.com/matklad/once_cell/compare/v1.7.2...v1.8.0 )
---
updated-dependencies:
- dependency-name: once_cell
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
3 years ago
dependabot[bot]
9b352ceefd
Bump crossterm from 0.19.0 to 0.20.0
...
Bumps [crossterm](https://github.com/crossterm-rs/crossterm ) from 0.19.0 to 0.20.0.
- [Release notes](https://github.com/crossterm-rs/crossterm/releases )
- [Changelog](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md )
- [Commits](https://github.com/crossterm-rs/crossterm/compare/0.19...0.20 )
---
updated-dependencies:
- dependency-name: crossterm
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
3 years ago
Andreas Liljeqvist
5d23667a26
fix offset by one problem in replace_with_yanked
3 years ago
Blaž Hrastnik
ae5ecfdf66
Release v0.2.0
3 years ago
Blaž Hrastnik
d545e61644
ui: Prompt should figure out a reasonable column width
...
Fixes #192
Refs #225
3 years ago
Wojciech Kępka
df217f71c1
Fix `wq`
3 years ago
Wojciech Kępka
b9100fbd44
Fix clippy
3 years ago
Wojciech Kępka
52d3c29244
Deduplicate code
3 years ago
Wojciech Kępka
17c9a8499e
Add `qa` and `qa!`
3 years ago
Wojciech Kępka
62e6232a32
Update write_all
3 years ago
Wojciech Kępka
d8b5d1181f
Add `Copy` derive to `PromptEvent`
3 years ago
Wojciech Kępka
b500a2a138
commands: Add more write commands
3 years ago
Yusuf Bera Ertan
a3f01503e2
build(nix): use nix-cargo-integration, make shell.nix use flake devshell
3 years ago
Ivan Tham
9640ed1425
Add clarification to last buffer
3 years ago
Robin
9baf1ecc90
add symbol picker ( #230 )
...
* add symbol picker
use the lsp document_symbol request
* fix errors from merging in master
* add docs for symbol picker
3 years ago
Robin
44cc0d8eb0
add alternate file ( #223 )
...
* add alternate file
inspired by vim ctrl-6/kak ga commands. the alternate file is kept per view
* apply feedback from #223
* rename to last_accessed
* add ga doc
* add fail message for ga
3 years ago
Ivan Tham
1953588873
Change picker horizontal split to h
...
Follow window mode and vim behavior, x seemed weird.
3 years ago
Wojciech Kępka
c754df12b3
lsp: Check bounds when converting lsp positions ( #204 )
...
* lsp: Make position conversion funcs return `Option`
* Add tests
* Fixes
* Revert pos_to_lsp_pos to panic
3 years ago
Blaž Hrastnik
278361a086
Only auto-format for certain languages
...
Fixes #53
Fixes #207
3 years ago
Jakub Bartodziej
69fe46a122
Add :earlier and :later commands that can be used to navigate the full edit history. ( #194 )
...
* Disable deleting from an empty buffer which can cause a crash.
* Improve on the fix for deleting from the end of the buffer.
* Clean up leftover log.
* Avoid theoretical underflow.
* Implement :before which accepts a time interval and moves the editor to
the closest history state to the commit of the current time minus that
interval. Current time is now by default, or the commit time if :before
has just been used.
* Add :earlier an :later commands that can move through
the edit history and retrieve changes hidded by undoing
and commiting new changes. The commands accept a number
of steps or a time period relative to the currrent change.
* Fix clippy lint error.
* Remove the dependency on parse_duration, add a custom parser instead.
* Fix clippy errors.
* Make helix_core::history a public module.
* Use the helper for getting the current document and view.
* Handled some PR comments.
* Fix the logic in :later n.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add an alias for :earlier.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add an alias for later.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Run cargo fmt.
* Add some tests for earlier and later.
* Add more tests and restore the fix for later that diappeared somehow.
* Use ? instead of a match on an option.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Rename to UndoKind.
* Remove the leftover match.
* Handle a bunch of review comments.
* More systemd.time compliant time units and additional description for the new commands.
* A more concise rewrite of the time span parser using ideas from PR discussion.
* Replace a match with map_err().
Co-authored-by: Ivan Tham <pickfire@riseup.net>
Co-authored-by: Jakub Bartodziej <jqb@google.com>
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
PabloMansanet
86af55c379
Movement fixes, refactor and unit test suite ( #217 )
...
* Add convenience/clarity wrapper for Range initialization
* Test horizontal moves
* Add column jumping tests
* Add failing movement conditions for multi-word moves
* Refactor skip_over_next
* Add complex forward movement unit tests
* Add strict whitespace checks and edge case tests
* Restore formatting
* Remove unused function
* Add empty test case for deletion and fix nth_prev_word_boundary
* Add tests for backward motion
* Refactor word movement
* Address review comments and finish refactoring backwards move
* Finish unit test suite
* Fmt pass
* Fix lint erors
* Clean up diff restoring bad 'cargo fmt' actions
* Simplify movement closures (thanks Pickfire)
* Fmt pass
* Replace index-based movement with iterator based movement, ensuring that each move incurs a single call to the RopeSlice API
* Break down tuple function
* Extract common logic to all movement functions
* Split iterator helpers away into their own module
* WIP reducing clones
* Operate on spans
* WIP simplifying iterators
* Simplify motion helpers
* Fix iterator
* Fix all unit tests
* Refactor and simplify
* Simplify fold
3 years ago
Wojciech Kępka
0c2b99327a
commands: Handle `t<ENTER>` as till newline
3 years ago
Wojciech Kępka
098806ce2a
lsp: Display LSP progress messages ( #216 )
3 years ago
Robin van Dijk
c0d32707d0
move to first nonwhitespace on shift-i
...
This matches the behaviour in vim and kak
3 years ago
Ivan Tham
7cc13fefe9
Derive debug without feature
...
Note that this also removed those `finish_non_exhaustive()`.
3 years ago
notoria
1a3a924634
Implement Debug for data structure as a feature
3 years ago
Ivan Tham
6b3c9d8ed3
Fix jump behavior, goto_implementation now jump
...
Better jump behavior since we override the first jump if it's on the
first document. At the same time, ctrl-i is now working with gd jumps.
3 years ago
wojciechkepka
4dbc23ff1c
Fix documentation popup panic
3 years ago
Kevin Sjöberg
b20e4a108c
Only enforce limit outside of .git
3 years ago
Kevin Sjöberg
1bb9977faf
Match keybindings of menu
3 years ago
Kevin Sjöberg
29962a5bd9
Fix Shift-Tab for moving upwards in menu
3 years ago
Blaž Hrastnik
83723957fe
Fix crash when too many completions available
...
Refs #81
3 years ago
Zheming Li
ae51065213
Support go to line 1
3 years ago
Wojciech Kępka
4e3a343602
Make `r<ENTER>` work
3 years ago
Wojciech Kępka
81e02e1ba4
Remove unwanted `as_str`
3 years ago
Wojciech Kępka
c349ceb61f
Don't replace newlines
3 years ago
Wojciech Kępka
2e4a338944
Add bounds checks to replace
3 years ago
Wojciech Kępka
9c83a98469
commands: Replace all characters in selection
3 years ago
Wojciech Kępka
1bffb34350
Make matching bracket dimmed, prevent out of bounds rendering
3 years ago
Wojciech Kępka
c978d811d9
Cleanup find_first_non_whitespace_char funcs
3 years ago
Wojciech Kępka
48df05b16d
commands: Add goto first non-whitespace char of line
3 years ago
Kirawi
b873fb9897
Fix Unicode ( #135 )
...
* init
* wip
* wip
* fix unicode break
* fix unicode break
* Update helix-core/src/transaction.rs
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
* clippy
* fix
* add changes
* added test
* wip
* wip
* wip
* wip
* fix
* fix view
* fix #88
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
3 years ago
Kevin Sjöberg
08f50310bd
Bump file picker limit
3 years ago
Wojciech Kępka
4bec87ad18
Update keymap
3 years ago
Wojciech Kępka
c65b4dea09
commands: Add replace with yanked as `R`
3 years ago
Wojciech Kępka
6fc0e0b5fb
completion: Fix unimplemented autocomplete
3 years ago
Blaž Hrastnik
0201ef9205
ui: completion: Use the correct type_name
...
Fixes #166
3 years ago
Wojciech Kępka
037f45f24e
Create all parent directories for config and cache
3 years ago
Blaž Hrastnik
9821beb5c4
Make gh/gl extend selection in select mode
3 years ago
Blaž Hrastnik
3cee0bf200
Address clippy lint
3 years ago
Blaž Hrastnik
4fd38f82a3
Disable failing doctest
3 years ago
Ivan Tham
b5682f984b
Separate helix-term as a library
...
helix-term stuff will now be documented in rustdoc.
3 years ago
Benoît CORTIER
68affa3c59
Implement register selection
...
User can select register to yank into with the " command.
A new state is added to `Editor` and `commands::Context` structs.
This state is managed by leveraging a new struct `RegisterSelection`.
3 years ago
Blaž Hrastnik
8d6fad4cac
lsp: Provide workspace root on client.initialize()
3 years ago
Blaž Hrastnik
14830e75ff
Revert the line number rendering change, we were correct before
3 years ago
Blaž Hrastnik
f48a60b8e2
Release 0.0.10
3 years ago
Blaž Hrastnik
4f561e93b8
View mode: Use saturating_sub when calculating first_col
3 years ago
Blaž Hrastnik
01b1bd15a1
commands: use chars().count() over .len() on strings
3 years ago
ahkrr
e2d780f993
fix: 2 panics while setting style + off by 1
...
The panics would occur because set_style
would draw outside of the the surface.
Both occured using `find_prev` or `till_prev`
In my case the first panic! would appear
in a terminal with around 80 columns
in helix/README.md going to the end of the file
with `geglf(`
the second with `geglfX`
The off by one fix ensures that `find_nth_prev`
starts at the first character to the left
3 years ago
Ethan Bodzioney
843c2cdebd
Install instructions and version number corrections ( #148 )
...
* Add MacOS install instructions
* Change version name argument
When using the -V command to get the version you are given 'helix-term x.x.x', I changed this to just helix as it makes more sense.
* Fixed version number
* Fixed version number
* Fixed version number
* Fixed version number
* Fixed version number
* Fixed version number
3 years ago
Wojciech Kępka
16b1cfa3be
Add diagnostics keybindings
3 years ago
Ivan Tham
2066e866c7
Add spc w w for window mode
3 years ago
Kevin Sjöberg
3494bb8ef0
Refactor index assignment
...
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
Kevin Sjöberg
a4ff8cdd8a
Allow moving backwards in completions
3 years ago
Kevin Sjöberg
145bc1970a
Trigger directory completion upon pressing Enter
3 years ago
Ivan Tham
40744ce835
Add ctrl-w in insert mode
...
It seemed to panic when I pressed too many times, but that is from
lsp side.
3 years ago
Kevin Sjöberg
aa8a8baeeb
Calculate offset when moving picker cursor
3 years ago
Kevin Sjöberg
2ac496f919
Do not move past number of matches
3 years ago
Brian Dawn
62d181de78
Provide a feature flag to be able to embed the runtime folder.
...
These changes provide a new feature flag "embed_runtime" that when
enabled and built in release mode will embed the runtime folder into the
resulting binary.
3 years ago
Ivan Tham
8c2fa12ffc
Add window mode
...
Fix #93
3 years ago
ahkrr
c5c3ec07f4
fix: panicked at 'attempt to subtract with overflow'
...
helix-term/src/ui/editor.rs:275:29
This would happen when the window-size was to small to display the entire width and one would start jumping forwards with f<some_char> and the beginning of the highlighted area would end up outside of the window
3 years ago
ahkrr
444cd0b068
fix: make find_prev_char and till_prev_char work
...
Bevore this PR `commands::find_prev_char` and `commands::till_prev_char` were triggerable through keys
but `seach::find_nth_next()` was hardcoded in `_find_char`.
The passed `fn` was nerver used. With this PR the passed `fn` is used.
The change in search.rs resolves an off by one error in the behivor of `find_nth_prev`
3 years ago
Kirawi
c17dcb8633
Fixing Multiple Panics ( #121 )
...
* init
* wip
* wip
3 years ago
Antoni Stevenet
a1f4b8f92b
Add home-end keymaps, (as kakoune/vim do) ( #83 )
...
* add home-end keymaps
* implement extend methods for extend_line_start, extend_line_end
* add home-end mappings to keymaps.md
* add ^-$ extend mappings for extend mode
* pass cargo linter
3 years ago
notoria
adcfcf9044
Replace ^/$ with gh/gl
3 years ago
Blaž Hrastnik
4f0e3aa948
Implement gt/gm/gb, remap goto tYpe to gy
3 years ago
Blaž Hrastnik
f2e554d761
matchbrackets: Needs to render with the viewport offset
3 years ago
Blaž Hrastnik
bd4552cd2b
scroll: Fix the clamping
3 years ago
Blaž Hrastnik
06d8d3f55f
Try to detect language when document file path is set
...
Fixes #91
3 years ago
Blaž Hrastnik
8afd4e1bc2
Exit select mode on delete_selection
3 years ago
wojciechkepka
43b92b24d2
Show file picker when directory passed as first arg
3 years ago
Ivan Tham
29b9eed33c
Fix panic paint mysterious matching pair
...
When the matching pair is out of bounds it still paints it causing an
out of bound panic. A dirty fix since it still have some issue, at least
it does not panic now.
3 years ago
Kevin Sjöberg
fdb5bfafae
Limit goto count
...
Giving a goto count greater than the number of lines in the buffer
would cause Helix to panic.
3 years ago
Antoni Stevent
27aee705e0
use correct _extend methods, also remove unnecessary casts
3 years ago
Antoni Stevent
f0fe558f38
Add up/right/left/down arrow keymaps, similar to kakoune
3 years ago
Jakub Bartodziej
09a7db637e
Avoid theoretical underflow.
3 years ago
Jakub Bartodziej
31ed4db153
Clean up leftover log.
3 years ago
Jakub Bartodziej
3c5dfb0633
Improve on the fix for deleting from the end of the buffer.
3 years ago
Jakub Bartodziej
6cbc0aea92
Disable deleting from an empty buffer which can cause a crash.
3 years ago
Jan Hrastnik
c1c3750d38
key is now modified in place at start of handle_event
3 years ago
Jan Hrastnik
daad8ebe12
key_canonicalization now only matches chars
3 years ago
Jan Hrastnik
68abc67ec6
put the key canonicalization in a seperate function. only chars now get stripped of Shift modifier
3 years ago
Jan Hrastnik
712f25c2b9
removed shift matching
3 years ago
notoria
c3a98b6a3e
Highlight matching brackets
3 years ago
Blaž Hrastnik
661dbdca57
Fix cursor not showing on (0, 0)
3 years ago
Ivan Tham
d664d1dec0
Default log file to cache
3 years ago
Blaž Hrastnik
7e8603247d
Merge pull request #66 from IceDragon200/replaced-args-parser
...
Drop pico-args in favour of a hand rolled parser
3 years ago
Blaž Hrastnik
6dba1e7ec7
Clippy lint
3 years ago
Blaž Hrastnik
c0332bd935
Fix split sizes getting out of sync with the terminal size, refs #69
3 years ago
Corey Powell
f0018280cb
Refactored parse_args loop
...
Thanks @PabloMansanet
3 years ago
Corey Powell
7202953e69
Dropped pico-args in favour of a simpler hand roller parser
...
Not the greatest looking, but it gets the job done
3 years ago
Corey Powell
83031564db
Merge pull request #57 from pickfire/fix-panic
...
Fix panic opening rust file
3 years ago
Ivan Tham
eab6e53511
Fix panic opening rust file
...
Application::new will use stuff that requires tokio runtime.
3 years ago
Blaž Hrastnik
2719a35123
Merge pull request #55 from helix-editor/autoresize
...
autoresize terminal in compositor render
3 years ago
Jan Hrastnik
78980f575b
autoresize terminal in compositor render
3 years ago
Wojciech Kępka
e88383d990
Use config_dir for logging, create config_dir
3 years ago
Blaž Hrastnik
cbb3ebafdc
Support ctrl-f and ctrl-b to page up/down, fixes #41
3 years ago
Daichi Takamiya
4d12c7c3cf
Fix empty command cause panic
3 years ago
Danilo Spinella
ea824ed05d
Improve errors handling in main by adding context
...
Return a anyhow::Result in main function so that Context can be used
there too.
3 years ago
Blaž Hrastnik
ce25aa951e
Allow setting a filepath on :write
3 years ago
Blaž Hrastnik
a2147fc7d5
Change help prompt styling
3 years ago
Blaž Hrastnik
d8e16554bf
Don't crash if no filename specified on open
3 years ago
Blaž Hrastnik
b8d6e6ad28
Allow setting verbosity to info again
3 years ago
Blaž Hrastnik
138787f76e
Drop clap for pico-args
...
We barely have any flags so it's not worth the compilation time or
binary size to use clap.
3 years ago
Blaž Hrastnik
87d0617f3b
Completion: Format docs tabs & highlight in the doc's native language
3 years ago
Blaž Hrastnik
3810650a6b
Completion: Render non-markdown docs too
3 years ago
Blaž Hrastnik
2c48d65b15
Format document on save
3 years ago
Blaž Hrastnik
d54ae09d3b
ESC should exit both completion and insert mode
3 years ago
Blaž Hrastnik
d708efe275
Fix cursor positioning for prompts
3 years ago
Blaž Hrastnik
3336023614
ui: Menu rendering adjustments
3 years ago
Blaž Hrastnik
094203c74e
Update deps, introduce the new tree-sitter lifetimes
3 years ago
Blaž Hrastnik
b114cfa119
Display more data in completion popups.
3 years ago
Blaž Hrastnik
f1dc25a774
Support count for indent too
3 years ago
Blaž Hrastnik
4f335fabc8
Fix unindent to work with tabs, take a count
3 years ago
Blaž Hrastnik
9c24f1ec0e
Drop selection_lines completely, change move_line_start binding
3 years ago
Blaž Hrastnik
f99a683991
Fix crash if appending at end of line on the last line of the file
3 years ago
Blaž Hrastnik
51d1d43289
Double the UI picker file limit.
3 years ago
Blaž Hrastnik
5a245b83a0
Append :fmt as a separate history state
3 years ago
Blaž Hrastnik
8949347e2c
Completion: apply additionalTextEdits.
...
Used for adding imports to the file when completing.
3 years ago
Blaž Hrastnik
54de768915
Fix crash if typing | (regex or) into the prompt.
...
Zero-width matches at the start of the file make no sense to us.
3 years ago
Blaž Hrastnik
5e6b46e7c5
Use array::IntoIter.
3 years ago
Blaž Hrastnik
354b822d21
Fix crash on xa<Enter> if we were on the last line.
3 years ago
Blaž Hrastnik
fae2127a11
Drop cx.view_id, it was used before we had cx.current.
3 years ago
Blaž Hrastnik
0e5b421646
When calculating a new selection, we need to take newly inserted text into account.
3 years ago
Blaž Hrastnik
4a9d1163e0
Hacky way to specify indent scopes per language via toml configs.
...
Can't do it via a scm query nicely because it returns an iterator over
all the matches, whereas we want to traverse the tree ourselves.
Can't extract the pattern data from a parsed query either.
Oh well, toml files for now.
3 years ago
Blaž Hrastnik
e4ff75b4d4
Add :fmt (formats the whole file).
3 years ago
Blaž Hrastnik
5cbb4efa6d
Add the LICENSE file.
3 years ago
Blaž Hrastnik
ccdebb99b5
Drop some useless imports.
3 years ago
Blaž Hrastnik
ff4c1d05de
Replace the Clear widget with buffer.clear/clear_with.
3 years ago
Blaž Hrastnik
1255bcb8a3
Simplify the compositor callback.
3 years ago
Blaž Hrastnik
35606a3daa
Inline tui as helix-tui fork.
...
We only rely on some of the rendering primitives and implement our
Cursive-style compositor on top.
3 years ago
Blaž Hrastnik
0fe19ae472
clippy lint
3 years ago
Blaž Hrastnik
ed827e993f
Fix jumplist jumps, keep the selection on vsplit.
3 years ago
Blaž Hrastnik
caf4349925
Remove some of the panics, just log instead.
3 years ago
Blaž Hrastnik
d24844b73d
ui: Render command mode doc text if available.
3 years ago
Blaž Hrastnik
d4d5e88ade
Show a message if no definition was found.
3 years ago
Blaž Hrastnik
1be8b2005d
Extract a method for view alignment.
3 years ago
Blaž Hrastnik
adaf861881
vsplit can now split scratch buffers.
3 years ago
Blaž Hrastnik
570c253ffb
Disable default features on futures-util to drop proc macros.
3 years ago
Blaž Hrastnik
f0712479cb
Define text color (mostly) in theme.toml.
3 years ago
Blaž Hrastnik
f87dee926a
Simplify prompt autocompletion rendering code.
3 years ago
Blaž Hrastnik
ff84c8e394
Command mode: Per command completers.
3 years ago
Blaž Hrastnik
87e7a0de3f
Save space by having the command hashmap use const static refs.
3 years ago
Blaž Hrastnik
9604a0c294
Improve command mode handling.
3 years ago
Blaž Hrastnik
243456a583
Disallow quitting on last view if unsaved changes present.
3 years ago
Blaž Hrastnik
c0a8b81487
Only send the document close event if we're closing the underlying buffer
3 years ago
Blaž Hrastnik
c20813690f
View::new is infallible, so is editor.switch/new_file.
3 years ago
Blaž Hrastnik
f2c79e245b
Allow switching views back to scratch buffers.
3 years ago
Blaž Hrastnik
7c915dc065
Add the :new command, don't crash if saving without filename.
3 years ago
Blaž Hrastnik
f8844c6811
Implement pair expansion when pressing new line between bracket pairs.
...
From:
{|}
To:
{
|
}
3 years ago
Blaž Hrastnik
fd4fd12fa3
clippy lint
3 years ago
Blaž Hrastnik
ba97005495
Work around the rest of the blocking issues.
3 years ago
Blaž Hrastnik
d00414f81a
Start moving more LSP calls into callbacks/futures without capturing self
3 years ago
Blaž Hrastnik
1ad0581ddd
Eliminate a few more futures dependencies.
3 years ago
Blaž Hrastnik
355ad3cb82
Tokio migration.
3 years ago
Blaž Hrastnik
0e5308bce1
Need to allow this lint, the Hook signature requires Option<>.
3 years ago
Blaž Hrastnik
b6a22e955b
Closer to a full flake build via naersk.
...
Blocked on https://github.com/NixOS/nix/issues/4423 , build doesn't see
submodules.
3 years ago
Blaž Hrastnik
3038c2ef6d
ui: Draft for completion doc preview.
3 years ago
Blaž Hrastnik
ab4decfd6d
Make post hooks trigger even when a different handler processes input.
...
The default handler is now simply a fallback.
3 years ago
Blaž Hrastnik
d559199cec
Stop crashing if last view is closed.
3 years ago
Blaž Hrastnik
28c167d71d
doc: Be smarter about calculating modified status.
...
This way edit -> undo will properly show up as unmodified.
3 years ago
Blaž Hrastnik
594575ba3f
Center forward and backward jumps too.
3 years ago
Blaž Hrastnik
3b90317060
Add window/showMessage / logMessage stubs so gopls fully starts.
3 years ago
Blaž Hrastnik
c64240b6ef
Implement most of the view mode (z).
3 years ago
Blaž Hrastnik
3e5f24a9d5
lsp: support both utf-8 and utf-16 offsets.
...
Still need to implement the clangd encoding negotiation, but it's
a start. Should also manually override to utf8 for pyls.
3 years ago
Blaž Hrastnik
811f952a41
Center search results.
3 years ago
Blaž Hrastnik
180521fefe
Adjust scroll() to match kakoune: only scroll the view if cursor in bounds.
3 years ago
Blaž Hrastnik
2a1f10d1b5
Center the new position on screen after doing a goto jump.
3 years ago
Blaž Hrastnik
95dd55ba94
Fix overlap calculation.
3 years ago
Blaž Hrastnik
7493d19098
Re-introduce clearing with bg color, seems the TUI issue was fixed.
3 years ago
Blaž Hrastnik
392c4a9c02
Keep primary selection as space+space.
3 years ago
Blaž Hrastnik
73f4abbb37
N as extend with search (for now, N should be search_prev).
3 years ago
Blaž Hrastnik
978f5114d8
Horizontal scrolling! It only took a year to get around to it.
3 years ago
Blaž Hrastnik
d692390d10
Render current line:col.
3 years ago
Blaž Hrastnik
865429643b
<space>w for save, <space>c for close current split.
3 years ago
Blaž Hrastnik
52da68e49a
Render a separator between vertical splits.
3 years ago
Blaž Hrastnik
9ca2909c80
Loop around the end on regex searches.
3 years ago
Blaž Hrastnik
8b33ba2284
Correct the naming issue with vsplit and hsplit being swapped.
3 years ago
Blaž Hrastnik
58c5fec592
minor: This comment was resolved.
3 years ago
Blaž Hrastnik
bc4e54c0c4
Load config files from ~/.config/helix, fallback to defaults.
3 years ago
Blaž Hrastnik
f0d49d3ca4
hack: make queries load relative to source dir for now.
...
We want to provide a runtime dir later on.
3 years ago
Blaž Hrastnik
12961d657f
Implement P as paste_before.
3 years ago
Blaž Hrastnik
31e6bcbeb4
Clippy lint: replace with default -> take
3 years ago
Blaž Hrastnik
e8298a398c
Fix selection rendering, it would be off by 1 if reverse.
3 years ago
Blaž Hrastnik
82ff996662
Yank selection when deleting.
3 years ago
Blaž Hrastnik
463f58dfda
Fix clamping scroll in certain cases.
...
.clamp(min, max) requires that min < max. In some cases
first + scrolloff > last - scrolloff and we would panic.
3 years ago
Blaž Hrastnik
0e9ecccfc1
clippy: Drop or-patterns for now because they're not on stable rust yet
3 years ago
Blaž Hrastnik
91462af546
Allow starting hx without a file. A new blank file will be created.
3 years ago
Blaž Hrastnik
7c44443994
Handle c-n, c-p, etc. autocompletion events.
3 years ago
Blaž Hrastnik
95d0bba81a
ui: Improve completion state handling.
3 years ago
Blaž Hrastnik
59a0fc7b59
w, b, e: Match kakoune's behavior in selecting by default.
...
I initially preferred only moving the cursor, but selecting the whole
word is a lot nicer for things like wd (instead of vwd).
3 years ago
Blaž Hrastnik
ab1d11088f
Import some lsp utilities.
3 years ago
Blaž Hrastnik
77cab5a715
Merge open_above and open_below definitions.
3 years ago
Blaž Hrastnik
cc058ad78f
Simplify some code.
3 years ago
Blaž Hrastnik
0dbd5b61ef
Simplify code by providin cx.current() = (view, doc).
3 years ago
Blaž Hrastnik
ceea5eacd8
clippy lint
3 years ago
Blaž Hrastnik
7dfd7f51a0
Implement space-v as view same file in split.
3 years ago
Blaž Hrastnik
6c4093c946
Weave through view_id references so that views into one file have independent selects.
3 years ago
Blaž Hrastnik
dfc17becd5
Move pickers under my leader key mode (space).
3 years ago
Blaž Hrastnik
e166da2ab0
fix: A (append to line) was inserting before last char.
3 years ago
Blaž Hrastnik
1b5316ea74
Track document modified state.
3 years ago
Blaž Hrastnik
88bb7a1f38
Repeat insert command (.).
3 years ago
Blaž Hrastnik
ebfd67ac6a
Use StreamExt::select_next_some to avoid infinitely spinning on empty stream.
3 years ago
Blaž Hrastnik
e833d65b77
Teach file picker how to find the project root (.git).
3 years ago
Blaž Hrastnik
8098e9bdcd
Allow setting a status message.
3 years ago
Blaž Hrastnik
742b3a709f
Store intra-files jumps (goto) on the jumplist.
3 years ago
Blaž Hrastnik
0083a6c325
commands: Simplify _goto.
3 years ago
Blaž Hrastnik
ea407ccdba
Implement <n>g as goto line n.
3 years ago
Blaž Hrastnik
5c2d2fda21
Wire up opening in splits via pickers.
3 years ago
Blaž Hrastnik
aefafc25cd
Replace Mode::Goto with just using on_next_key.
3 years ago
Blaž Hrastnik
a24c3fff54
Filter the completion menu based on text entered.
3 years ago
Blaž Hrastnik
2a3910c1d9
wip: Async async. Delay response handling with a callback.
3 years ago
Blaž Hrastnik
ad3325db8e
minor: Remove a few unwraps.
3 years ago
Blaž Hrastnik
e3c4edae32
Add the machinery to load syntax config from TOML.
...
It's embedded into the binary at build time for now, but it's progress.
3 years ago
Blaž Hrastnik
9a36d2c2a8
wip: Hooks & trigger characters for completion/signature_help.
3 years ago
Blaž Hrastnik
350081a3af
Fix crash if pressing enter when nothing selected in completion.
3 years ago
Blaž Hrastnik
8657c57cf2
Trivial jumplist implementation.
3 years ago
Blaž Hrastnik
915fd9ebaf
Restore buffer_picker.
3 years ago
Blaž Hrastnik
8a0ab447ec
editor.open can now either replace the current view or open in a split.
3 years ago
Blaž Hrastnik
8328fe926d
Drop refcell use, make view simply ref doc.id.
3 years ago
Blaž Hrastnik
3f9a94fd43
ui: markdown: remove trailing blank line.
3 years ago
Blaž Hrastnik
d0530fb839
Fix a scrolling crash where it would jump past the end of the buffer.
3 years ago
Blaž Hrastnik
73c92a0bc1
Implement m / match_brackets (using tree sitter).
3 years ago
Blaž Hrastnik
df306fe031
Implement open_above (O).
3 years ago
Blaž Hrastnik
42d07b0621
Implement replace command (r<key>).
3 years ago
Blaž Hrastnik
bf95ee27aa
Store Document on the Editor type, make View reference it.
3 years ago
Blaž Hrastnik
5e6716c89c
Add tab_width and indent_unit config.
3 years ago
Blaž Hrastnik
698e4ddea4
clippy: Factor out a Completion type.
3 years ago
Blaž Hrastnik
cbcacb1063
Merge some imports.
3 years ago
Blaž Hrastnik
c4792efead
clippy lints
3 years ago
Blaž Hrastnik
71999cce43
Implement auto-pairs behavior for open and close.
3 years ago