Commit Graph

1346 Commits (194b09fbc1edb2d0ccdadc53ec0893f61dbded8e)

Author SHA1 Message Date
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 c4085b4e88
Use saturating_sub for lenght 3 years ago
Dmitry Sharshakov 5d3c69d565
Support logpoints
Tested with Node (Delve and LLDB do not support logpoints)
3 years ago
Blaž Hrastnik bf5b9a9f35 ui: Tone down the preview highlight by adding a new scope 3 years ago
Blaž Hrastnik e6cb183134 ui: Fix preview window padding: we want horizontal, not vertical 3 years ago
Blaž Hrastnik a5c3c6c6a9 ui: Highlight line ranges in the preview 3 years ago
CossonLeo 490125f008
info component style config use ui.info ui.info.text (#643) 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
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>
3 years ago
Dmitry Sharshakov ec599a1eac
Do not panic if entered unknown code via stack trace
e.g. Rust std library
3 years ago
Dmitry Sharshakov 3a5e044c89
languages: support debug for Rust with LLDB 3 years ago
Dmitry Sharshakov 09c994a97a
editor: drop telemetry output messages 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 b78f70e602
show breakpoint condition in diagnostics 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 d0b0c9b2ef
editor: select a range if stack pointer has an end 3 years ago
Dmitry Sharshakov 132198323c
editor: go to pos where stack pointer is located 3 years ago
Dmitry Sharshakov be9dc5802a
editor: mark target as running when continued 3 years ago
Dmitry Sharshakov d93cd2a261
editor: support stepIn, stepOut, next and pause commands 3 years ago
Blaž Hrastnik 28658836ee Add more event types, simplify event decoding 3 years ago
Dmitry Sharshakov 2aee5f02d0
Style 3 years ago
Dmitry Sharshakov 7233ab2deb Merge branch 'debug' of https://github.com/sh7dm/helix into debug 3 years ago
Blaž Hrastnik a964cbae65 Extract handle_debugger_message, we should avoid bloating tokio::select! 3 years ago
Dmitry Sharshakov 91f2c60b36
Jump to stack pointer when stopped 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
Kirawi 59e0ceef8c
better panic messages for when you're missing selection scopes (#608) 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 5230a2b669
Continue command in keymap 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 462c8a6ec8
Show debugger output in the statusline 3 years ago
Dmitry Sharshakov 5a06263b78
report status when target started or stopped 3 years ago
Dmitry Sharshakov bcab93c94e
Update editor window when stopped 3 years ago
Dmitry Sharshakov a938f5a87a
refactor: handle DAP events in editor main loop 3 years ago
Dmitry Sharshakov 3fc501c99f
Correctly display 1-based breakpoints 3 years ago
Dmitry Sharshakov 56bddb12f8
Highlight line number of stack pointer 3 years ago
Dmitry Sharshakov 5f5b383979
Fix clippy warnings 3 years ago
Dmitry Sharshakov 6458edecfd
Add stack pointer display when stopped 3 years ago
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
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 68626b8f78 ui: Refactor styling a bit, ensure infobox is stylable 3 years ago
Blaž Hrastnik cbd39d67a4 minor: Refactor commands.rs a bit more 3 years ago
Kirawi da8810809a use `ui.text.focus` for the picker (fix #622) 3 years ago
Blaž Hrastnik 0595b0626a Fix clippy attr 3 years ago
Blaž Hrastnik 5f8b1c7320 Avoid looking up ui.text per highlight range 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
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.
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
Gokul Soumya 14c08e855f
Refactor infobox rendering and parsing (#579) 3 years ago
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
3 years ago
Blaž Hrastnik 1caedc18ca Release v0.4.1 3 years ago
Blaž Hrastnik 4167201344 ui: picker: Position count according to input bar 3 years ago
Blaž Hrastnik eb9ac0a743 ui: picker: Use ui.selection instead of ui.selection.primary 3 years ago
Blaž Hrastnik f20dc1283d ui: picker: Render matches/total counts 3 years ago
Blaž Hrastnik fd1eaafff5 Add :tree-sitter-scopes, useful when developing indents.toml 3 years ago
Blaž Hrastnik 3de40de0a9 fix build... 3 years ago
Blaž Hrastnik 733ee06b7b Release v0.4.0 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
Blaž Hrastnik 627b899315 ui: completion: Insert suggestions when tabbing over them
Fixes #498
3 years ago
Blaž Hrastnik f917b5a441 ui: completion: Use sort_text to sort the completions 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
Blaž Hrastnik 86209c93a3 Appease clippy 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 a4564adadd fix: Don't crash if language servers time out 3 years ago
Blaž Hrastnik 0a7add4ad4 Only recalculate resize during rendering, this stops flashing on resize 3 years ago
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
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
Luctius 8714b71991 Do not shutdown lsp during claim_term
Fixes a bug where the language server is told to shutdown directly after application start.
3 years ago
Blaž Hrastnik b20a5c4c0e ui: menu: Allow wrapping around on ctrl-p/shift tab 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
Blaž Hrastnik 585793eb46 Use an empty stream on Windows to remove duplication 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
Blaž Hrastnik 62eb8c6b40 mouse: Remove verify_screen_coords, refactor primary selection modification 3 years ago
Blaž Hrastnik 6bb744aeac Remove the jump 3 years ago
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>
3 years ago
Blaž Hrastnik 0fdb626c2c Remove embed_runtime feature
It's no longer practical to maintain. Closes #451
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
Gokul Soumya 1493313750
Show pending keys in status line (#515)
* Show pending keys and counts in status line

* Refactor pending key display
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
Blaž Hrastnik 1789dfabfe fix: ui/menu: Don't allow scrolling past the end of completion
Fixes #472
3 years ago
Blaž Hrastnik 817a7e0bd6 fix: Only try expanding directory completion if it makes sense
Fixes #487
3 years ago
Blaž Hrastnik 58d08d36ae Simplify ui/menu.rs 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 1910fa7723 Fix incorrect line hihglight when a selection is at the end of a line. 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 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.
3 years ago
Nathan Vegdahl 1a9ae72fcb Fix last line number being drawn in the status bar. 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
Blaž Hrastnik 5292fe0f7d Calculate completion popup sizing
Fixes #220
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 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
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
Cor e2bcef718a Removed double entry of extend_line 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
Kirawi bb121a3e4b
Injection Query Support (#430)
* wip

* wip

* fixed unsafe

* fix clippy

* move out reference variable

* fmt

* remove arc

* change safety comment
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
Ivan Tham a0a5bd555b More responsive key input
Use biased select!, don't eagerly process lsp message since we want to
prioritize user input rather than lsp messages, but still limit rendering
for lsp messages.
3 years ago
Nathan Vegdahl 4952d6f801 Fix phantom lines in some CRLF files.
Fixes #415.  The issue was that cursor highlighting wasn't extending
to encompass the entire CRLF grapheme, and therefore ended up splitting
it.  This presumably was messing up other grapheme rendering as
well, and this fixes that as well.
3 years ago
Blaž Hrastnik cb4bab8903 Remove outdated comment 3 years ago
Blaž Hrastnik a4e28c6927 Implement `X` as extend selection to line bounds 3 years ago
Ivan Tham d02bbb7bae Fix info panic on small terminal 3 years ago
Blaž Hrastnik ebccc96cd4 Factor out goto t/m/b into a single function again 3 years ago
Blaž Hrastnik 6ce303977c Revert back to 'gm'
top / middle / bottom mnemonic.
3 years ago
Ivan Tham bbbbfa9bcf Goto mode use infobox
In the meantime, change gm to gc.
Remove extra space in mode title.
3 years ago
Ivan Tham 5977b07e19 Reduce calculation and improve pattern in infobox
- switch to use static OnceCell to calculate Info once
- pass Vec<(&[KeyEvent], &str)> rather than Vec<(Vec<KeyEvent>, &str)>
- expr -> tt to allow using | as separator, make it more like match
3 years ago
Ivan Tham 64f83dfcbd Support infobox doc gen on stable release 3 years ago
Ivan Tham 61e925cbed Add infobox doc generation and improve ergonomics 3 years ago
Ivan Tham 6710855eac Fix rendering issues for infobox 3 years ago
Ivan Tham 9effe71b7d Apply suggestions from blaz for infobox 3 years ago
Ivan Tham 4c190ec9d9 Suggestions for infobox changes
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
3 years ago
Ivan Tham 8985c58fd3 Add infobox 3 years ago
Blaž Hrastnik 83e7dd8602 fix: Temporary fix for #402 3 years ago
Gokul Soumya c68fe1f2a3
Add object selection (textobjects) (#385)
* Add textobjects for word

* Add textobjects for surround characters

* Apply clippy lints

* Remove ThisWordPrevBound in favor of PrevWordEnd

It's the same as PrevWordEnd except for taking the current char
into account, so use a "flag" to capture that usecase

* Add tests for PrevWordEnd movement

* Remove ThisWord* movements

They did not preserve anchor positions and were only used
for textobject boundary search anyway so replace them with
simple position finding functions

* Rewrite tests of word textobject

* Add tests for surround textobject

* Add textobject docs

* Refactor textobject word position functions

* Apply clippy lints on textobject

* Fix overflow error with textobjects
3 years ago
Nathan Vegdahl 28d2d68804 Make horizontal selection movement work properly. 3 years ago
Kirawi c5b2973739
`:reload` (#374)
* reloading functionality

* fn with_newline_eof()

* fmt

* wip

* wip

* wip

* wip

* moved to core, added simd feature for encoding_rs

* wip

* rm

* .gitignore

* wip

* local wip

* wip

* wip

* no features

* wip

* nit

* remove simd

* doc

* clippy

* clippy

* address comments

* add indentation & line ending change
3 years ago
Nathan Vegdahl 22dca3b111 Allow last line in file to lack a line break character. 3 years ago
Nathan Vegdahl 2224a1527e Merge branch 'master' into great_line_ending_and_cursor_range_cleanup 3 years ago
Nathan Vegdahl 0b2d51cf5a Fix unused `Result` warnings in helix-term. 3 years ago
Nathan Vegdahl efa3389b6a Fix unused variable, parameter, and `mut` warnings in helix-term. 3 years ago
Nathan Vegdahl 702a0491db Remove #[allow(unused)] from helix-term, and fix unused imports.
Lots of other warning still left.  Will address in subsequent commits.
3 years ago
Nathan Vegdahl e725957704 Ensure a minimum selection width on commands that need it. 3 years ago
Nathan Vegdahl 7c7be6d583 Make `Selection`'s normalize and transform methods self-consuming only. 3 years ago
Nathan Vegdahl 0ae522f3df Clean up `Selection` to not use so many allocations. 3 years ago
Nathan Vegdahl d07074740b Add `Range` methods for various kinds of validation. 3 years ago
Blaž Hrastnik 2a92dd8d4d If completion arrives after we already stopped editing, ignore it 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
Blaž Hrastnik e9159887a9 ui: Use a box drawing character vertical line for splits 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 d94410a678 Sort the files in descending order 3 years ago
Blaž Hrastnik 82fc28a0ce ui: Simplify conditional 3 years ago
Blaž Hrastnik bcca152ad5 Merge tab & char rendering code 3 years ago
Blaž Hrastnik 01b1a62e2c This char_index is unused 3 years ago
Blaž Hrastnik 4edfac21f6 Allocate the tab stop only once 3 years ago
Blaž Hrastnik 1b102d5532 Extract the merge "operator" into helix-core 3 years ago
Blaž Hrastnik ae58d813b2 Appease clippy 3 years ago
Blaž Hrastnik c832aa5a49 There is no direct dirs-next dependency in term 3 years ago
Blaž Hrastnik f9cdb2afe2 Turn diagnostics rendering into span injection too 3 years ago
Blaž Hrastnik 90d675fb15 Fix AnyComponent test 3 years ago
Blaž Hrastnik 057bd630d8 Simplify selection rendering by injecting highlight scopes 3 years ago
Blaž Hrastnik 44566ea812 Release 0.3.0 3 years ago
Blaž Hrastnik cad14c6b46 Address nightly clippy warnings 3 years ago
Nathan Vegdahl a6cadddef4 Fix silly mistake in previous phantom line bug fix.
Fixes #381.  I was trying to change an index value that... wasn't
even an index value.
3 years ago
Nathan Vegdahl 2dba228c76 Fix highlight code splitting graphemes.
This resulted in phantom blank lines in files with CRLF line
endings, but could potentially have manifested with other
graphemes as well.
3 years ago
Wojciech Kępka eb6fb63e74
Sort files in file picker by access, modification and creation date (#336)
* Sort files in file picker by access date

* Fallback file time to modified then created then UNIX_EPOCH

* Use `sort_by_key`

* Refactor
3 years ago
Blaž Hrastnik f2d8ce3415 Use a deadline when eagerly processing notifications 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
Gokul Soumya 18beda38ac Add … when chars are truncated in picker 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
Gokul Soumya fb8e7dc25b Fix picker item width overflow
Fixes #352
3 years ago
Benoît CORTIER 14f61fb6ac Fix lsp config deserialization case
It should have been in kebab-case, but it was the default snake_case.
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
Blaž Hrastnik 39dc09e6c4 ui: Paginate prompt completion 3 years ago
wojciechkepka 3606d8bd24 Patch the primary cursor with insert and select styles 3 years ago
wojciechkepka c534fdefdc Refactor, add `ui.cursor.primary` 3 years ago
wojciechkepka d70be55f70 Add ability to theme primary selecition 3 years ago
wojciechkepka ac1e98d088 Add ability to theme cursor 3 years ago
Shafkath Shuhan fd98e743e8 Handle non-UTF8 files 3 years ago
Blaž Hrastnik 9706f1121d Fix small screen panics 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 481c4ba044 Increment char_index by grapheme char count.
It was just assuming single-char graphemes before.
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 2f321b9335 lsp: Eagerly process notifications/server calls to avoid re-rendering 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
Wojciech Kępka ee80fa8ea9 Cleanup spinners and messages on progress end 3 years ago
wojciechkepka aca9d73fe4 Hold `Config` in `Application`, expect at least one editor view 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
Ivan Tham 985625763a Fix doc warnings 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
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 59c59deb46 Add missing `theme` to toml config 3 years ago
Jan Hrastnik 8634e04a31 added the line_end helper function 3 years ago
Jan Hrastnik 701eb0dd68 changed some hardcoded newlines, removed a else if in line_ending.rs 3 years ago
wojciechkepka 2d629a880c Fix overflow 3 years ago
Blaž Hrastnik 28d9673a8e Fix compilation 3 years ago
wojciechkepka 42e13bd542 Add `:theme <name>` command 3 years ago
wojciechkepka b1a41c4cc8 Add `theme` to global configuration 3 years ago
wojciechkepka a2db161d5a Add theme completer 3 years ago
wojciechkepka ce97a2f05f Add ability to change theme on editor 3 years ago
Blaž Hrastnik 10f9f72232 Revert "Refactor key into helix-view"
Did not use defaults when custom keymap was used

This reverts commit ca806d4f85.
3 years ago
wojciechkepka 11f20af25f Make `home` and `end` work in insert mode 3 years ago
Jan Hrastnik 1e80fbb602 fix merge issue 3 years ago
Jan Hrastnik cdd9347457 Merge remote-tracking branch 'origin/master' into line_ending_detection 3 years ago
Jan Hrastnik 97323dc2f9 ran cargo fmt 3 years ago
Jan Hrastnik ecb884db98 added get_line_ending from pr comment 3 years ago
Ivan Tham ca806d4f85 Refactor key into helix-view
Now also make use of Deserialize for Config.
3 years ago
wojciechkepka 1c25852021 Make arrow keys and page up/down work in insert mode 3 years ago
wojciechkepka c5a2fd5da3 Add `close_language_servers` method on `Editor` 3 years ago
wojciechkepka c2aad859b1 Handle language server shutdown with timeout 3 years ago
Benoît CORTIER 03d1ca7b0a cargo: add more metadata to manifests 3 years ago
Benoît CORTIER db5bdf4f2d Run cargo-diet
cargo-diet is a helper for computing the optimal `include` directives
for Cargo.toml manifests.
https://github.com/the-lean-crate/cargo-diet
3 years ago
Benoît CORTIER b48054f3ee cargo: add version to local dependencies
First step towards enabling us to publish on crates.io.

See: https://github.com/helix-editor/helix/issues/42
3 years ago
wojciechkepka 1c1474c3b8 Add `ui.statusline.inactive`, use `ui.statusline` for statusline text 3 years ago
Wojciech Kępka 1bb3b778ad
Don't derive `Default` for `GlobalConfig` (#297)
We shouldn't derive Default because `lsp_progress` by default should be turned on (opt out).
3 years ago
Gokul Soumya b1cb98283d Fix indent regression issue with o, O
Indents were no longer respected with `o` and `O`. Using counts resulted
in multiple cursors in the same line instead of cursors on each line.

Introduced by 47d2e3ae
3 years ago
wojciechkepka a3cb79ebaa Use kebab-case for config 3 years ago
wojciechkepka bbefc1db63 Add an option to disable display of progress in status bar 3 years ago
wojciechkepka 612511dc98 Handle workDoneProgress/create request 3 years ago
wojciechkepka e1109a5a01 Update handling of progress notification 3 years ago
wojciechkepka 38cb934d8f Add unique id to each lsp client/server pair 3 years ago
wojciechkepka a6d39585d8 Add `work_done_token` as parameter to lsp methods 3 years ago
Wojciech Kępka 41b07486ad
Fix expansion of `~` (#284)
* Fix expansion of `~`, dont use directory relative to cwd.

* Add `expand_tilde`

* Bring back `canonicalize_path`, use `expand_tilde` to `normalize`

* Make `:open ~` completion work

* Fix clippy

* Fold home dir into tilde in Document `realitve_path`
3 years ago
Benoît CORTIER 42142cf680 Fix panic when entering unicode in command prompt
It was attempted to use `String::insert` and `String::remove` to insert
without taking care of unicodes.

Fixes https://github.com/helix-editor/helix/issues/282
3 years ago
Benoît CORTIER 8664d70e73 Replace `Editor::current` by a macro
This is necessary to workaround ownership issues across function calls.
The issue notably arised when implementing the registers into `Editor`
and I was getting annoyed again when implementing copy/pasting into
system clipboard.
The problem is addressed by using macro calls instead of function calls.
There is no notable side effect.
3 years ago
Jan Hrastnik 8bccd6df30 applied changes from pr review 3 years ago
PabloMansanet f7e00cf720
Configurable keys 2 (Mapping keys to commands) (#268)
* Add convenience/clarity wrapper for Range initialization

* Add keycode parse and display methods

* Add remapping functions and tests

* Implement key remapping

* Add remapping book entry

* Use raw string literal for toml

* Add command constants

* Make command functions private

* Map directly to commands

* Match key parsing/displaying to Kakoune

* Formatting pass

* Update documentation

* Formatting

* Fix example in the book

* Refactor into single config file

* Formatting

* Refactor configuration and add keymap newtype wrappers

* Address first batch of PR comments

* Replace FromStr with custom deserialize
3 years ago
Gokul Soumya 47d2e3aefa Let o, O take counts for multiple cursors 3 years ago
Gokul Soumya 20d6b202d5 Fix cursor position bugs related to o and O
- `O` at the beginning of file didn't move cursor
- `o` and `O` messed up cursor position with multiple cursors

Fixes #127
3 years ago
Jan Hrastnik 9c3eadb2e4 fixed some problems from rebasing 3 years ago
Jan Hrastnik 7cf0fa05a4 doc.line_ending() now returns &'static str 3 years ago
Jan Hrastnik a4f5a0134e trying out line ending helper functions in commands.rs 3 years ago
Jan Hrastnik 3756c21bae rebase on branch line_ending_detection 3 years ago
Gokul Soumya d1c8a74771 Add theme key for selected line number
Adds `ui.linenr.selected` which controls highlight of linu numbes which
have cursors on.

- Fallback to linenr if linenr.selected is missing

- Update docs and themes

- Add TODOs for themes with temporary linenr.selected
3 years ago
Ivan Tham 124514aa70 Add cursor kind to separate hidden cursor from pos
Now IME cursor position should be correct since we can still set cursor
position without drawing the cursor.
3 years ago
Benoît CORTIER 6bdf609caa Remove RwLock for registers
Registers are stored inside `Editor` and accessed without `RwLock`.
To work around ownership, I added a sister method to `Editor::current`:
`Editor::current_with_context`. I tried to modify `Editor::current`
directly but it's used at a lot of places so I reverted into this for
now at least.
3 years ago
Benoît CORTIER 6fb2d2679d Use `_impl` suffix instead of `_` prefix
Helpers / internal implementations where using the `_` prefix.
However, this prefix also suppress unused warnings.
I suggest we use the `_impl` suffix instead.
3 years ago
Ivan Tham 05ed3e8fb8 Remove unused variables 3 years ago
Ivan Tham 002f1ad397 Add filter ability to picker
Inspired by doom emacs. Able to filter picker options multiple times.
3 years ago
Nathan Vegdahl 7c2fb92c91 Report indent style when calling indent-style with no arguments.
Also print an error message when the argument is malformed.
3 years ago
Nathan Vegdahl d415a666fe Address PR comments.
* Clean up "indent-style" command argument parsing.
* Adjust command's name to match the style of other commands.
* Add a "0" alias to the command, for tabs indent style.
3 years ago
Nathan Vegdahl 4faf1d3bf4 Remove indent style status-line display for now. 3 years ago
Nathan Vegdahl 358ea6a37c Implement command to change the indent-style setting of a document. 3 years ago
Nathan Vegdahl 8648e483f7 Render indent-style status in status line.
Also cleaned up the status line code a little.
3 years ago
Ivan Tham 1bda454149 Add ctrl-w for prompt 3 years ago
Blaž Hrastnik e819121f6e fix: wq/wqa functions need to wait for save to finish before closing 3 years ago
Gokul Soumya f33aaba53f Add ui.selection to theme.toml
Enables changing the color of the selection which was previously
hard coded.
3 years ago
Gokul Soumya 9cfa163370 Refactor keymap definitions using macros
Adds a macro rule to the `key!` macro so that keymaps using `Left`,
`Home`, `Esc`, etc. will also be accepted.
3 years ago
dependabot[bot] e4b3a666d2
Bump once_cell from 1.7.2 to 1.8.0 (#255)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.7.2 to 1.8.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.7.2...v1.8.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
3 years ago
dependabot[bot] 9b352ceefd Bump crossterm from 0.19.0 to 0.20.0
Bumps [crossterm](https://github.com/crossterm-rs/crossterm) from 0.19.0 to 0.20.0.
- [Release notes](https://github.com/crossterm-rs/crossterm/releases)
- [Changelog](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crossterm-rs/crossterm/compare/0.19...0.20)

---
updated-dependencies:
- dependency-name: crossterm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years ago
Andreas Liljeqvist 5d23667a26 fix offset by one problem in replace_with_yanked 3 years ago
Blaž Hrastnik ae5ecfdf66 Release v0.2.0 3 years ago
Blaž Hrastnik d545e61644 ui: Prompt should figure out a reasonable column width
Fixes #192
Refs #225
3 years ago
Wojciech Kępka df217f71c1 Fix `wq` 3 years ago
Wojciech Kępka b9100fbd44 Fix clippy 3 years ago
Wojciech Kępka 52d3c29244 Deduplicate code 3 years ago
Wojciech Kępka 17c9a8499e Add `qa` and `qa!` 3 years ago
Wojciech Kępka 62e6232a32 Update write_all 3 years ago
Wojciech Kępka d8b5d1181f Add `Copy` derive to `PromptEvent` 3 years ago
Wojciech Kępka b500a2a138 commands: Add more write commands 3 years ago
Yusuf Bera Ertan a3f01503e2 build(nix): use nix-cargo-integration, make shell.nix use flake devshell 3 years ago
Ivan Tham 9640ed1425 Add clarification to last buffer 3 years ago
Robin 9baf1ecc90
add symbol picker (#230)
* add symbol picker

use the lsp document_symbol request

* fix errors from merging in master

* add docs for symbol picker
3 years ago
Robin 44cc0d8eb0
add alternate file (#223)
* add alternate file

inspired by vim ctrl-6/kak ga commands. the alternate file is kept per view

* apply feedback from #223

* rename to last_accessed

* add ga doc

* add fail message for ga
3 years ago
Ivan Tham 1953588873 Change picker horizontal split to h
Follow window mode and vim behavior, x seemed weird.
3 years ago
Wojciech Kępka c754df12b3
lsp: Check bounds when converting lsp positions (#204)
* lsp: Make position conversion funcs return `Option`

* Add tests

* Fixes

* Revert pos_to_lsp_pos to panic
3 years ago
Blaž Hrastnik 278361a086 Only auto-format for certain languages
Fixes #53
Fixes #207
3 years ago
Jakub Bartodziej 69fe46a122
Add :earlier and :later commands that can be used to navigate the full edit history. (#194)
* Disable deleting from an empty buffer which can cause a crash.

* Improve on the fix for deleting from the end of the buffer.

* Clean up leftover log.

* Avoid theoretical underflow.

* Implement :before which accepts a time interval and moves the editor to
the closest history state to the commit of the current time minus that
interval. Current time is now by default, or the commit time if :before
has just been used.

* Add :earlier an :later commands that can move through
the edit history and retrieve changes hidded by undoing
and commiting new changes. The commands accept a number
of steps or a time period relative to the currrent change.

* Fix clippy lint error.

* Remove the dependency on parse_duration, add a custom parser instead.

* Fix clippy errors.

* Make helix_core::history a public module.

* Use the helper for getting the current document and view.

* Handled some PR comments.

* Fix the logic in :later n.

Co-authored-by: Ivan Tham <pickfire@riseup.net>

* Add an alias for :earlier.

Co-authored-by: Ivan Tham <pickfire@riseup.net>

* Add an alias for later.

Co-authored-by: Ivan Tham <pickfire@riseup.net>

* Run cargo fmt.

* Add some tests for earlier and later.

* Add more tests and restore the fix for later that diappeared somehow.

* Use ? instead of a match on an option.

Co-authored-by: Ivan Tham <pickfire@riseup.net>

* Rename to UndoKind.

* Remove the leftover match.

* Handle a bunch of review comments.

* More systemd.time compliant time units and additional description for the new commands.

* A more concise rewrite of the time span parser using ideas from PR discussion.

* Replace a match with map_err().

Co-authored-by: Ivan Tham <pickfire@riseup.net>

Co-authored-by: Jakub Bartodziej <jqb@google.com>
Co-authored-by: Ivan Tham <pickfire@riseup.net>
3 years ago
PabloMansanet 86af55c379
Movement fixes, refactor and unit test suite (#217)
* Add convenience/clarity wrapper for Range initialization

* Test horizontal moves

* Add column jumping tests

* Add failing movement conditions for multi-word moves

* Refactor skip_over_next

* Add complex forward movement unit tests

* Add strict whitespace checks and edge case tests

* Restore formatting

* Remove unused function

* Add empty test case for deletion and fix nth_prev_word_boundary

* Add tests for backward motion

* Refactor word movement

* Address review comments and finish refactoring backwards move

* Finish unit test suite

* Fmt pass

* Fix lint erors

* Clean up diff restoring bad 'cargo fmt' actions

* Simplify movement closures (thanks Pickfire)

* Fmt pass

* Replace index-based movement with iterator based movement, ensuring that each move incurs a single call to the RopeSlice API

* Break down tuple function

* Extract common logic to all movement functions

* Split iterator helpers away into their own module

* WIP reducing clones

* Operate on spans

* WIP simplifying iterators

* Simplify motion helpers

* Fix iterator

* Fix all unit tests

* Refactor and simplify

* Simplify fold
3 years ago
Wojciech Kępka 0c2b99327a commands: Handle `t<ENTER>` as till newline 3 years ago
Wojciech Kępka 098806ce2a
lsp: Display LSP progress messages (#216) 3 years ago
Robin van Dijk c0d32707d0 move to first nonwhitespace on shift-i
This matches the behaviour in vim and kak
3 years ago
Ivan Tham 7cc13fefe9 Derive debug without feature
Note that this also removed those `finish_non_exhaustive()`.
3 years ago
notoria 1a3a924634 Implement Debug for data structure as a feature 3 years ago
Ivan Tham 6b3c9d8ed3 Fix jump behavior, goto_implementation now jump
Better jump behavior since we override the first jump if it's on the
first document. At the same time, ctrl-i is now working with gd jumps.
3 years ago
wojciechkepka 4dbc23ff1c Fix documentation popup panic 3 years ago
Kevin Sjöberg b20e4a108c Only enforce limit outside of .git 3 years ago
Kevin Sjöberg 1bb9977faf Match keybindings of menu 3 years ago
Kevin Sjöberg 29962a5bd9 Fix Shift-Tab for moving upwards in menu 3 years ago
Blaž Hrastnik 83723957fe Fix crash when too many completions available
Refs #81
3 years ago
Zheming Li ae51065213 Support go to line 1 3 years ago
Wojciech Kępka 4e3a343602 Make `r<ENTER>` work 3 years ago
Wojciech Kępka 81e02e1ba4 Remove unwanted `as_str` 3 years ago
Wojciech Kępka c349ceb61f Don't replace newlines 3 years ago
Wojciech Kępka 2e4a338944 Add bounds checks to replace 3 years ago
Wojciech Kępka 9c83a98469 commands: Replace all characters in selection 3 years ago
Wojciech Kępka 1bffb34350 Make matching bracket dimmed, prevent out of bounds rendering 3 years ago
Wojciech Kępka c978d811d9 Cleanup find_first_non_whitespace_char funcs 3 years ago
Wojciech Kępka 48df05b16d commands: Add goto first non-whitespace char of line 3 years ago
Kirawi b873fb9897
Fix Unicode (#135)
* init

* wip

* wip

* fix unicode break

* fix unicode break

* Update helix-core/src/transaction.rs

Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>

* clippy

* fix

* add changes

* added test

* wip

* wip

* wip

* wip

* fix

* fix view

* fix #88

Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
3 years ago
Kevin Sjöberg 08f50310bd Bump file picker limit 3 years ago
Wojciech Kępka 4bec87ad18 Update keymap 3 years ago
Wojciech Kępka c65b4dea09 commands: Add replace with yanked as `R` 3 years ago
Wojciech Kępka 6fc0e0b5fb completion: Fix unimplemented autocomplete 3 years ago
Blaž Hrastnik 0201ef9205 ui: completion: Use the correct type_name
Fixes #166
4 years ago
Wojciech Kępka 037f45f24e Create all parent directories for config and cache 4 years ago
Blaž Hrastnik 9821beb5c4 Make gh/gl extend selection in select mode 4 years ago
Blaž Hrastnik 3cee0bf200 Address clippy lint 4 years ago
Blaž Hrastnik 4fd38f82a3 Disable failing doctest 4 years ago
Ivan Tham b5682f984b Separate helix-term as a library
helix-term stuff will now be documented in rustdoc.
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 8d6fad4cac lsp: Provide workspace root on client.initialize() 4 years ago
Blaž Hrastnik 14830e75ff Revert the line number rendering change, we were correct before 4 years ago
Blaž Hrastnik f48a60b8e2 Release 0.0.10 4 years ago
Blaž Hrastnik 4f561e93b8 View mode: Use saturating_sub when calculating first_col 4 years ago
Blaž Hrastnik 01b1bd15a1 commands: use chars().count() over .len() on strings 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
Ethan Bodzioney 843c2cdebd
Install instructions and version number corrections (#148)
* Add MacOS install instructions

* Change version name argument

When using the -V command to get the version you are given 'helix-term x.x.x', I changed this to just helix as it makes more sense.

* Fixed version number

* Fixed version number

* Fixed version number

* Fixed version number

* Fixed version number

* Fixed version number
4 years ago
Wojciech Kępka 16b1cfa3be Add diagnostics keybindings 4 years ago
Ivan Tham 2066e866c7 Add spc w w for window mode 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
Ivan Tham 40744ce835 Add ctrl-w in insert mode
It seemed to panic when I pressed too many times, but that is from
lsp side.
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
Brian Dawn 62d181de78 Provide a feature flag to be able to embed the runtime folder.
These changes provide a new feature flag "embed_runtime" that when
enabled and built in release mode will embed the runtime folder into the
resulting binary.
4 years ago
Ivan Tham 8c2fa12ffc Add window mode
Fix #93
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
ahkrr 444cd0b068 fix: make find_prev_char and till_prev_char work
Bevore this PR `commands::find_prev_char` and `commands::till_prev_char` were triggerable through keys 
but `seach::find_nth_next()` was hardcoded in `_find_char`. 
The passed `fn` was nerver used. With this PR the passed `fn` is used.
The change in search.rs resolves an off by one error in the behivor of `find_nth_prev`
4 years ago
Kirawi c17dcb8633
Fixing Multiple Panics (#121)
* init

* wip

* wip
4 years ago
Antoni Stevenet a1f4b8f92b
Add home-end keymaps, (as kakoune/vim do) (#83)
* add home-end keymaps

* implement extend methods for extend_line_start, extend_line_end

* add home-end mappings to keymaps.md

* add ^-$ extend mappings for extend mode

* pass cargo linter
4 years ago
notoria adcfcf9044 Replace ^/$ with gh/gl 4 years ago
Blaž Hrastnik 4f0e3aa948 Implement gt/gm/gb, remap goto tYpe to gy 4 years ago
Blaž Hrastnik f2e554d761 matchbrackets: Needs to render with the viewport offset 4 years ago
Blaž Hrastnik bd4552cd2b scroll: Fix the clamping 4 years ago
Blaž Hrastnik 06d8d3f55f Try to detect language when document file path is set
Fixes #91
4 years ago
Blaž Hrastnik 8afd4e1bc2 Exit select mode on delete_selection 4 years ago
wojciechkepka 43b92b24d2 Show file picker when directory passed as first arg 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
Kevin Sjöberg fdb5bfafae Limit goto count
Giving a goto count greater than the number of lines in the buffer
would cause Helix to panic.
4 years ago
Antoni Stevent 27aee705e0 use correct _extend methods, also remove unnecessary casts 4 years ago
Antoni Stevent f0fe558f38 Add up/right/left/down arrow keymaps, similar to kakoune 4 years ago
Jakub Bartodziej 09a7db637e Avoid theoretical underflow. 4 years ago
Jakub Bartodziej 31ed4db153 Clean up leftover log. 4 years ago
Jakub Bartodziej 3c5dfb0633 Improve on the fix for deleting from the end of the buffer. 4 years ago
Jakub Bartodziej 6cbc0aea92 Disable deleting from an empty buffer which can cause a crash. 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
Ivan Tham d664d1dec0 Default log file to cache 4 years ago
Blaž Hrastnik 7e8603247d
Merge pull request #66 from IceDragon200/replaced-args-parser
Drop pico-args in favour of a hand rolled parser
4 years ago
Blaž Hrastnik 6dba1e7ec7 Clippy lint 4 years ago
Blaž Hrastnik c0332bd935 Fix split sizes getting out of sync with the terminal size, refs #69 4 years ago
Corey Powell f0018280cb Refactored parse_args loop
Thanks @PabloMansanet
4 years ago
Corey Powell 7202953e69 Dropped pico-args in favour of a simpler hand roller parser
Not the greatest looking, but it gets the job done
4 years ago
Corey Powell 83031564db
Merge pull request #57 from pickfire/fix-panic
Fix panic opening rust file
4 years ago
Ivan Tham eab6e53511 Fix panic opening rust file
Application::new will use stuff that requires tokio runtime.
4 years ago
Blaž Hrastnik 2719a35123
Merge pull request #55 from helix-editor/autoresize
autoresize terminal in compositor render
4 years ago
Jan Hrastnik 78980f575b autoresize terminal in compositor render 4 years ago
Wojciech Kępka e88383d990 Use config_dir for logging, create config_dir 4 years ago
Blaž Hrastnik cbb3ebafdc Support ctrl-f and ctrl-b to page up/down, fixes #41 4 years ago
Daichi Takamiya 4d12c7c3cf Fix empty command cause panic 4 years ago
Danilo Spinella ea824ed05d
Improve errors handling in main by adding context
Return a anyhow::Result in main function so that Context can be used
there too.
4 years ago
Blaž Hrastnik ce25aa951e Allow setting a filepath on :write 4 years ago
Blaž Hrastnik a2147fc7d5 Change help prompt styling 4 years ago
Blaž Hrastnik d8e16554bf Don't crash if no filename specified on open 4 years ago
Blaž Hrastnik b8d6e6ad28 Allow setting verbosity to info again 4 years ago
Blaž Hrastnik 138787f76e Drop clap for pico-args
We barely have any flags so it's not worth the compilation time or
binary size to use clap.
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 2c48d65b15 Format document on save 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 f1dc25a774 Support count for indent too 4 years ago
Blaž Hrastnik 4f335fabc8 Fix unindent to work with tabs, take a count 4 years ago
Blaž Hrastnik 9c24f1ec0e Drop selection_lines completely, change move_line_start binding 4 years ago
Blaž Hrastnik f99a683991 Fix crash if appending at end of line on the last line of the file 4 years ago
Blaž Hrastnik 51d1d43289 Double the UI picker file limit. 4 years ago
Blaž Hrastnik 5a245b83a0 Append :fmt as a separate history state 4 years ago
Blaž Hrastnik 8949347e2c Completion: apply additionalTextEdits.
Used for adding imports to the file when completing.
4 years ago
Blaž Hrastnik 54de768915 Fix crash if typing | (regex or) into the prompt.
Zero-width matches at the start of the file make no sense to us.
4 years ago
Blaž Hrastnik 5e6b46e7c5 Use array::IntoIter. 4 years ago
Blaž Hrastnik 354b822d21 Fix crash on xa<Enter> if we were on the last line. 4 years ago
Blaž Hrastnik fae2127a11 Drop cx.view_id, it was used before we had cx.current. 4 years ago
Blaž Hrastnik 0e5b421646 When calculating a new selection, we need to take newly inserted text into account. 4 years ago
Blaž Hrastnik 4a9d1163e0 Hacky way to specify indent scopes per language via toml configs.
Can't do it via a scm query nicely because it returns an iterator over
all the matches, whereas we want to traverse the tree ourselves.

Can't extract the pattern data from a parsed query either.

Oh well, toml files for now.
4 years ago
Blaž Hrastnik e4ff75b4d4 Add :fmt (formats the whole file). 4 years ago
Blaž Hrastnik 5cbb4efa6d Add the LICENSE file. 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 35606a3daa Inline tui as helix-tui fork.
We only rely on some of the rendering primitives and implement our
Cursive-style compositor on top.
4 years ago
Blaž Hrastnik 0fe19ae472 clippy lint 4 years ago
Blaž Hrastnik ed827e993f Fix jumplist jumps, keep the selection on vsplit. 4 years ago
Blaž Hrastnik caf4349925 Remove some of the panics, just log instead. 4 years ago
Blaž Hrastnik d24844b73d ui: Render command mode doc text if available. 4 years ago
Blaž Hrastnik d4d5e88ade Show a message if no definition was found. 4 years ago
Blaž Hrastnik 1be8b2005d Extract a method for view alignment. 4 years ago
Blaž Hrastnik adaf861881 vsplit can now split scratch buffers. 4 years ago
Blaž Hrastnik 570c253ffb Disable default features on futures-util to drop proc macros. 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 87e7a0de3f Save space by having the command hashmap use const static refs. 4 years ago
Blaž Hrastnik 9604a0c294 Improve command mode handling. 4 years ago
Blaž Hrastnik 243456a583 Disallow quitting on last view if unsaved changes present. 4 years ago
Blaž Hrastnik c0a8b81487 Only send the document close event if we're closing the underlying buffer 4 years ago
Blaž Hrastnik c20813690f View::new is infallible, so is editor.switch/new_file. 4 years ago
Blaž Hrastnik f2c79e245b Allow switching views back to scratch buffers. 4 years ago
Blaž Hrastnik 7c915dc065 Add the :new command, don't crash if saving without filename. 4 years ago
Blaž Hrastnik f8844c6811 Implement pair expansion when pressing new line between bracket pairs.
From:
{|}

To:
{
    |
}
4 years ago
Blaž Hrastnik fd4fd12fa3 clippy lint 4 years ago
Blaž Hrastnik ba97005495 Work around the rest of the blocking issues. 4 years ago
Blaž Hrastnik d00414f81a Start moving more LSP calls into callbacks/futures without capturing self 4 years ago
Blaž Hrastnik 1ad0581ddd Eliminate a few more futures dependencies. 4 years ago
Blaž Hrastnik 355ad3cb82 Tokio migration. 4 years ago
Blaž Hrastnik 0e5308bce1 Need to allow this lint, the Hook signature requires Option<>. 4 years ago
Blaž Hrastnik b6a22e955b Closer to a full flake build via naersk.
Blocked on https://github.com/NixOS/nix/issues/4423, build doesn't see
submodules.
4 years ago
Blaž Hrastnik 3038c2ef6d ui: Draft for completion doc preview. 4 years ago
Blaž Hrastnik ab4decfd6d Make post hooks trigger even when a different handler processes input.
The default handler is now simply a fallback.
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 594575ba3f Center forward and backward jumps too. 4 years ago
Blaž Hrastnik 3b90317060 Add window/showMessage / logMessage stubs so gopls fully starts. 4 years ago
Blaž Hrastnik c64240b6ef Implement most of the view mode (z). 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 180521fefe Adjust scroll() to match kakoune: only scroll the view if cursor in bounds. 4 years ago
Blaž Hrastnik 2a1f10d1b5 Center the new position on screen after doing a goto jump. 4 years ago
Blaž Hrastnik 95dd55ba94 Fix overlap calculation. 4 years ago
Blaž Hrastnik 7493d19098 Re-introduce clearing with bg color, seems the TUI issue was fixed. 4 years ago
Blaž Hrastnik 392c4a9c02 Keep primary selection as space+space. 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 865429643b <space>w for save, <space>c for close current split. 4 years ago
Blaž Hrastnik 52da68e49a Render a separator between vertical splits. 4 years ago
Blaž Hrastnik 9ca2909c80 Loop around the end on regex searches. 4 years ago
Blaž Hrastnik 8b33ba2284 Correct the naming issue with vsplit and hsplit being swapped. 4 years ago
Blaž Hrastnik 58c5fec592 minor: This comment was resolved. 4 years ago
Blaž Hrastnik bc4e54c0c4 Load config files from ~/.config/helix, fallback to defaults. 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 12961d657f Implement P as paste_before. 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 82ff996662 Yank selection when deleting. 4 years ago
Blaž Hrastnik 463f58dfda Fix clamping scroll in certain cases.
.clamp(min, max) requires that min < max. In some cases
first + scrolloff > last - scrolloff and we would panic.
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 91462af546 Allow starting hx without a file. A new blank file will be created. 4 years ago