Blaž Hrastnik
9706f1121d
Fix small screen panics
3 years ago
Nathan Vegdahl
481c4ba044
Increment char_index by grapheme char count.
...
It was just assuming single-char graphemes before.
3 years ago
Joe Neeman
fd1ae35051
Make the prompt callback take a Context.
3 years ago
Lionel Flandrin
b56174d738
Implement change_current_directory command
3 years ago
Blaž Hrastnik
20f33ead67
minor: Remove old TODOs
3 years ago
Blaž Hrastnik
a70de6e980
Merge pull request #224 from helix-editor/line_ending_detection
...
Line ending detection
3 years ago
wojciechkepka
cc357d5096
Add progress spinners to status line
3 years ago
wojciechkepka
b2804b14b1
Add a `Spinner`
3 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.
3 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.
3 years ago
wojciechkepka
fc39a6c40d
Add comment, statusline + commandline = 2
3 years ago
wojciechkepka
0882712b45
Use full screen size
3 years ago
wojciechkepka
980e602352
Make completion window move to top when cursor is below half
3 years ago
Nathan Vegdahl
5d22e3c4e5
Misc fixes and clean up of line ending detect code.
3 years ago
Blaž Hrastnik
34ebe82654
ui: prompt: Add more keymappings
3 years ago
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
2d629a880c
Fix overflow
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
Jan Hrastnik
cdd9347457
Merge remote-tracking branch 'origin/master' into line_ending_detection
3 years ago
Ivan Tham
ca806d4f85
Refactor key into helix-view
...
Now also make use of Deserialize for Config.
4 years ago
wojciechkepka
1c1474c3b8
Add `ui.statusline.inactive`, use `ui.statusline` for statusline text
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
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
Jan Hrastnik
a4f5a0134e
trying out line ending helper functions in commands.rs
4 years ago
Jan Hrastnik
3756c21bae
rebase on branch line_ending_detection
4 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
4 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.
4 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.
4 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.
4 years ago
Ivan Tham
002f1ad397
Add filter ability to picker
...
Inspired by doom emacs. Able to filter picker options multiple times.
4 years ago
Nathan Vegdahl
4faf1d3bf4
Remove indent style status-line display for now.
4 years ago
Nathan Vegdahl
358ea6a37c
Implement command to change the indent-style setting of a document.
4 years ago
Nathan Vegdahl
8648e483f7
Render indent-style status in status line.
...
Also cleaned up the status line code a little.
4 years ago
Ivan Tham
1bda454149
Add ctrl-w for prompt
4 years ago
Gokul Soumya
f33aaba53f
Add ui.selection to theme.toml
...
Enables changing the color of the selection which was previously
hard coded.
4 years ago
Blaž Hrastnik
d545e61644
ui: Prompt should figure out a reasonable column width
...
Fixes #192
Refs #225
4 years ago
Wojciech Kępka
d8b5d1181f
Add `Copy` derive to `PromptEvent`
4 years ago
Wojciech Kępka
b500a2a138
commands: Add more write commands
4 years ago
Ivan Tham
1953588873
Change picker horizontal split to h
...
Follow window mode and vim behavior, x seemed weird.
4 years ago
wojciechkepka
4dbc23ff1c
Fix documentation popup panic
4 years ago
Kevin Sjöberg
b20e4a108c
Only enforce limit outside of .git
4 years ago
Kevin Sjöberg
1bb9977faf
Match keybindings of menu
4 years ago
Kevin Sjöberg
29962a5bd9
Fix Shift-Tab for moving upwards in menu
4 years ago
Blaž Hrastnik
83723957fe
Fix crash when too many completions available
...
Refs #81
4 years ago
Zheming Li
ae51065213
Support go to line 1
4 years ago
Wojciech Kępka
1bffb34350
Make matching bracket dimmed, prevent out of bounds rendering
4 years ago
Kevin Sjöberg
08f50310bd
Bump file picker limit
4 years ago
Wojciech Kępka
6fc0e0b5fb
completion: Fix unimplemented autocomplete
4 years ago
Blaž Hrastnik
3cee0bf200
Address clippy lint
4 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`.
4 years ago
Blaž Hrastnik
14830e75ff
Revert the line number rendering change, we were correct before
4 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
4 years ago
Wojciech Kępka
16b1cfa3be
Add diagnostics keybindings
4 years ago
Kevin Sjöberg
3494bb8ef0
Refactor index assignment
...
Co-authored-by: Ivan Tham <pickfire@riseup.net>
4 years ago
Kevin Sjöberg
a4ff8cdd8a
Allow moving backwards in completions
4 years ago
Kevin Sjöberg
145bc1970a
Trigger directory completion upon pressing Enter
4 years ago
Kevin Sjöberg
aa8a8baeeb
Calculate offset when moving picker cursor
4 years ago
Kevin Sjöberg
2ac496f919
Do not move past number of matches
4 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
4 years ago
Kirawi
c17dcb8633
Fixing Multiple Panics ( #121 )
...
* init
* wip
* wip
4 years ago
Blaž Hrastnik
f2e554d761
matchbrackets: Needs to render with the viewport offset
4 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.
4 years ago
Jan Hrastnik
c1c3750d38
key is now modified in place at start of handle_event
4 years ago
Jan Hrastnik
daad8ebe12
key_canonicalization now only matches chars
4 years ago
Jan Hrastnik
68abc67ec6
put the key canonicalization in a seperate function. only chars now get stripped of Shift modifier
4 years ago
Jan Hrastnik
712f25c2b9
removed shift matching
4 years ago
notoria
c3a98b6a3e
Highlight matching brackets
4 years ago
Blaž Hrastnik
661dbdca57
Fix cursor not showing on (0, 0)
4 years ago
Blaž Hrastnik
c0332bd935
Fix split sizes getting out of sync with the terminal size, refs #69
4 years ago
Blaž Hrastnik
a2147fc7d5
Change help prompt styling
4 years ago
Blaž Hrastnik
87d0617f3b
Completion: Format docs tabs & highlight in the doc's native language
4 years ago
Blaž Hrastnik
3810650a6b
Completion: Render non-markdown docs too
4 years ago
Blaž Hrastnik
d54ae09d3b
ESC should exit both completion and insert mode
4 years ago
Blaž Hrastnik
d708efe275
Fix cursor positioning for prompts
4 years ago
Blaž Hrastnik
3336023614
ui: Menu rendering adjustments
4 years ago
Blaž Hrastnik
094203c74e
Update deps, introduce the new tree-sitter lifetimes
4 years ago
Blaž Hrastnik
b114cfa119
Display more data in completion popups.
4 years ago
Blaž Hrastnik
51d1d43289
Double the UI picker file limit.
4 years ago
Blaž Hrastnik
8949347e2c
Completion: apply additionalTextEdits.
...
Used for adding imports to the file when completing.
4 years ago
Blaž Hrastnik
fae2127a11
Drop cx.view_id, it was used before we had cx.current.
4 years ago
Blaž Hrastnik
ccdebb99b5
Drop some useless imports.
4 years ago
Blaž Hrastnik
ff4c1d05de
Replace the Clear widget with buffer.clear/clear_with.
4 years ago
Blaž Hrastnik
1255bcb8a3
Simplify the compositor callback.
4 years ago
Blaž Hrastnik
0fe19ae472
clippy lint
4 years ago
Blaž Hrastnik
d24844b73d
ui: Render command mode doc text if available.
4 years ago
Blaž Hrastnik
f0712479cb
Define text color (mostly) in theme.toml.
4 years ago
Blaž Hrastnik
f87dee926a
Simplify prompt autocompletion rendering code.
4 years ago
Blaž Hrastnik
ff84c8e394
Command mode: Per command completers.
4 years ago
Blaž Hrastnik
7c915dc065
Add the :new command, don't crash if saving without filename.
4 years ago
Blaž Hrastnik
fd4fd12fa3
clippy lint
4 years ago
Blaž Hrastnik
355ad3cb82
Tokio migration.
4 years ago
Blaž Hrastnik
3038c2ef6d
ui: Draft for completion doc preview.
4 years ago
Blaž Hrastnik
d559199cec
Stop crashing if last view is closed.
4 years ago
Blaž Hrastnik
28c167d71d
doc: Be smarter about calculating modified status.
...
This way edit -> undo will properly show up as unmodified.
4 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.
4 years ago
Blaž Hrastnik
811f952a41
Center search results.
4 years ago
Blaž Hrastnik
7493d19098
Re-introduce clearing with bg color, seems the TUI issue was fixed.
4 years ago
Blaž Hrastnik
73f4abbb37
N as extend with search (for now, N should be search_prev).
4 years ago
Blaž Hrastnik
978f5114d8
Horizontal scrolling! It only took a year to get around to it.
4 years ago
Blaž Hrastnik
d692390d10
Render current line:col.
4 years ago
Blaž Hrastnik
52da68e49a
Render a separator between vertical splits.
4 years ago
Blaž Hrastnik
8b33ba2284
Correct the naming issue with vsplit and hsplit being swapped.
4 years ago
Blaž Hrastnik
f0d49d3ca4
hack: make queries load relative to source dir for now.
...
We want to provide a runtime dir later on.
4 years ago
Blaž Hrastnik
31e6bcbeb4
Clippy lint: replace with default -> take
4 years ago
Blaž Hrastnik
e8298a398c
Fix selection rendering, it would be off by 1 if reverse.
4 years ago
Blaž Hrastnik
0e9ecccfc1
clippy: Drop or-patterns for now because they're not on stable rust yet
4 years ago
Blaž Hrastnik
7c44443994
Handle c-n, c-p, etc. autocompletion events.
4 years ago
Blaž Hrastnik
95d0bba81a
ui: Improve completion state handling.
4 years ago
Blaž Hrastnik
cc058ad78f
Simplify some code.
4 years ago
Blaž Hrastnik
0dbd5b61ef
Simplify code by providin cx.current() = (view, doc).
4 years ago
Blaž Hrastnik
ceea5eacd8
clippy lint
4 years ago
Blaž Hrastnik
6c4093c946
Weave through view_id references so that views into one file have independent selects.
4 years ago
Blaž Hrastnik
1b5316ea74
Track document modified state.
4 years ago
Blaž Hrastnik
88bb7a1f38
Repeat insert command (.).
4 years ago
Blaž Hrastnik
e833d65b77
Teach file picker how to find the project root (.git).
4 years ago
Blaž Hrastnik
8098e9bdcd
Allow setting a status message.
4 years ago
Blaž Hrastnik
742b3a709f
Store intra-files jumps (goto) on the jumplist.
4 years ago
Blaž Hrastnik
5c2d2fda21
Wire up opening in splits via pickers.
4 years ago
Blaž Hrastnik
aefafc25cd
Replace Mode::Goto with just using on_next_key.
4 years ago
Blaž Hrastnik
a24c3fff54
Filter the completion menu based on text entered.
4 years ago
Blaž Hrastnik
2a3910c1d9
wip: Async async. Delay response handling with a callback.
4 years ago
Blaž Hrastnik
ad3325db8e
minor: Remove a few unwraps.
4 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.
4 years ago
Blaž Hrastnik
350081a3af
Fix crash if pressing enter when nothing selected in completion.
4 years ago
Blaž Hrastnik
915fd9ebaf
Restore buffer_picker.
4 years ago
Blaž Hrastnik
8a0ab447ec
editor.open can now either replace the current view or open in a split.
4 years ago
Blaž Hrastnik
8328fe926d
Drop refcell use, make view simply ref doc.id.
4 years ago
Blaž Hrastnik
3f9a94fd43
ui: markdown: remove trailing blank line.
4 years ago
Blaž Hrastnik
bf95ee27aa
Store Document on the Editor type, make View reference it.
4 years ago
Blaž Hrastnik
5e6716c89c
Add tab_width and indent_unit config.
4 years ago
Blaž Hrastnik
698e4ddea4
clippy: Factor out a Completion type.
4 years ago
Blaž Hrastnik
cbcacb1063
Merge some imports.
4 years ago
Blaž Hrastnik
a32806b490
Improve completion: src/<tab> will now correctly complete to src/main.rs
4 years ago
Blaž Hrastnik
f29f01858d
Implement iter() and len() directly on Selection.
4 years ago
Blaž Hrastnik
c331721565
Finish hiding doc.state / State as an implementation detail.
4 years ago
Blaž Hrastnik
8ba1e15d29
Expose doc.syntax() via accessor.
4 years ago
Blaž Hrastnik
59e6024186
Remove State from a few more signatures.
4 years ago
Blaž Hrastnik
51c15da3c3
Hold a reference to executor on the Editor type.
4 years ago
Blaž Hrastnik
d8599f3a14
ui: Syntax highlight code inside markdown popups.
4 years ago
Blaž Hrastnik
143cfe13e0
minor: TODO comment cleanup
4 years ago
Blaž Hrastnik
081e0ae8ae
syntax: highlight_iter always returns Ok()
4 years ago
Blaž Hrastnik
71f899cb5b
syntax: Highlight using ropes, avoiding dumping whole doc to string.
4 years ago
Blaž Hrastnik
80eca5c32f
ui: Use parsed markdown contents to determine sizing.
4 years ago
Blaž Hrastnik
f9b9bc04cc
ui: Account for padding on markdown renderer.
4 years ago
Blaž Hrastnik
872d770753
ui: Restrain diagnostic sidebar w/h based on available area.
4 years ago
Blaž Hrastnik
87e3cd3df2
ui: Render diagnostic errors in sideline.
4 years ago
Blaž Hrastnik
1cf887dea9
Cleanup: use doc.selection() instead of doc.state.selection().
4 years ago
Blaž Hrastnik
3445abf88e
syntax: Hide the TSParser internally, borrowing when needed.
4 years ago
Blaž Hrastnik
b7dd7310c4
syntax: Reuse parser instances. highlight_iter() no longer needs &mut.
4 years ago
Blaž Hrastnik
9dcfe25e4a
Use diagnostic.severity to distinguish between error colors.
4 years ago
Blaž Hrastnik
c7ccb432ef
pass clippy lint
4 years ago
Blaž Hrastnik
62c991230f
find-till (f) prototype, on_next_key mode implementation.
4 years ago
Blaž Hrastnik
8fe4590666
ui: popup: scroll documentation popups with c-u/c-d.
4 years ago
Blaž Hrastnik
ddcf5156c0
ui: menu: Adjust scroll via required_size area caching.
4 years ago
Blaž Hrastnik
5ea610c41d
ui: Move terminal into compositor, redo required_size hints.
4 years ago
Blaž Hrastnik
1d42b95915
ui: wip: Markdown doc renderer.
4 years ago
Blaž Hrastnik
dd6db43013
ui: Adjust selection colors.
4 years ago
Blaž Hrastnik
4c6611f96b
commands: Stop select_regex from breaking when no matches.
4 years ago
Blaž Hrastnik
a21d96e729
ui: Scrollable popup menu, with scrollbar indicator.
4 years ago
Blaž Hrastnik
513effd972
ui: unsafe theme_ref is no longer needed.
4 years ago
Blaž Hrastnik
bd0f6c1dfc
clippy lint
4 years ago
Blaž Hrastnik
0b85c16be9
ui: Share popup code with menu.
...
Menu is now just wrapped in a popup.
4 years ago
Blaž Hrastnik
11c4e0b053
ui: Calculate popup rendering and sizing.
4 years ago
Blaž Hrastnik
8f4ff4c646
editor: We still want to be able to calculate cursor pos.
4 years ago
Blaž Hrastnik
857bce0e30
ui: Rework command mode, implement file path completion.
4 years ago
Blaž Hrastnik
ec4dd0a176
Add a selection mode again.
4 years ago
Blaž Hrastnik
00808afe3c
ui: Make editor more resilient about being shrunk too small.
4 years ago
Blaž Hrastnik
6336c1da20
view: Reposition cursors on tree resize.
4 years ago
Blaž Hrastnik
7162632eb7
lsp: Hover documentation draft.
4 years ago
Blaž Hrastnik
7da6bd6a71
commands: Simplify some code, only calling cx.doc() once.
4 years ago
Blaž Hrastnik
3f6f82b0c4
Always store the log file under home dir.
4 years ago
Blaž Hrastnik
c9dd1c930e
treewide: &RopeSlice -> RopeSlice. It's Copy so no reason to pass by ref
4 years ago
Blaž Hrastnik
9cac44c7c0
minor changes
4 years ago
Blaž Hrastnik
8e1a59c140
ui: Redo selection rendering.
4 years ago
Blaž Hrastnik
83d48f10ea
search: Barebones implementation.
4 years ago
Blaž Hrastnik
de5170dcda
Parse input counts: 10w, etc.
4 years ago
Blaž Hrastnik
5e73f83efa
Implement vertical split calculations.
4 years ago
Blaž Hrastnik
d4b85ce18d
popup: wip work on completion popups
4 years ago
Blaž Hrastnik
a924ad2885
simplify.
4 years ago
Blaž Hrastnik
c70080dd68
Work around rendering errors for positions offscreen.
4 years ago
Blaž Hrastnik
a81b8f3e42
Fix statusline rendering, change colors on active view.
4 years ago
Blaž Hrastnik
a014787ee8
Correctly position the real terminal cursor.
4 years ago
Blaž Hrastnik
446a7e5743
Don't render selections/cursors on views not in focus.
4 years ago
Blaž Hrastnik
448c1abba0
View tree implementation: render multiple split views.
...
Cursors are still a bit buggy and we should render in focus statusbar
differently than in the other pane.
4 years ago
Blaž Hrastnik
2bea5db7bd
commands: Implement select_on_matches.
4 years ago
Blaž Hrastnik
05c7fb98df
Refactoring: move language_servers into Editor, proper load for doc.
4 years ago
Blaž Hrastnik
777a80917d
Address clippy lints.
4 years ago
Blaž Hrastnik
2ab069bb3f
lsp: Work on syncing the state with the language server.
4 years ago
Blaž Hrastnik
56f2193811
Retrieve completion options on ctrl-x.
4 years ago
Blaž Hrastnik
d61b4854b8
Make sure to clear the whole screen with the background color.
4 years ago
Blaž Hrastnik
4749b39b88
.
4 years ago
Blaž Hrastnik
47e282804d
buffer picker: Mark current view with (*)
4 years ago
Blaž Hrastnik
3d3295bb75
ui: buffer picker on ctrl-b
4 years ago
Blaž Hrastnik
25aa45e76c
picker: Factor out file picker, we want to reuse code for other pickers.
4 years ago
Blaž Hrastnik
0b63e838e0
Port over Doc::relative_path.
4 years ago