Ivan Tham
a0a5bd555b
More responsive key input
...
Use biased select!, don't eagerly process lsp message since we want to
prioritize user input rather than lsp messages, but still limit rendering
for lsp messages.
3 years ago
Nathan Vegdahl
4952d6f801
Fix phantom lines in some CRLF files.
...
Fixes #415 . The issue was that cursor highlighting wasn't extending
to encompass the entire CRLF grapheme, and therefore ended up splitting
it. This presumably was messing up other grapheme rendering as
well, and this fixes that as well.
3 years ago
Blaž Hrastnik
cb4bab8903
Remove outdated comment
3 years ago
Blaž Hrastnik
a4e28c6927
Implement `X` as extend selection to line bounds
3 years ago
Ivan Tham
d02bbb7bae
Fix info panic on small terminal
3 years ago
Blaž Hrastnik
ebccc96cd4
Factor out goto t/m/b into a single function again
3 years ago
Blaž Hrastnik
6ce303977c
Revert back to 'gm'
...
top / middle / bottom mnemonic.
3 years ago
Ivan Tham
bbbbfa9bcf
Goto mode use infobox
...
In the meantime, change gm to gc.
Remove extra space in mode title.
3 years ago
Ivan Tham
5977b07e19
Reduce calculation and improve pattern in infobox
...
- switch to use static OnceCell to calculate Info once
- pass Vec<(&[KeyEvent], &str)> rather than Vec<(Vec<KeyEvent>, &str)>
- expr -> tt to allow using | as separator, make it more like match
3 years ago
Ivan Tham
64f83dfcbd
Support infobox doc gen on stable release
3 years ago
Ivan Tham
61e925cbed
Add infobox doc generation and improve ergonomics
3 years ago
Ivan Tham
6710855eac
Fix rendering issues for infobox
3 years ago
Ivan Tham
9effe71b7d
Apply suggestions from blaz for infobox
3 years ago
Ivan Tham
4c190ec9d9
Suggestions for infobox changes
...
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
3 years ago
Ivan Tham
8985c58fd3
Add infobox
3 years ago
Blaž Hrastnik
83e7dd8602
fix: Temporary fix for #402
3 years ago
Gokul Soumya
c68fe1f2a3
Add object selection (textobjects) ( #385 )
...
* Add textobjects for word
* Add textobjects for surround characters
* Apply clippy lints
* Remove ThisWordPrevBound in favor of PrevWordEnd
It's the same as PrevWordEnd except for taking the current char
into account, so use a "flag" to capture that usecase
* Add tests for PrevWordEnd movement
* Remove ThisWord* movements
They did not preserve anchor positions and were only used
for textobject boundary search anyway so replace them with
simple position finding functions
* Rewrite tests of word textobject
* Add tests for surround textobject
* Add textobject docs
* Refactor textobject word position functions
* Apply clippy lints on textobject
* Fix overflow error with textobjects
3 years ago
Nathan Vegdahl
28d2d68804
Make horizontal selection movement work properly.
3 years ago
Kirawi
c5b2973739
`:reload` ( #374 )
...
* reloading functionality
* fn with_newline_eof()
* fmt
* wip
* wip
* wip
* wip
* moved to core, added simd feature for encoding_rs
* wip
* rm
* .gitignore
* wip
* local wip
* wip
* wip
* no features
* wip
* nit
* remove simd
* doc
* clippy
* clippy
* address comments
* add indentation & line ending change
3 years ago
Nathan Vegdahl
22dca3b111
Allow last line in file to lack a line break character.
3 years ago
Nathan Vegdahl
2224a1527e
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
0b2d51cf5a
Fix unused `Result` warnings in helix-term.
3 years ago
Nathan Vegdahl
efa3389b6a
Fix unused variable, parameter, and `mut` warnings in helix-term.
3 years ago
Nathan Vegdahl
702a0491db
Remove #[allow(unused)] from helix-term, and fix unused imports.
...
Lots of other warning still left. Will address in subsequent commits.
3 years ago
Nathan Vegdahl
e725957704
Ensure a minimum selection width on commands that need it.
3 years ago
Nathan Vegdahl
7c7be6d583
Make `Selection`'s normalize and transform methods self-consuming only.
3 years ago
Nathan Vegdahl
0ae522f3df
Clean up `Selection` to not use so many allocations.
3 years ago
Nathan Vegdahl
d07074740b
Add `Range` methods for various kinds of validation.
3 years ago
Blaž Hrastnik
2a92dd8d4d
If completion arrives after we already stopped editing, ignore it
4 years ago
Joe Neeman
b39e452d77
Make set_unmodified an enum.
4 years ago
Joe Neeman
2902a10a3e
Make Document's format API a little nicer.
4 years ago
Joe Neeman
ffa2f2590b
Satisfy clippy.
4 years ago
Joe Neeman
d64d75e724
Add some async job infrastructure.
4 years ago
Joe Neeman
c9be480bf8
Make formatting happen asynchronously.
4 years ago
Blaž Hrastnik
e9159887a9
ui: Use a box drawing character vertical line for splits
4 years ago
PabloMansanet
de8745aea7
Incorporate long word commands into keymap
4 years ago
Blaž Hrastnik
6214d707f3
fix: Don't panic on Enter on an empty document.
...
Refs #386
4 years ago
Blaž Hrastnik
d94410a678
Sort the files in descending order
4 years ago
Blaž Hrastnik
82fc28a0ce
ui: Simplify conditional
4 years ago
Blaž Hrastnik
bcca152ad5
Merge tab & char rendering code
4 years ago
Blaž Hrastnik
01b1a62e2c
This char_index is unused
4 years ago
Blaž Hrastnik
4edfac21f6
Allocate the tab stop only once
4 years ago
Blaž Hrastnik
1b102d5532
Extract the merge "operator" into helix-core
4 years ago
Blaž Hrastnik
ae58d813b2
Appease clippy
4 years ago
Blaž Hrastnik
f9cdb2afe2
Turn diagnostics rendering into span injection too
4 years ago
Blaž Hrastnik
90d675fb15
Fix AnyComponent test
4 years ago
Blaž Hrastnik
057bd630d8
Simplify selection rendering by injecting highlight scopes
4 years ago
Blaž Hrastnik
cad14c6b46
Address nightly clippy warnings
4 years ago
Nathan Vegdahl
a6cadddef4
Fix silly mistake in previous phantom line bug fix.
...
Fixes #381 . I was trying to change an index value that... wasn't
even an index value.
4 years ago
Nathan Vegdahl
2dba228c76
Fix highlight code splitting graphemes.
...
This resulted in phantom blank lines in files with CRLF line
endings, but could potentially have manifested with other
graphemes as well.
4 years ago
Wojciech Kępka
eb6fb63e74
Sort files in file picker by access, modification and creation date ( #336 )
...
* Sort files in file picker by access date
* Fallback file time to modified then created then UNIX_EPOCH
* Use `sort_by_key`
* Refactor
4 years ago
Blaž Hrastnik
f2d8ce3415
Use a deadline when eagerly processing notifications
4 years ago
Blaž Hrastnik
503ca112ae
fix: jumping to location did not convert the URI correctly
...
thus breaking Windows
4 years ago
Keith Simmons
4418e17547
reverse the dependency between helix-tui and helix-view ( #366 )
...
* reverse the dependency between helix-tui and helix-view by moving a fiew types to view
* fix tests
* clippy and format fixes
Co-authored-by: Keith Simmons <keithsim@microsoft.com>
4 years ago
Ivan Tham
c2b937481f
Fix goto line end
...
Should not goto newline.
4 years ago
Gokul Soumya
18beda38ac
Add … when chars are truncated in picker
4 years ago
Ivan Tham
10548bf0e3
Fix previous broken refactor key into helix-view
...
Need to be used for autoinfo
Revert "Revert "Refactor key into helix-view""
This reverts commit 10f9f72232
.
4 years ago
Kirawi
15ae2e7ef1
Update helix-term/src/commands.rs
...
Co-authored-by: Ivan Tham <pickfire@riseup.net>
4 years ago
Kirawi
7ae21b98ce
Update helix-term/src/commands.rs
...
Co-authored-by: Ivan Tham <pickfire@riseup.net>
4 years ago
Shafkath Shuhan
629df6124d
Blocking :wq
4 years ago
Nathan Vegdahl
8935e7a879
Fix open-new-line command for CRLF, as well as other bugs.
...
Fixes #363 .
I set out to fix issue #363 , but after fixing it discovered some
other things were wrong with the command while testing. In
summary:
- #363 was because it was still assuming a line ending width
of 1 char in its indexing calculations, even when actually
inserting CRLF.
- Aside from #363 , it actually needed to set `line_end_index`
to zero for *all* calculations that use it when line == 0,
but it was only doing so for a single calculation.
4 years ago
Gokul Soumya
fb8e7dc25b
Fix picker item width overflow
...
Fixes #352
4 years ago
Benoît CORTIER
14f61fb6ac
Fix lsp config deserialization case
...
It should have been in kebab-case, but it was the default snake_case.
4 years ago
Blaž Hrastnik
0f55e67576
fix: ok, needs to be the end of the previous line
4 years ago
Blaž Hrastnik
7366fe81e0
open: Use the correct function
...
Still not correct but at least it doesn't append at EOF
4 years ago
Blaž Hrastnik
4ad7b61c69
fix: Better fix that also fixes crashes on `o`
4 years ago
Blaž Hrastnik
655c1aeb73
fix: panic on O at the start of the file ( fixes #354 )
4 years ago
Blaž Hrastnik
39dc09e6c4
ui: Paginate prompt completion
4 years ago
wojciechkepka
3606d8bd24
Patch the primary cursor with insert and select styles
4 years ago
wojciechkepka
c534fdefdc
Refactor, add `ui.cursor.primary`
4 years ago
wojciechkepka
d70be55f70
Add ability to theme primary selecition
4 years ago
wojciechkepka
ac1e98d088
Add ability to theme cursor
4 years ago
Shafkath Shuhan
fd98e743e8
Handle non-UTF8 files
4 years ago
Blaž Hrastnik
9706f1121d
Fix small screen panics
4 years ago
Nathan Vegdahl
848cc1b438
Fix extend_line() behavior.
...
It would always extend to the next line if the cursor was at the
end of the current line, even if the current line wasn't fully
selected yet.
4 years ago
Nathan Vegdahl
481c4ba044
Increment char_index by grapheme char count.
...
It was just assuming single-char graphemes before.
4 years ago
Nathan Vegdahl
38bf9c2576
Missed some items in the CRLF PR.
4 years ago
Blaž Hrastnik
7511110d82
Fix build on master
4 years ago
Joe Neeman
fd1ae35051
Make the prompt callback take a Context.
4 years ago
Lionel Flandrin
16883e7543
Implement show_current_directory command
4 years ago
Lionel Flandrin
b56174d738
Implement change_current_directory command
4 years ago
Blaž Hrastnik
20f33ead67
minor: Remove old TODOs
4 years ago
Gokul Soumya
e0fd08d6df
Rename surround to match_mode
4 years ago
Gokul Soumya
753ed4cbc5
Add documentation for surround
4 years ago
Gokul Soumya
b00e9fc227
Handle line endings correctly in surround
4 years ago
Gokul Soumya
b79b5e66f2
Move match_bracket to mm
4 years ago
Gokul Soumya
13648d28b9
Add surround keybinds
4 years ago
Blaž Hrastnik
2f321b9335
lsp: Eagerly process notifications/server calls to avoid re-rendering
4 years ago
Blaž Hrastnik
a70de6e980
Merge pull request #224 from helix-editor/line_ending_detection
...
Line ending detection
4 years ago
Nathan Vegdahl
a18d50b777
Add command to set the document's default line ending.
4 years ago
Nathan Vegdahl
7c4fa18764
Fix clippy warnings.
4 years ago
Nathan Vegdahl
d33355650f
Convert remaining commands to use the document's line ending setting.
4 years ago
Nathan Vegdahl
e436c30ed7
Make split_selection_on_newline command handle all line endings.
4 years ago
Nathan Vegdahl
23d6188535
Update `replace` command to use document line ending setting.
4 years ago
Nathan Vegdahl
07e28802f6
Add function to get the line ending of a str slice.
...
This is needed in some places.
4 years ago
Nathan Vegdahl
714002048c
Don't need getters/setters for line_ending property.
...
It's plain-old-data. If we want to do fancier things later, it's
easy to switch back.
4 years ago
Wojciech Kępka
ee80fa8ea9
Cleanup spinners and messages on progress end
4 years ago
wojciechkepka
aca9d73fe4
Hold `Config` in `Application`, expect at least one editor view
4 years ago
wojciechkepka
cc357d5096
Add progress spinners to status line
4 years ago
wojciechkepka
b2804b14b1
Add a `Spinner`
4 years ago
Nathan Vegdahl
e686c3e462
Merge branch 'master' of github.com:helix-editor/helix into line_ending_detection
...
Rebasing was making me manually fix conflicts on every commit, so
merging instead.
4 years ago
Nathan Vegdahl
4efd6713c5
Work on moving code over to LineEnding instead of assuming '\n'.
...
Also some general cleanup and some minor fixes along the way.
4 years ago
Ivan Tham
985625763a
Fix doc warnings
4 years ago
Blaž Hrastnik
eaf259f8aa
Fix build..
4 years ago
Blaž Hrastnik
f41688d960
Merge `x` and `X`
4 years ago
Benoît CORTIER
f50261c944
Add mappable commands for system clipboard
...
System clipboard integration exists now in two favors: typable and
mappable.
Default mappings are:
- SPC p: paste clipboard after
- SPC P: paste clipboard before
- SPC y: join and yank selection to clipboard
- SPC Y: yank main selection to clipboard
- SPC R: replace selections by clipboard contents
4 years ago
Benoît CORTIER
a2b8cfca34
Add system clipboard yank and paste commands
...
This commit adds six new commands to interact with system clipboard:
- clipboard-yank
- clipboard-yank-join
- clipboard-paste-after
- clipboard-paste-before
- clipboard-paste-replace
- show-clipboard-provider
System clipboard provider is detected by checking a few environment
variables and executables. Currently only built-in detection is
supported.
`clipboard-yank` will only yank the "main" selection, which is currently the first
one. This will need to be revisited later.
Closes https://github.com/helix-editor/helix/issues/76
4 years ago
wojciechkepka
fc39a6c40d
Add comment, statusline + commandline = 2
4 years ago
wojciechkepka
0882712b45
Use full screen size
4 years ago
wojciechkepka
980e602352
Make completion window move to top when cursor is below half
4 years ago
Nathan Vegdahl
5d22e3c4e5
Misc fixes and clean up of line ending detect code.
4 years ago
Blaž Hrastnik
34ebe82654
ui: prompt: Add more keymappings
4 years ago
Blaž Hrastnik
e9a3245aae
Re-export unicode crates from helix_core
4 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.
4 years ago
wojciechkepka
59c59deb46
Add missing `theme` to toml config
4 years ago
Jan Hrastnik
8634e04a31
added the line_end helper function
4 years ago
Jan Hrastnik
701eb0dd68
changed some hardcoded newlines, removed a else if in line_ending.rs
4 years ago
wojciechkepka
2d629a880c
Fix overflow
4 years ago
Blaž Hrastnik
28d9673a8e
Fix compilation
4 years ago
wojciechkepka
42e13bd542
Add `:theme <name>` command
4 years ago
wojciechkepka
b1a41c4cc8
Add `theme` to global configuration
4 years ago
wojciechkepka
a2db161d5a
Add theme completer
4 years ago
wojciechkepka
ce97a2f05f
Add ability to change theme on editor
4 years ago
Blaž Hrastnik
10f9f72232
Revert "Refactor key into helix-view"
...
Did not use defaults when custom keymap was used
This reverts commit ca806d4f85
.
4 years ago
wojciechkepka
11f20af25f
Make `home` and `end` work in insert mode
4 years ago
Jan Hrastnik
1e80fbb602
fix merge issue
4 years ago
Jan Hrastnik
cdd9347457
Merge remote-tracking branch 'origin/master' into line_ending_detection
4 years ago
Jan Hrastnik
97323dc2f9
ran cargo fmt
4 years ago
Jan Hrastnik
ecb884db98
added get_line_ending from pr comment
4 years ago
Ivan Tham
ca806d4f85
Refactor key into helix-view
...
Now also make use of Deserialize for Config.
4 years ago
wojciechkepka
1c25852021
Make arrow keys and page up/down work in insert mode
4 years ago
wojciechkepka
c5a2fd5da3
Add `close_language_servers` method on `Editor`
4 years ago
wojciechkepka
c2aad859b1
Handle language server shutdown with timeout
4 years ago
wojciechkepka
1c1474c3b8
Add `ui.statusline.inactive`, use `ui.statusline` for statusline text
4 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).
4 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
4 years ago
wojciechkepka
a3cb79ebaa
Use kebab-case for config
4 years ago
wojciechkepka
bbefc1db63
Add an option to disable display of progress in status bar
4 years ago
wojciechkepka
612511dc98
Handle workDoneProgress/create request
4 years ago
wojciechkepka
e1109a5a01
Update handling of progress notification
4 years ago
wojciechkepka
38cb934d8f
Add unique id to each lsp client/server pair
4 years ago
wojciechkepka
a6d39585d8
Add `work_done_token` as parameter to lsp methods
4 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`
4 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
4 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.
4 years ago
Jan Hrastnik
8bccd6df30
applied changes from pr review
4 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
4 years ago
Gokul Soumya
47d2e3aefa
Let o, O take counts for multiple cursors
4 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
4 years ago
Jan Hrastnik
9c3eadb2e4
fixed some problems from rebasing
4 years ago