Gokul Soumya
94abc52b3b
feat: Sticky view mode with Z ( #719 )
2021-09-10 23:14:23 +09:00
Blaž Hrastnik
3426285a63
fix: Don't automatically search_next on *
...
Refs #713
2021-09-08 16:34:04 +09:00
Blaž Hrastnik
72cf86e462
Regex prompts should have a history with a specifiable register
2021-09-08 16:34:04 +09:00
CossonLeo
011f9aa47f
Optimize completion doc position. ( #691 )
...
* optimize completion doc's render
* optimize completion doc's render
* optimize completion doc position
* cargo fmt
* fix panic
* use saturating_sub
* fixs
* fix clippy
* limit completion doc max width 120
2021-09-08 16:33:59 +09:00
Blaž Hrastnik
2ce87968cd
ui: Be smarter about centering previews
...
Try centering the whole block. If the block is too big for the viewport,
then make sure that the first line is within the preview.
2021-09-08 14:19:25 +09:00
Kangwook Lee (이강욱)
7a9db95182
Add command to extend to line start or end ( #717 )
2021-09-07 23:22:39 +09:00
Blaž Hrastnik
46f3c69f06
lsp: Don't send notifications until initialize completes
...
Then send open events for all documents with the LSP attached.
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
dc7799b980
lsp: Refactor code that could use document_by_path_mut
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
63e191ea3b
lsp: Simplify lookup under method call
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
10b690b5bd
Drop some &mut bounds where & would have sufficed
2021-09-06 15:25:46 +09:00
Gokul Soumya
6e21a748b8
Fix escape not exiting insert mode ( #712 )
...
Regression due to #635 where escape key in insert mode
would not exit normal mode. This happened due to hard
coding the escape key to cancel a sticky keymap node.
2021-09-05 21:20:11 +09:00
Gokul Soumya
183dcce992
Add a sticky mode for keymaps ( #635 )
2021-09-05 12:55:13 +09:00
Gokul Soumya
95cd2c645b
Refactor switch_case commands
2021-09-05 12:41:19 +09:00
Gokul Soumya
33ce8779fd
Refactor {move,extend}_word_* commands
2021-09-05 12:41:19 +09:00
Gokul Soumya
ea2b4c687d
Refactor {move,extend}_char_* commands
2021-09-05 12:41:19 +09:00
Kangwook Lee (이강욱)
07fe4a6a40
Add commands that extends to long words ( #706 )
2021-09-04 19:00:32 +05:30
Wojciech Kępka
7e1123680f
Expand ~
in change-current-directory
command ( #692 )
2021-09-02 11:03:42 +09:00
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
2021-09-02 00:55:16 +09:00
Blaž Hrastnik
ce7ad2beb5
Reimplement keep-pipe, it needs to manipulate selections, not text
2021-09-01 11:09:50 +09:00
Blaž Hrastnik
dc609cafb5
Extract the shell command into a separate function
2021-09-01 10:46:35 +09:00
Blaž Hrastnik
a3bd80a6fa
ui: prompt: Avoid allocating a prompt name if it's a static string
2021-08-31 18:29:24 +09:00
Blaž Hrastnik
9b96bb5ac8
Refactor a bit further
2021-08-31 18:24:24 +09:00
Blaž Hrastnik
4a76ea8f88
shell: Move changes outside so we can properly handle errors
2021-08-31 18:19:18 +09:00
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`
2021-08-31 18:13:16 +09:00
gbaranski
9c5752cbac
fix: use .cursor() instead of .head
2021-08-30 12:03:10 -07:00
gbaranski
b590504143
fix: use head instead of anchor for relative line
2021-08-30 12:03:10 -07:00
Omnikar
03ad9e0bfa
Fix code indentation ( #671 )
2021-08-30 09:15:49 +09:00
CossonLeo
d6a9c2c0f6
Add ui.menu text style ( #664 )
...
* add menu text style
* add ui.menu.text ui.info ui.info.text to book
* change ui.menu.text to ui.menu
* fix book's ui.menu
2021-08-28 13:54:24 +09:00
Blaž Hrastnik
5cee3b634d
ui: prompt: Fix typing with alt
2021-08-27 16:39:52 +09:00
Omnikar
bfce4d4f29
Make v
in select mode switch back to normal mode ( #660 )
...
* Make `v` in select mode switch back to normal mode
* Move select mode toggle to keymap instead of command
2021-08-27 10:03:49 +09:00
Grzegorz Baranski
cec5d437d8
fix: show current line number even if relative line is on ( #656 )
2021-08-26 23:18:33 +05:30
Stuart Hinson
6192f2fa25
Show hidden files in filename completer ( #648 )
...
also removes unnecessary clone
2021-08-27 00:30:47 +09:00
Yusuf Bera Ertan
dc57f8dc89
feat: merge default languages.toml with user provided languages.toml, add a generic TOML value merge function ( #654 )
...
* feat: merge default languages.toml with user provided languages.toml
* refactor: use catch-all to override all other values for merge toml
* tests: add a test case for merging languages configs
* refactor: change test module name
2021-08-27 00:29:14 +09:00
Ivan Tham
4bafda3995
Change vsp to vs ( #647 )
...
Follow up on #639 to match vim behavior
2021-08-27 00:20:37 +09:00
Kirawi
b99db7c687
Move path util functions from helix-term to helix-core ( #650 )
2021-08-25 10:04:05 +09:00
Blaž Hrastnik
bf5b9a9f35
ui: Tone down the preview highlight by adding a new scope
2021-08-24 13:25:39 +09:00
Blaž Hrastnik
e6cb183134
ui: Fix preview window padding: we want horizontal, not vertical
2021-08-24 13:25:39 +09:00
Blaž Hrastnik
a5c3c6c6a9
ui: Highlight line ranges in the preview
2021-08-24 13:25:39 +09:00
CossonLeo
490125f008
info component style config use ui.info ui.info.text ( #643 )
2021-08-24 09:58:19 +09:00
Blaž Hrastnik
1d45f50781
fix: Don't internally use relative paths in the buffer picker
...
Fixes #619
2021-08-24 09:56:09 +09:00
devins2518
e1c9f13263
Add :vsplit and :hsplit commands ( #639 )
...
* add vsplit and hsplit commands
* handle splits more elegantly
2021-08-24 09:37:44 +09:00
dependabot[bot]
864618242b
Bump crossterm from 0.20.0 to 0.21.0 ( #644 )
...
Bumps [crossterm](https://github.com/crossterm-rs/crossterm ) from 0.20.0 to 0.21.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/commits )
---
updated-dependencies:
- dependency-name: crossterm
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>
2021-08-24 09:17:57 +09:00
Blaž Hrastnik
607b92b2e3
fix: Place the cursor on the start of the selected symbol
...
Fixes #626
2021-08-22 15:00:07 +09:00
Kirawi
59e0ceef8c
better panic messages for when you're missing selection scopes ( #608 )
2021-08-22 11:15:33 +09:00
Gokul Soumya
f9375f449c
Refactor new Rect construction ( #575 )
...
* Refactor new Rect construction
Introduces methods that can be chained to construct new Rects
out of pre-existing ones
* Clamp x and y to edges in Rect chop methods
* Rename Rect clipping functions
2021-08-21 14:21:20 +09:00
Blaž Hrastnik
d4c17b633c
minor: Extract doc.text().slice(..) into a var
2021-08-20 13:42:47 +09:00
Blaž Hrastnik
38e932bd4c
minor: Nicer errors, std::io::Error provides a Display impl
2021-08-20 13:42:17 +09:00
Blaž Hrastnik
a76ec9a64e
Make scrolling extend in extend mode
2021-08-20 13:42:01 +09:00
Blaž Hrastnik
07fea61d03
Use the correct search register
2021-08-20 11:14:57 +09:00
Blaž Hrastnik
f60b549fb7
cargo fmt
2021-08-20 11:02:28 +09:00
Blaž Hrastnik
68626b8f78
ui: Refactor styling a bit, ensure infobox is stylable
2021-08-20 10:58:44 +09:00
Blaž Hrastnik
cbd39d67a4
minor: Refactor commands.rs a bit more
2021-08-20 10:43:22 +09:00
Kirawi
da8810809a
use ui.text.focus
for the picker ( fix #622 )
2021-08-20 10:43:08 +09:00
Blaž Hrastnik
0595b0626a
Fix clippy attr
2021-08-19 16:05:05 +09:00
Blaž Hrastnik
5f8b1c7320
Avoid looking up ui.text per highlight range
2021-08-19 15:59:08 +09:00
Blaž Hrastnik
557fd86e71
Extract view.inner_area(), simplify render_focused_view_elements
2021-08-19 15:59:03 +09:00
Blaž Hrastnik
9776553ad0
Refactor view.first_line/first_col into view.offset (Position)
2021-08-19 12:52:07 +09:00
Blaž Hrastnik
115754c5ee
Simplify write/write_all commands, we no longer need to excessively block
2021-08-19 11:37:42 +09:00
Blaž Hrastnik
12ea3888c5
fix: ui: Pin popups with no positioning to the initial cursor position
...
This avoids the floating popup following the cursor as we type.
2021-08-19 11:25:19 +09:00
Yerlan
18c0509593
Exit select mode after toggle_comment. Fixes #597 ( #598 )
...
Consistent with yanking, exit select mode after toggling comment. Fixes #597
2021-08-17 09:52:52 +09:00
Gokul Soumya
14c08e855f
Refactor infobox rendering and parsing ( #579 )
2021-08-17 09:25:48 +09:00
Grzegorz Baranski
78923496a6
feat: relative numbers ( #485 )
...
* feat(helix-view): configuring line-number
* feat(helix-term): relative line numbers
* feat(helix-term): passing editor::Config to render
* fix(helix-view): remove LineNumber::None
* feat(helix-term): rendering line-number according to configuration
* fix(term): put calculating current line above line iteration
* fix: add abs_diff function
* deps: cargo update
* fix: pass config argument
2021-08-16 11:11:53 +09:00
Blaž Hrastnik
1caedc18ca
Release v0.4.1
2021-08-14 13:32:29 +09:00
Blaž Hrastnik
4167201344
ui: picker: Position count according to input bar
2021-08-13 18:00:04 +09:00
Blaž Hrastnik
eb9ac0a743
ui: picker: Use ui.selection instead of ui.selection.primary
2021-08-13 17:59:47 +09:00
Blaž Hrastnik
f20dc1283d
ui: picker: Render matches/total counts
2021-08-13 17:56:37 +09:00
Blaž Hrastnik
fd1eaafff5
Add :tree-sitter-scopes, useful when developing indents.toml
2021-08-13 13:15:53 +09:00
Blaž Hrastnik
3de40de0a9
fix build...
2021-08-13 01:28:11 +09:00
Blaž Hrastnik
733ee06b7b
Release v0.4.0
2021-08-13 01:24:04 +09:00
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
2021-08-12 16:00:42 +09:00
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>
2021-08-12 11:53:48 +09:00
Blaž Hrastnik
d03982ee43
cargo fmt
2021-08-12 10:18:37 +09:00
Blaž Hrastnik
6d52424303
fix: Adjust scroll offset/padding calculation to prevent wobble
...
Fixes #324
2021-08-11 13:53:38 +09:00
Blaž Hrastnik
627b899315
ui: completion: Insert suggestions when tabbing over them
...
Fixes #498
2021-08-11 10:56:32 +09:00
Blaž Hrastnik
f917b5a441
ui: completion: Use sort_text to sort the completions
2021-08-11 10:56:32 +09:00
Nathan Vegdahl
dde2be9395
Fix surround_replace replacing the wrong character on the right. ( #571 )
...
Fixes #569 .
2021-08-11 09:17:59 +09:00
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>
2021-08-10 14:35:20 +09:00
Blaž Hrastnik
86209c93a3
Appease clippy
2021-08-10 10:58:46 +09:00
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
2021-08-10 10:57:07 +09:00
Blaž Hrastnik
a4564adadd
fix: Don't crash if language servers time out
2021-08-10 10:52:53 +09:00
Blaž Hrastnik
0a7add4ad4
Only recalculate resize during rendering, this stops flashing on resize
2021-08-10 10:52:52 +09:00
Kirawi
815ee9e334
fix small terminal size panic with info popup ( #563 )
...
* fix small terminal size panic with info popup
* remove unused enumerator
* fix subtraction overflow panic
2021-08-09 15:46:58 +09:00
Blaž Hrastnik
a2ccfffda1
config: Rename [terminal] to [editor] and pass it into Editor
2021-08-08 14:10:01 +09:00
Blaž Hrastnik
f0eb6ed96a
Resolve a couple TODOs
2021-08-08 14:08:54 +09:00
Blaž Hrastnik
02cba2a7f4
Implement alt-( and alt-) to rotate selection contents
2021-08-08 13:26:13 +09:00
Luctius
8714b71991
Do not shutdown lsp during claim_term
...
Fixes a bug where the language server is told to shutdown directly after application start.
2021-08-07 10:41:41 +09:00
Blaž Hrastnik
b20a5c4c0e
ui: menu: Allow wrapping around on ctrl-p/shift tab
2021-08-06 11:22:23 +09:00
Blaž Hrastnik
66a90130a5
Implement selection rotation with (
and )
2021-08-06 11:22:01 +09:00
Ivan Tham
10c77cdc03
Exit extend after yank
...
Yank should proceed with normal mode.
2021-08-05 17:25:23 +09:00
Blaž Hrastnik
0793841ac3
Refactor copy selection vertically
2021-08-05 17:04:26 +09:00
Cor
f160008add
Vertical Selection
2021-08-05 17:04:26 +09:00
Nathan Vegdahl
8c3a5b14de
Add goto_last_line
command, and bind it to ge
.
...
Resolves #529 .
2021-08-04 09:47:22 +09:00
Blaž Hrastnik
585793eb46
Use an empty stream on Windows to remove duplication
2021-08-03 09:32:21 +09:00
Ivan Tham
821565e4ef
Add ctrl-z to suspend
2021-08-03 09:32:21 +09:00
Blaž Hrastnik
adb5d842ba
Use nicer filepaths instead of URIs in goto picker
2021-08-03 09:30:51 +09:00
Blaž Hrastnik
62eb8c6b40
mouse: Remove verify_screen_coords, refactor primary selection modification
2021-07-30 16:52:14 +09:00
Blaž Hrastnik
6bb744aeac
Remove the jump
2021-07-30 16:52:10 +09:00
Dmitry Sharshakov
8361de45dc
Mouse selection support ( #509 )
...
* Initial mouse selection support
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Disable mouse event capture if editor crashes
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Translate screen coordinates to view position
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Select full lines by dragging on line numbers
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* editor: don't register dragging as a jump
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Count graphemes correctly
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Do not select lines when dragging on the line number bar
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Split out verify_screen_coords
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Do not iterate over the graphemes twice
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Switch view by clicking on it
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Add disable-mouse config option
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Support multiple selections with mouse
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Remove unnecessary check
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Refactor using match expression
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Rename local variable
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Rename mouse option
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Refactor code
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Fix dragging selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Fix crash when clicking past last line
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Count characters better
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Remove comparison not needed anymore
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Validate coordinates before resolving position
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Tidy up references to editor tree
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Better way to determine line end and avoid overflow
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Fix for last line
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Add unit tests for text_pos_at_screen_coords
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
2021-07-30 16:52:00 +09:00
Blaž Hrastnik
0fdb626c2c
Remove embed_runtime feature
...
It's no longer practical to maintain. Closes #451
2021-07-30 16:27:22 +09:00
Nathan Vegdahl
f88d4c1e20
Move indent-style code into helix_core::indent
.
2021-07-30 12:22:59 +09:00
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 .
2021-07-30 09:39:18 +08:00
Nathan Vegdahl
3fda350494
Fixes for new clippy lints in Rust 1.54.
2021-07-29 22:47:18 +02:00
Blaž Hrastnik
05d20e196f
Merge pull request #376 from cessen/great_line_ending_and_cursor_range_cleanup
...
The Great Line Ending & Cursor Range Cleanup
2021-07-29 18:43:20 +09:00
Nathan Vegdahl
e4d41d06e3
Fix typo in comment.
2021-07-28 19:20:23 -07:00
Gokul Soumya
8a2fa692f2
Refactor case where key event is solely a character
2021-07-29 08:39:58 +08:00
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.
2021-07-28 16:03:34 -07:00
Nathan Vegdahl
cd7302ffd3
Enforce cursor/selection invariants in one place.
...
Rather than per-command like before.
2021-07-28 15:57:00 -07:00
Nathan Vegdahl
a873e719d5
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
2021-07-28 14:11:08 -07:00
Gokul Soumya
b90450b9e8
Fix goto line number
...
Regression from #454 . Go to line 10 with `10gg` or `10G`.
2021-07-28 21:33:18 +08:00
Gokul Soumya
1493313750
Show pending keys in status line ( #515 )
...
* Show pending keys and counts in status line
* Refactor pending key display
2021-07-28 13:57:07 +09:00
Nathan Vegdahl
f62ec6e51e
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
2021-07-26 11:19:10 -07:00
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
2021-07-27 01:07:13 +09:00
Nathan Vegdahl
01247acf0c
Start searches at the right side of the block cursor.
2021-07-26 08:50:26 -07:00
Nathan Vegdahl
0883b4fae0
Collect some common patterns into methods on Range
.
2021-07-26 08:40:30 -07:00
Blaž Hrastnik
63e54e30a7
Implement in-memory prompt history
...
Implementation is similar to kakoune: we store the entries into
a register.
2021-07-26 11:19:33 +09:00
Gokul Soumya
e07e42dcfb
fix(term): undo-ing code actions
2021-07-25 19:49:05 +09:00
gbaranski
8da58fe44a
fix(term): use existing implementation of edits_to_transaction
2021-07-25 19:49:05 +09:00
Nathan Vegdahl
f96b8b769b
Switch to a cleaner range-head moving abstraction.
...
Also fix a bunch of bugs related to it.
2021-07-24 07:44:11 -07:00
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>
2021-07-24 10:26:43 +09:00
Nathan Vegdahl
20723495d3
Fixed find_till_char and find_char commands.
...
They worked correctly when extending, but not for normal cursor
movement.
2021-07-23 18:03:40 -07:00
Nathan Vegdahl
8f43dc4039
Fix surround replace command replacing the wrong position on the right.
2021-07-23 17:52:45 -07:00
Nathan Vegdahl
43594049dd
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
2021-07-23 17:23:16 -07:00
Nathan Vegdahl
427ae6ac6c
Put selection in separate variable in commands code.
2021-07-23 17:06:14 -07:00
Nathan Vegdahl
ad814b8c2e
Fix append mode, and make insertion always happen at head of range.
2021-07-23 14:27:12 -07:00
Blaž Hrastnik
1789dfabfe
fix: ui/menu: Don't allow scrolling past the end of completion
...
Fixes #472
2021-07-23 18:12:33 +09:00
Blaž Hrastnik
817a7e0bd6
fix: Only try expanding directory completion if it makes sense
...
Fixes #487
2021-07-23 18:10:30 +09:00
Blaž Hrastnik
58d08d36ae
Simplify ui/menu.rs
2021-07-23 18:10:17 +09:00
Nathan Vegdahl
5841954f58
Calculate the line that the range head is on correctly.
2021-07-22 11:17:03 -07:00
Nathan Vegdahl
673338bdb6
Use Range::line_range()
in some more places I missed.
2021-07-22 10:50:12 -07:00
Ivan Tham
eba0bbda2e
Resume last picker
...
Inspired by space ' in doom emacs.
2021-07-22 11:22:27 +09:00
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.
2021-07-21 09:56:21 -07:00
Nathan Vegdahl
063aa9452d
Fix yank not working with internally zero-width ranges.
2021-07-21 09:32:48 -07:00
Nathan Vegdahl
c848ed7abc
Fixes for misc bugs with view movement.
2021-07-20 18:15:34 -07:00
Nathan Vegdahl
1194fc842a
Use new Range::line_range()
method in more places, as appropriate.
2021-07-20 12:40:58 -07:00
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.
2021-07-20 11:58:56 -07:00
Nathan Vegdahl
e8a3980e46
Fix line-wise p
pasting before the current line instead of after.
2021-07-20 10:56:27 -07:00
Nathan Vegdahl
1910fa7723
Fix incorrect line hihglight when a selection is at the end of a line.
2021-07-20 10:26:00 -07:00
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.
2021-07-19 18:29:26 -07:00
Nathan Vegdahl
13b0784009
Fix extend line behavior.
2021-07-19 17:44:18 -07:00
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.
2021-07-19 09:25:10 -07:00
Nathan Vegdahl
079d4ed86d
Properly fix last_line
view calculation.
...
Turned out to be simpler than I thought. Didn't even need to change the
other use-sites.
2021-07-19 08:39:48 -07:00
Nathan Vegdahl
1a9ae72fcb
Fix last line number being drawn in the status bar.
2021-07-18 23:09:55 -07:00
Nathan Vegdahl
e462f32723
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
2021-07-18 22:02:12 -07:00
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.
2021-07-18 21:59:31 -07:00
Blaž Hrastnik
5292fe0f7d
Calculate completion popup sizing
...
Fixes #220
2021-07-19 11:29:51 +09:00
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>
2021-07-19 01:33:38 +09:00
Nathan Vegdahl
c2fd55e168
Update extend_line command to work with gap indexing.
2021-07-17 11:28:20 -07:00
Nathan Vegdahl
954314a7c9
Update change-case commands to work with gap indexing.
2021-07-17 11:03:39 -07:00
Nathan Vegdahl
a77274e8bb
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
2021-07-17 10:49:03 -07:00
Cor
9fcbbfa467
Changed startup behaviour to only open a single view when multiple files are specified on the commandline.
...
Changed the behaviour; the first argument on the commandline is the file on display
2021-07-18 00:29:05 +09:00