Blaž Hrastnik
0f4cd73000
Simplify goto_*_diagnostic commands
3 years ago
Blaž Hrastnik
f659e1178a
minor: view!(..).doc is slightly more efficient than current!(..).1.id()
3 years ago
Blaž Hrastnik
b81a554424
Retain range direction on search
...
Co-authored-by: CossonLeo <20379044+cossonleo@users.noreply.github.com>
3 years ago
Blaž Hrastnik
6431b26a6a
Implement Selection::replace to replace a single range
...
Fixes #985
Co-authored-by: Daniel S Poulin <crimsonmage+github@gmail.com>
3 years ago
Gygaxis Vainhardt
911b9b3276
Add reverse search functionality ( #958 )
...
* Add reverse search functionality
* Change keybindings for extend to be in select mode, incorporate Movement and Direction enums
* Fix accidental revert of #948 in rebase
* Add reverse search to docs, clean up mismatched whitespace
* Reverse search optimization
* More optimization via github feedback
3 years ago
Omnikar
51b4d35dce
Inform when reaching undo/redo bounds ( #981 )
...
* Inform when reaching undo/redo bounds
* `Already at oldest change` when undo fails
* `Already at newest change` when redo fails
* Add missing `the`
3 years ago
Blaž Hrastnik
7b65a6d687
Rewrite goto_buffer
3 years ago
ath3
78c68fae91
Implement "Goto next buffer / Goto previous buffer" commands
3 years ago
Blaž Hrastnik
e2560f427e
Replace documents SlotMap with BTreeMap
3 years ago
CossonLeo
39584cbccd
Add c-s to pick word under doc cursor to prompt line & search completion ( #831 )
...
* Add prompt shourtcut to book
Add completions to search
Add c-s to pick word under doc cursor to prompt line
* limit 20 last items of search completion, update book
* Update book/src/keymap.md
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* limit search completions 200
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
CossonLeo
1720b98760
only remove primary index when search next without extend ( #948 )
3 years ago
Ivan Tham
bc6a34d97e
Make match work with extend and multi cursors ( #920 )
3 years ago
Ivan Tham
21d535565b
Support extend for multiple goto ( #909 )
...
gg, ge, [n]gg
3 years ago
cossonleo
f1d339919f
add expand_selection to last_motion
3 years ago
Omnikar
e2ed691537
Implement `hx --tutor` and `:tutor` to load `tutor.txt` ( #898 )
...
* Implement `hx --tutor` and `:tutor` to load `tutor.txt`
* Document `hx --tutor` and `:tutor`
* Change `Document::set_path` to take an `Option`
* `Document::set_path` accepts an `Option<&Path>` instead of `&Path`.
* Remove `Editor::open_tutor` and make tutor-open functionality use
`Editor::open` and `Document::set_path`.
* Use `PathBuf::join`
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add comments explaining unsetting tutor path
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
Omnikar
a7d87c79ce
Fix `:quit!` description and tense of other commands ( #902 )
3 years ago
CossonLeo
2ed01f2d9c
find motion and textobj motion repeat ( #891 )
3 years ago
CossonLeo
971ba8929f
Filter completion items from language server by starts_with word under cursor ( #883 )
...
* filter items by starts_with pre nth char of cursor
* add config for filter completion items by starts_with
* filter items by starts_with pre nth char of cursor
* add config for filter completion items by starts_with
* remove completion items pre filter configuratio
3 years ago
Oskar Nehlin
0f886af4b9
Add commands for moving between splits with a direction ( #860 )
...
* Add commands for moving between splits with a direction
* Update keymaps
* Change picker mapping
* Add test and clean up some comments
3 years ago
Gokul Soumya
4ee92cad19
Add treesitter textobjects ( #728 )
...
* Add treesitter textobject queries
Only for Go, Python and Rust for now.
* Add tree-sitter textobjects
Only has functions and class objects as of now.
* Fix tests
* Add docs for tree-sitter textobjects
* Add guide for creating new textobject queries
* Add parameter textobject
Only parameter.inside is implemented now, parameter.around
will probably require custom predicates akin to nvim' `make-range`
since we want to select a trailing comma too (a comma will be
an anonymous node and matching against them doesn't work similar
to named nodes)
* Simplify TextObject cell init
3 years ago
radical3dd
b1ebd7a07e
Replace current selection with all yanked values. ( #882 )
3 years ago
CossonLeo
9ac0c95161
Improve completion trigger ( #838 )
...
* improve idle completion trigger
* add completion-trigger-len to book
* rename semantics_completion to language_server_completion and optimize idle completion trigger
3 years ago
Blaž Hrastnik
0a6b60085a
Merge branch 'master' into debug
3 years ago
Blaž Hrastnik
f8f63c5508
Merge pull request #821 from helix-editor/idle-timer
...
Idle timer / Autocompletion
3 years ago
Blaž Hrastnik
633b981db2
Make idle-timeout configurable
3 years ago
Dmitry Sharshakov
bc0084d071
fix command descriptions
3 years ago
Dmitry Sharshakov
48cb81eff1
Merge branch 'master' into debug
3 years ago
Ethan Frei
9f27be429d
relative paths showing active file in global search ( #803 )
3 years ago
Blaž Hrastnik
66f26e82ce
Filter the initial completion
3 years ago
Blaž Hrastnik
40abec80e1
Experiment with autocompletion on idle
3 years ago
Irevoire
c4ae17dfd4
fix clippy warnings ( #804 )
3 years ago
Irevoire
7e958e1834
Add a bunch of aliases ( #797 )
...
* add a bunch of aliases
* apply code review from archseer
3 years ago
Dylan Richardson
4a92a79da4
global search: show file names as relative paths ( #802 )
...
This commit fixes #786
3 years ago
Dmitry Sharshakov
0e51e5fbaf
editor: support setExceptionBreakpoints
3 years ago
Dmitry Sharshakov
bf53aff27d
Merge branch 'master' into debug
3 years ago
Matt W
df55eaae69
Add tilde expansion for file opening ( #782 )
...
* change to helix_core's tilde expansion,
from helix-core::path::expand_tilde
3 years ago
Blaž Hrastnik
2e0803c8d9
Implement 'remove_primary_selection' as Alt-,
...
This allows removing search matches from the selection
Fixes #713
3 years ago
Blaž Hrastnik
9ea9e779b2
experiment: Move keep_primary_selection to ,
3 years ago
lurpahi
a958d34bfb
Add option for automatic insertion of closing-parens/brackets/etc ( #779 )
...
* Add auto-pair editor option
* Document auto-pair editor option
* Make cargo fmt happy
* Actually make cargo fmt happy
* Rename auto-pair option to auto-pairs
* Inline a few constants
Co-authored-by: miaomai <cunso@tutanota.com>
3 years ago
Leoi Hung Kin
432bec10ed
allow smart case in global search ( #781 )
3 years ago
Leoi Hung Kin
9456d5c1a2
Initial implementation of global search ( #651 )
...
* initial implementation of global search
* use tokio::sync::mpsc::unbounded_channel instead of Arc, Mutex, Waker poll_fn
* use tokio_stream::wrappers::UnboundedReceiverStream to collect all search matches
* regex_prompt: unified callback; refactor
* global search doc
3 years ago
kraem
4a003782a5
enable smart case regex search by default ( #761 )
3 years ago
Leoi Hung Kin
1d04e5938d
search_next_impl: don't panic on invalid regex ( #740 )
3 years ago
Blaž Hrastnik
3ff5b001ac
fix: Don't allow closing the last split if there's unsaved changes
...
Fixes #674
3 years ago
Blaž Hrastnik
b02d872938
fix: Refactor apply_workspace_edit to remove assert
...
Fixes #698
3 years ago
Omnikar
3e12b00993
Add `no_op` command ( #743 )
...
* Add `no_op` command
* Document `no_op` in `remapping.md`
3 years ago
Kangwook Lee (이강욱)
05c2a72ccb
goto line start/end commands extend when in select mode ( #739 )
3 years ago
Kirawi
987d8e6dd6
Convert clipboard line ending to document line ending when pasting ( #716 )
...
* convert a paste's line-ending to the current doc's line-ending
* move paste regex into paste_impl
3 years ago
Blaž Hrastnik
3426285a63
fix: Don't automatically search_next on *
...
Refs #713
3 years ago
Blaž Hrastnik
72cf86e462
Regex prompts should have a history with a specifiable register
3 years ago
Kangwook Lee (이강욱)
7a9db95182
Add command to extend to line start or end ( #717 )
3 years ago
Dmitry Sharshakov
8a609047c3
Mouse command for editing logpoint
3 years ago
Dmitry Sharshakov
7bdead5b4b
Drop old commands
...
TODO: edit logpoints with a keybinding and mouse
3 years ago
Gokul Soumya
95cd2c645b
Refactor switch_case commands
3 years ago
Gokul Soumya
33ce8779fd
Refactor {move,extend}_word_* commands
3 years ago
Gokul Soumya
ea2b4c687d
Refactor {move,extend}_char_* commands
3 years ago
Dmitry Sharshakov
1befbd076c
Add command for editing breakpoint condition
3 years ago
Dmitry Sharshakov
e36fc57fff
refactor breakpoint edit
3 years ago
Kangwook Lee (이강욱)
07fe4a6a40
Add commands that extends to long words ( #706 )
3 years ago
Blaž Hrastnik
c63ad60c31
dap: Allow switching between stack frames
3 years ago
Blaž Hrastnik
b997d2cdeb
dap: Allow setting breakpoints before starting the adapter
3 years ago
Blaž Hrastnik
289303a30d
dap: small TODO
3 years ago
Blaž Hrastnik
4c410eef87
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Wojciech Kępka
7e1123680f
Expand `~` in `change-current-directory` command ( #692 )
3 years ago
oberblastmeister
825bceeab6
add_newline unimpaired mapping ( #653 )
...
* added some keymaps
* remove
* remove wrong mappings
* remove
* wrong import
* use enum
* correct line ending
* added to book
* column
3 years ago
Blaž Hrastnik
ce7ad2beb5
Reimplement keep-pipe, it needs to manipulate selections, not text
3 years ago
Blaž Hrastnik
dc609cafb5
Extract the shell command into a separate function
3 years ago
Dmitry Sharshakov
5b20f6020a
Merge remote-tracking branch 'origin/master' into debug
...
Contains type fix on helix-term/src/ui/editor.rs:752:13
3 years ago
Blaž Hrastnik
a3bd80a6fa
ui: prompt: Avoid allocating a prompt name if it's a static string
3 years ago
Blaž Hrastnik
9b96bb5ac8
Refactor a bit further
3 years ago
Blaž Hrastnik
4a76ea8f88
shell: Move changes outside so we can properly handle errors
3 years ago
Omnikar
e772808a5b
Shell commands ( #547 )
...
* Implement shell interaction commands
* Use slice instead of iterator for shell invocation
* Default to `sh` instead of `$SHELL` for shell commands
* Enforce trailing comma in `commands` macro
* Use `|` register for shell commands
* Move shell config to `editor` and use in command
* Update shell command prompts
* Remove clone of shell config
* Change shell function names to match prompts
* Log stderr contents upon external command error
* Remove `unwrap` calls on potential common errors
`shell` will no longer panic if:
* The user-configured shell cannot be found
* The shell command does not output UTF-8
* Remove redundant `pipe` parameter
* Rename `ShellBehavior::None` to `Ignore`
* Display error when shell command is used and `shell = []`
* Document shell commands in `keymap.md`
3 years ago
Blaž Hrastnik
2c7b75475f
dap: refactor frame handling
3 years ago
Blaž Hrastnik
986828e75c
dap: Remap keys, match current thread behavior from dap-mode, switch-thread
3 years ago
Blaž Hrastnik
d6ccc150c7
Extract dap commands into a separate file
3 years ago
Blaž Hrastnik
ee2ba744a2
Rename dap_in/_out to dap_step_in/_out
3 years ago
Dmitry Sharshakov
b42631942b
Defaults in completions, better schema
3 years ago
Dmitry Sharshakov
94901b8677
Customized completion for template parameters
3 years ago
Dmitry Sharshakov
e315394631
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Dmitry Sharshakov
8df6739759
New way of starting debug sessions
3 years ago
Dmitry Sharshakov
890b51b568
Paginated variables
3 years ago
Ivan Tham
4bafda3995
Change vsp to vs ( #647 )
...
Follow up on #639 to match vim behavior
3 years ago
Dmitry Sharshakov
3b87fce0ce
Print errors occurred in debug commands
3 years ago
Dmitry Sharshakov
c7759a5aa0
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Dmitry Sharshakov
4ee66b8766
Support remote debug adapter
3 years ago
Dmitry Sharshakov
326293cb57
only show variables' names and types
3 years ago
Kirawi
b99db7c687
Move path util functions from helix-term to helix-core ( #650 )
3 years ago
Dmitry Sharshakov
8cc6d68160
Autocomplete files for debug command
3 years ago
Dmitry Sharshakov
235a84d989
Remove shortcut for starting debug
3 years ago
Dmitry Sharshakov
299da5a35b
Support attach request
3 years ago
Dmitry Sharshakov
b001008a69
Support templates in debug configurations
3 years ago
Dmitry Sharshakov
31212e133d
Rename functions
3 years ago
Dmitry Sharshakov
1041a5bb07
Support launching configs by name
3 years ago
Dmitry Sharshakov
c463142e5e
Create new debugger config format
3 years ago
Dmitry Sharshakov
34c6094604
refactor
3 years ago
Dmitry Sharshakov
fdad7d67aa
Check capabilities for breakpoint config
3 years ago
Dmitry Sharshakov
5d3c69d565
Support logpoints
...
Tested with Node (Delve and LLDB do not support logpoints)
3 years ago
Blaž Hrastnik
a5c3c6c6a9
ui: Highlight line ranges in the preview
3 years ago
Blaž Hrastnik
1d45f50781
fix: Don't internally use relative paths in the buffer picker
...
Fixes #619
3 years ago
devins2518
e1c9f13263
Add :vsplit and :hsplit commands ( #639 )
...
* add vsplit and hsplit commands
* handle splits more elegantly
3 years ago
Dmitry Sharshakov
b6b99b2487
config: minor fixes
3 years ago
Dmitry Sharshakov
839d210573
Enable stdio transport via config
3 years ago
Dmitry Sharshakov
f55a012fb7
editor: add debug session config
3 years ago
Dmitry Sharshakov
c5b210df59
Add debug-adapter field to languages.toml
3 years ago
Dmitry Sharshakov
53ee57f84a
clippy
3 years ago
Dmitry Sharshakov
f247858055
Support conditional breakpoints
3 years ago
Dmitry Sharshakov
3197c2536e
Add eval command
3 years ago
Dmitry Sharshakov
838f69929d
Simplify variables display
3 years ago
Dmitry Sharshakov
060a422c7e
fix crash when pausing
3 years ago
Dmitry Sharshakov
132198323c
editor: go to pos where stack pointer is located
3 years ago
Dmitry Sharshakov
d93cd2a261
editor: support stepIn, stepOut, next and pause commands
3 years ago
Blaž Hrastnik
607b92b2e3
fix: Place the cursor on the start of the selected symbol
...
Fixes #626
3 years ago
Dmitry Sharshakov
89ad54a2e5
Add variable type to output
3 years ago
Dmitry Sharshakov
cc66475592
Add commands for variable introspection
3 years ago
Dmitry Sharshakov
95ba4ff5bd
Hide stack pointer when continued
3 years ago
Dmitry Sharshakov
f3e47bfee4
Disable continuing when running
3 years ago
Dmitry Sharshakov
66c035fa99
Continue command
3 years ago
Dmitry Sharshakov
6709b4242f
Drop and terminate debugger
3 years ago
Dmitry Sharshakov
26dee49dc9
Add command to detach debugger
3 years ago
Dmitry Sharshakov
a938f5a87a
refactor: handle DAP events in editor main loop
3 years ago
Dmitry Sharshakov
5f5b383979
Fix clippy warnings
3 years ago
Dmitry Sharshakov
6458edecfd
Add stack pointer display when stopped
3 years ago
Dmitry Sharshakov
738e8a4dd3
Unify init and launch commands
3 years ago
Dmitry Sharshakov
9e22842d51
move debug command to keybinding
3 years ago
Dmitry Sharshakov
e2c74d26e0
Add command to run debug target
3 years ago
Dmitry Sharshakov
c4970c617e
make CI green
3 years ago
Blaž Hrastnik
a54b09e3fe
dap: Split out launch from init
3 years ago
Blaž Hrastnik
94a1951d40
Work towards a breakpoint UI
3 years ago
Blaž Hrastnik
86102a651f
wip
3 years ago
Blaž Hrastnik
d39baa3b4e
Start integrating into the editor's event loop
3 years ago
Blaž Hrastnik
d4c17b633c
minor: Extract doc.text().slice(..) into a var
3 years ago
Blaž Hrastnik
38e932bd4c
minor: Nicer errors, std::io::Error provides a Display impl
3 years ago
Blaž Hrastnik
a76ec9a64e
Make scrolling extend in extend mode
3 years ago
Blaž Hrastnik
07fea61d03
Use the correct search register
3 years ago
Blaž Hrastnik
f60b549fb7
cargo fmt
3 years ago
Blaž Hrastnik
cbd39d67a4
minor: Refactor commands.rs a bit more
3 years ago
Blaž Hrastnik
557fd86e71
Extract view.inner_area(), simplify render_focused_view_elements
3 years ago
Blaž Hrastnik
9776553ad0
Refactor view.first_line/first_col into view.offset (Position)
3 years ago
Blaž Hrastnik
115754c5ee
Simplify write/write_all commands, we no longer need to excessively block
3 years ago
Yerlan
18c0509593
Exit select mode after toggle_comment. Fixes #597 ( #598 )
...
Consistent with yanking, exit select mode after toggling comment. Fixes #597
3 years ago
Blaž Hrastnik
fd1eaafff5
Add :tree-sitter-scopes, useful when developing indents.toml
3 years ago
Gokul Soumya
d84f8b5fde
Show file preview in split pane in fuzzy finder ( #534 )
...
* Add preview pane for fuzzy finder
* Fix picker preview lag by caching
* Add picker preview for document symbols
* Cache picker preview per document instead of view
* Use line instead of range for preview doc
* Add picker preview for buffer picker
* Fix render bug and refactor picker
* Refactor picker preview rendering
* Split picker and preview and compose
The current selected item is cloned on every event, which is
undesirable
* Refactor out clones in previewed picker
* Retrieve doc from editor if possible in filepicker
* Disable syntax highlight for picker preview
Files already loaded in memory have syntax highlighting enabled
* Ignore directory symlinks in file picker
* Cleanup unnecessary pubs and derives
* Remove unnecessary highlight from file picker
* Reorganize buffer rendering
* Use normal picker for code actions
* Remove unnecessary generics and trait impls
* Remove prepare_for_render and make render mutable
* Skip picker preview if screen small, less padding
3 years ago
Dmitry Sharshakov
7d51805e94
Support primary clipboard ( #548 )
...
* clipboard-none: add in-memory fallback buffer
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* view: add Wayland primary clipboard
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Format
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: copy to primary selection after mouse move stops
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: don't update primary selection if it is a single character
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: discard result of setting primary selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: add commands for interaction with primary clipboard
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* editor: implement primary selection copy/paste using commands
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: support xsel for primary selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: support xclip for primary selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: multiple cursor support for middle click paste
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* rename primary selection to primary clipboard in scope of PR
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: make middle click paste optional
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Format
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Update helix-term/src/ui/editor.rs
* fix formatting
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* config: correct defaults if terminal prop is not set
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* refactor: merge clipboard and primary selection implementations
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Tidy up code
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* view: remove names for different clipboard/selection providers
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Update helix-view/src/clipboard.rs
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
* helix-view: tidy macros
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: refactor paste-replace commands
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: use new config for middle-click-paste
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: remove memory fallback for command and windows providers
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard-win: fix build
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: return empty string when primary clipboard is missing
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: fix errors in Windows build
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
3 years ago
Blaž Hrastnik
d03982ee43
cargo fmt
3 years ago
Blaž Hrastnik
6d52424303
fix: Adjust scroll offset/padding calculation to prevent wobble
...
Fixes #324
3 years ago
Nathan Vegdahl
dde2be9395
Fix surround_replace replacing the wrong character on the right. ( #571 )
...
Fixes #569 .
3 years ago
Dmitry Sharshakov
27b551d345
helix-term: handle scrolling when mouse is enabled ( #554 )
...
* helix-term: handle scrolling when mouse is enabled
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: configure scrolling speed
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: use new config for scrolling
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* config: defaults for edtior config
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* config: add scroll-lines property
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: scroll hovered view
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: support inverted scrolling
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: remove duplicating code
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: do not focus view while scrolled
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: refactor mouse events and scrolling
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* simplify
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
3 years ago
Omnikar
21e5662125
Make `exit_select_mode` check current mode ( #568 )
...
Change `exit_select_mode` to check that the current mode is select mode
before switching to normal mode
3 years ago
Blaž Hrastnik
a2ccfffda1
config: Rename [terminal] to [editor] and pass it into Editor
3 years ago
Blaž Hrastnik
f0eb6ed96a
Resolve a couple TODOs
3 years ago
Blaž Hrastnik
02cba2a7f4
Implement alt-( and alt-) to rotate selection contents
3 years ago
Blaž Hrastnik
66a90130a5
Implement selection rotation with `(` and `)`
3 years ago
Ivan Tham
10c77cdc03
Exit extend after yank
...
Yank should proceed with normal mode.
3 years ago
Blaž Hrastnik
0793841ac3
Refactor copy selection vertically
3 years ago
Cor
f160008add
Vertical Selection
3 years ago
Nathan Vegdahl
8c3a5b14de
Add `goto_last_line` command, and bind it to `ge`.
...
Resolves #529 .
3 years ago
Ivan Tham
821565e4ef
Add ctrl-z to suspend
3 years ago
Blaž Hrastnik
adb5d842ba
Use nicer filepaths instead of URIs in goto picker
3 years ago
Nathan Vegdahl
f88d4c1e20
Move indent-style code into `helix_core::indent`.
3 years ago
Nathan Vegdahl
e6e0d31be0
Fix incorrect behavior of `find_char` command and friends.
...
The non-extending variants of the commands weren't selecting from the range head.
Fixes #527 .
3 years ago
Nathan Vegdahl
3fda350494
Fixes for new clippy lints in Rust 1.54.
3 years ago
Blaž Hrastnik
05d20e196f
Merge pull request #376 from cessen/great_line_ending_and_cursor_range_cleanup
...
The Great Line Ending & Cursor Range Cleanup
3 years ago
Nathan Vegdahl
e4d41d06e3
Fix typo in comment.
3 years ago
Gokul Soumya
8a2fa692f2
Refactor case where key event is solely a character
3 years ago
Nathan Vegdahl
285aba2de5
Fix bug with `/` searching after non-ascii characters.
...
Forgot to convert from char indices to byte indices before passing
to the regex engine.
3 years ago
Nathan Vegdahl
cd7302ffd3
Enforce cursor/selection invariants in one place.
...
Rather than per-command like before.
3 years ago
Nathan Vegdahl
a873e719d5
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Gokul Soumya
b90450b9e8
Fix goto line number
...
Regression from #454 . Go to line 10 with `10gg` or `10G`.
3 years ago
Nathan Vegdahl
f62ec6e51e
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Gokul Soumya
88d6f65239
Allow multi key remappings in config file ( #454 )
...
* Use tree like structure to store keymaps
* Allow multi key keymaps in config file
* Allow multi key keymaps in insert mode
* Make keymap state self contained
* Add keymap! macro for ergonomic declaration
* Add descriptions for editor commands
* Allow keymap! to take multiple keys
* Restore infobox display
* Fix keymap merging and add infobox titles
* Fix and add tests for keymaps
* Clean up comments and apply suggestions
* Allow trailing commas in keymap!
* Remove mode suffixes from keymaps
* Preserve order of keys when showing infobox
* Make command descriptions smaller
* Strip infobox title prefix from items
* Strip infobox title prefix from items
3 years ago
Nathan Vegdahl
01247acf0c
Start searches at the right side of the block cursor.
3 years ago
Nathan Vegdahl
0883b4fae0
Collect some common patterns into methods on `Range`.
3 years ago
Blaž Hrastnik
63e54e30a7
Implement in-memory prompt history
...
Implementation is similar to kakoune: we store the entries into
a register.
3 years ago
Gokul Soumya
e07e42dcfb
fix(term): undo-ing code actions
3 years ago
gbaranski
8da58fe44a
fix(term): use existing implementation of edits_to_transaction
3 years ago
Nathan Vegdahl
f96b8b769b
Switch to a cleaner range-head moving abstraction.
...
Also fix a bunch of bugs related to it.
3 years ago
Grzegorz Baranski
48e344a2a8
feat: code actions - document edits ( #478 )
...
* wip: Code actions
* fix(term): use current macro instead Context::context
* feat(lsp): set code_action capabilities
* feat(term): set SPC-a to code_action
* feat(term): wip on applying code actions
* deps: `cargo update`
* feat(term): applying code actions edits
* fix(term): cleanup of apply_edit
* fix(term): applying edits as a whole thing instead one by one
* refactor(term): move apply_edits below
* fix(term): improve unimplemented messages for further investigation
* fix(term): change code action command comment
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* fix(term): add matching `}`
* fix(term): cleanup, todo!() on workspace edit
* fix(term): remove unrelated workspace_symbol_picker
* fix(term): apply cargo-clippy suggestions
* fix(term): replace todo!'s with editor.set_error
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
Nathan Vegdahl
20723495d3
Fixed find_till_char and find_char commands.
...
They worked correctly when extending, but not for normal cursor
movement.
3 years ago
Nathan Vegdahl
8f43dc4039
Fix surround replace command replacing the wrong position on the right.
3 years ago
Nathan Vegdahl
43594049dd
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
427ae6ac6c
Put selection in separate variable in commands code.
3 years ago
Nathan Vegdahl
ad814b8c2e
Fix append mode, and make insertion always happen at head of range.
3 years ago
Nathan Vegdahl
5841954f58
Calculate the line that the range head is on correctly.
3 years ago
Nathan Vegdahl
673338bdb6
Use `Range::line_range()` in some more places I missed.
3 years ago
Ivan Tham
eba0bbda2e
Resume last picker
...
Inspired by space ' in doom emacs.
3 years ago
Nathan Vegdahl
7d07704e6f
Fix append mode not editing correctly.
...
This is currently a bit of a hack, and still doesn't behave quite how we
probably want. Left a TODO.
3 years ago
Nathan Vegdahl
063aa9452d
Fix yank not working with internally zero-width ranges.
3 years ago
Nathan Vegdahl
c848ed7abc
Fixes for misc bugs with view movement.
3 years ago
Nathan Vegdahl
1194fc842a
Use new `Range::line_range()` method in more places, as appropriate.
3 years ago
Nathan Vegdahl
1c6b5581f0
Fix various bugs related to goto-end-of-line command.
...
This also fixes a bug with `Selection::normalize()`, that could
result in an out-of-bounds primary index.
3 years ago
Nathan Vegdahl
e8a3980e46
Fix line-wise `p` pasting before the current line instead of after.
3 years ago
Nathan Vegdahl
1792dc6f93
Make search work a little nicer when there are already selections.
...
Specifically, if you have text like "aaaaaaaaa" and you search
for "a", the new behavior will actually progress through all of the
"a"s, whereas the previous behavior would be stuck on a single one.
3 years ago
Nathan Vegdahl
13b0784009
Fix extend line behavior.
3 years ago
Nathan Vegdahl
b0311f4fc2
Fixed primary cursor position calculation to use 1-width semantics.
...
This had a bunch of knock-on effects that were buggy, such as bracket
match highlighting.
3 years ago
Nathan Vegdahl
e462f32723
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
6c038bb015
Update word selection/navigation to work with gap indexing.
...
Also tweaked some of the existing behavior that seemed inconsistent
and/or buggy. It's mostly identical, just a few corner cases are
different.
3 years ago
Cor Peters
cd65a48635
Made toggle_comments language dependent ( #463 )
...
* Made toggle_comments language dependent
* Fixed Test Cases
* Added clippy suggestion
* Small Fixes
* Clippy Suggestion
Co-authored-by: Cor <prive@corpeters.nl>
3 years ago
Nathan Vegdahl
c2fd55e168
Update extend_line command to work with gap indexing.
3 years ago
Nathan Vegdahl
954314a7c9
Update change-case commands to work with gap indexing.
3 years ago
Nathan Vegdahl
a77274e8bb
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Cor Peters
722cfedb38
Added change_case command ( #441 )
...
* Added change_case command
* Added switch_to_uppercase and switch_to_lowercase
Renamed change_case to switch_case.
* Updated the Keymap section of the Book
* Use flat_map instead of map + flatten
* Fix switch_to_uppercase using to_lowercase
* Switched 'Alt-`' to uppercase and '`' to lowercase
Co-authored-by: Cor <prive@corpeters.nl>
3 years ago
Blaž Hrastnik
4a5cb0e04b
Restore C-w shortcut
3 years ago
Blaž Hrastnik
d530d6e39d
Further simplify error handling in :commands
3 years ago
Lionel Flandrin
9c02a1b070
Make command implementation return a Result<()>
...
The error message is displayed with cx.editor.set_error.
3 years ago
Ivan Tham
3e4cd8f8e6
Add infobox for view
3 years ago
Nathan Vegdahl
b4c59b444c
Update surround commands to work with gap indexing.
3 years ago
Ivan Tham
1c71fced0e
Add more modes to infobox
3 years ago
Nathan Vegdahl
85d5b399de
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Blaž Hrastnik
a4e28c6927
Implement `X` as extend selection to line bounds
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
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
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
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
Blaž Hrastnik
2a92dd8d4d
If completion arrives after we already stopped editing, ignore it
3 years ago
Joe Neeman
b39e452d77
Make set_unmodified an enum.
3 years ago
Joe Neeman
2902a10a3e
Make Document's format API a little nicer.
3 years ago
Joe Neeman
ffa2f2590b
Satisfy clippy.
3 years ago
Joe Neeman
d64d75e724
Add some async job infrastructure.
3 years ago
Joe Neeman
c9be480bf8
Make formatting happen asynchronously.
3 years ago
PabloMansanet
de8745aea7
Incorporate long word commands into keymap
3 years ago
Blaž Hrastnik
6214d707f3
fix: Don't panic on Enter on an empty document.
...
Refs #386
3 years ago
Blaž Hrastnik
503ca112ae
fix: jumping to location did not convert the URI correctly
...
thus breaking Windows
3 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>
3 years ago
Ivan Tham
c2b937481f
Fix goto line end
...
Should not goto newline.
3 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
.
3 years ago
Kirawi
15ae2e7ef1
Update helix-term/src/commands.rs
...
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
Kirawi
7ae21b98ce
Update helix-term/src/commands.rs
...
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
Shafkath Shuhan
629df6124d
Blocking :wq
3 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.
3 years ago
Blaž Hrastnik
0f55e67576
fix: ok, needs to be the end of the previous line
3 years ago
Blaž Hrastnik
7366fe81e0
open: Use the correct function
...
Still not correct but at least it doesn't append at EOF
3 years ago
Blaž Hrastnik
4ad7b61c69
fix: Better fix that also fixes crashes on `o`
3 years ago
Blaž Hrastnik
655c1aeb73
fix: panic on O at the start of the file ( fixes #354 )
3 years ago
Shafkath Shuhan
fd98e743e8
Handle non-UTF8 files
3 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.
3 years ago
Nathan Vegdahl
38bf9c2576
Missed some items in the CRLF PR.
3 years ago
Blaž Hrastnik
7511110d82
Fix build on master
3 years ago
Joe Neeman
fd1ae35051
Make the prompt callback take a Context.
3 years ago
Lionel Flandrin
16883e7543
Implement show_current_directory command
3 years ago
Lionel Flandrin
b56174d738
Implement change_current_directory command
3 years ago
Blaž Hrastnik
20f33ead67
minor: Remove old TODOs
3 years ago
Gokul Soumya
e0fd08d6df
Rename surround to match_mode
3 years ago
Gokul Soumya
753ed4cbc5
Add documentation for surround
3 years ago
Gokul Soumya
b00e9fc227
Handle line endings correctly in surround
3 years ago
Gokul Soumya
b79b5e66f2
Move match_bracket to mm
3 years ago
Gokul Soumya
13648d28b9
Add surround keybinds
3 years ago
Blaž Hrastnik
a70de6e980
Merge pull request #224 from helix-editor/line_ending_detection
...
Line ending detection
3 years ago
Nathan Vegdahl
a18d50b777
Add command to set the document's default line ending.
3 years ago
Nathan Vegdahl
7c4fa18764
Fix clippy warnings.
3 years ago
Nathan Vegdahl
d33355650f
Convert remaining commands to use the document's line ending setting.
3 years ago
Nathan Vegdahl
e436c30ed7
Make split_selection_on_newline command handle all line endings.
3 years ago
Nathan Vegdahl
23d6188535
Update `replace` command to use document line ending setting.
3 years ago
Nathan Vegdahl
07e28802f6
Add function to get the line ending of a str slice.
...
This is needed in some places.
3 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.
3 years ago
wojciechkepka
cc357d5096
Add progress spinners to status line
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
Blaž Hrastnik
eaf259f8aa
Fix build..
3 years ago
Blaž Hrastnik
f41688d960
Merge `x` and `X`
3 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
3 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
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
42e13bd542
Add `:theme <name>` command
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
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
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
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
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
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
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