Commit Graph

402 Commits (25a8a475c53a90fed9ad40db7c327a3cdf481cd7)

Author SHA1 Message Date
notoria adcfcf9044 Replace ^/$ with gh/gl 3 years ago
Blaž Hrastnik 4f0e3aa948 Implement gt/gm/gb, remap goto tYpe to gy 3 years ago
Blaž Hrastnik bd4552cd2b scroll: Fix the clamping 3 years ago
Blaž Hrastnik 8afd4e1bc2 Exit select mode on delete_selection 3 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.
3 years ago
Jakub Bartodziej 09a7db637e Avoid theoretical underflow. 3 years ago
Jakub Bartodziej 31ed4db153 Clean up leftover log. 3 years ago
Jakub Bartodziej 3c5dfb0633 Improve on the fix for deleting from the end of the buffer. 3 years ago
Jakub Bartodziej 6cbc0aea92 Disable deleting from an empty buffer which can cause a crash. 3 years ago
Blaž Hrastnik cbb3ebafdc Support ctrl-f and ctrl-b to page up/down, fixes #41 3 years ago
Daichi Takamiya 4d12c7c3cf Fix empty command cause panic 3 years ago
Blaž Hrastnik ce25aa951e Allow setting a filepath on :write 3 years ago
Blaž Hrastnik d8e16554bf Don't crash if no filename specified on open 3 years ago
Blaž Hrastnik 2c48d65b15 Format document on save 3 years ago
Blaž Hrastnik 094203c74e Update deps, introduce the new tree-sitter lifetimes 3 years ago
Blaž Hrastnik f1dc25a774 Support count for indent too 3 years ago
Blaž Hrastnik 4f335fabc8 Fix unindent to work with tabs, take a count 3 years ago
Blaž Hrastnik 9c24f1ec0e Drop selection_lines completely, change move_line_start binding 3 years ago
Blaž Hrastnik f99a683991 Fix crash if appending at end of line on the last line of the file 3 years ago
Blaž Hrastnik 5a245b83a0 Append :fmt as a separate history state 3 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.
3 years ago
Blaž Hrastnik 5e6b46e7c5 Use array::IntoIter. 3 years ago
Blaž Hrastnik 354b822d21 Fix crash on xa<Enter> if we were on the last line. 3 years ago
Blaž Hrastnik fae2127a11 Drop cx.view_id, it was used before we had cx.current. 3 years ago
Blaž Hrastnik 0e5b421646 When calculating a new selection, we need to take newly inserted text into account. 3 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.
3 years ago
Blaž Hrastnik e4ff75b4d4 Add :fmt (formats the whole file). 3 years ago
Blaž Hrastnik 1255bcb8a3 Simplify the compositor callback. 3 years ago
Blaž Hrastnik ed827e993f Fix jumplist jumps, keep the selection on vsplit. 3 years ago
Blaž Hrastnik caf4349925 Remove some of the panics, just log instead. 3 years ago
Blaž Hrastnik d24844b73d ui: Render command mode doc text if available. 3 years ago
Blaž Hrastnik d4d5e88ade Show a message if no definition was found. 3 years ago
Blaž Hrastnik 1be8b2005d Extract a method for view alignment. 3 years ago
Blaž Hrastnik adaf861881 vsplit can now split scratch buffers. 3 years ago
Blaž Hrastnik ff84c8e394 Command mode: Per command completers. 3 years ago
Blaž Hrastnik 87e7a0de3f Save space by having the command hashmap use const static refs. 3 years ago
Blaž Hrastnik 9604a0c294 Improve command mode handling. 3 years ago
Blaž Hrastnik 243456a583 Disallow quitting on last view if unsaved changes present. 3 years ago
Blaž Hrastnik c0a8b81487 Only send the document close event if we're closing the underlying buffer 3 years ago
Blaž Hrastnik c20813690f View::new is infallible, so is editor.switch/new_file. 3 years ago
Blaž Hrastnik f2c79e245b Allow switching views back to scratch buffers. 3 years ago
Blaž Hrastnik 7c915dc065 Add the :new command, don't crash if saving without filename. 3 years ago
Blaž Hrastnik f8844c6811 Implement pair expansion when pressing new line between bracket pairs.
From:
{|}

To:
{
    |
}
3 years ago
Blaž Hrastnik ba97005495 Work around the rest of the blocking issues. 3 years ago
Blaž Hrastnik d00414f81a Start moving more LSP calls into callbacks/futures without capturing self 3 years ago
Blaž Hrastnik 355ad3cb82 Tokio migration. 3 years ago
Blaž Hrastnik 0e5308bce1 Need to allow this lint, the Hook signature requires Option<>. 3 years ago
Blaž Hrastnik ab4decfd6d Make post hooks trigger even when a different handler processes input.
The default handler is now simply a fallback.
3 years ago
Blaž Hrastnik 594575ba3f Center forward and backward jumps too. 3 years ago
Blaž Hrastnik c64240b6ef Implement most of the view mode (z). 3 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.
3 years ago
Blaž Hrastnik 811f952a41 Center search results. 3 years ago
Blaž Hrastnik 180521fefe Adjust scroll() to match kakoune: only scroll the view if cursor in bounds. 3 years ago
Blaž Hrastnik 2a1f10d1b5 Center the new position on screen after doing a goto jump. 3 years ago
Blaž Hrastnik 95dd55ba94 Fix overlap calculation. 3 years ago
Blaž Hrastnik 392c4a9c02 Keep primary selection as space+space. 3 years ago
Blaž Hrastnik 73f4abbb37 N as extend with search (for now, N should be search_prev). 3 years ago
Blaž Hrastnik 865429643b <space>w for save, <space>c for close current split. 3 years ago
Blaž Hrastnik 9ca2909c80 Loop around the end on regex searches. 3 years ago
Blaž Hrastnik 8b33ba2284 Correct the naming issue with vsplit and hsplit being swapped. 3 years ago
Blaž Hrastnik 58c5fec592 minor: This comment was resolved. 3 years ago
Blaž Hrastnik 12961d657f Implement P as paste_before. 3 years ago
Blaž Hrastnik 82ff996662 Yank selection when deleting. 3 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.
3 years ago
Blaž Hrastnik 0e9ecccfc1 clippy: Drop or-patterns for now because they're not on stable rust yet 3 years ago
Blaž Hrastnik 95d0bba81a ui: Improve completion state handling. 3 years ago
Blaž Hrastnik 59a0fc7b59 w, b, e: Match kakoune's behavior in selecting by default.
I initially preferred only moving the cursor, but selecting the whole
word is a lot nicer for things like wd (instead of vwd).
3 years ago
Blaž Hrastnik ab1d11088f Import some lsp utilities. 3 years ago
Blaž Hrastnik 77cab5a715 Merge open_above and open_below definitions. 3 years ago
Blaž Hrastnik cc058ad78f Simplify some code. 3 years ago
Blaž Hrastnik 0dbd5b61ef Simplify code by providin cx.current() = (view, doc). 3 years ago
Blaž Hrastnik ceea5eacd8 clippy lint 3 years ago
Blaž Hrastnik 7dfd7f51a0 Implement space-v as view same file in split. 3 years ago
Blaž Hrastnik 6c4093c946 Weave through view_id references so that views into one file have independent selects. 3 years ago
Blaž Hrastnik dfc17becd5 Move pickers under my leader key mode (space). 3 years ago
Blaž Hrastnik e166da2ab0 fix: A (append to line) was inserting before last char. 3 years ago
Blaž Hrastnik 1b5316ea74 Track document modified state. 3 years ago
Blaž Hrastnik 88bb7a1f38 Repeat insert command (.). 3 years ago
Blaž Hrastnik e833d65b77 Teach file picker how to find the project root (.git). 3 years ago
Blaž Hrastnik 8098e9bdcd Allow setting a status message. 3 years ago
Blaž Hrastnik 742b3a709f Store intra-files jumps (goto) on the jumplist. 3 years ago
Blaž Hrastnik 0083a6c325 commands: Simplify _goto. 3 years ago
Blaž Hrastnik ea407ccdba Implement <n>g as goto line n. 3 years ago
Blaž Hrastnik 5c2d2fda21 Wire up opening in splits via pickers. 3 years ago
Blaž Hrastnik aefafc25cd Replace Mode::Goto with just using on_next_key. 3 years ago
Blaž Hrastnik a24c3fff54 Filter the completion menu based on text entered. 3 years ago
Blaž Hrastnik 2a3910c1d9 wip: Async async. Delay response handling with a callback. 3 years ago
Blaž Hrastnik ad3325db8e minor: Remove a few unwraps. 3 years ago
Blaž Hrastnik 9a36d2c2a8 wip: Hooks & trigger characters for completion/signature_help. 3 years ago
Blaž Hrastnik 8657c57cf2 Trivial jumplist implementation. 3 years ago
Blaž Hrastnik 915fd9ebaf Restore buffer_picker. 3 years ago
Blaž Hrastnik 8a0ab447ec editor.open can now either replace the current view or open in a split. 3 years ago
Blaž Hrastnik 8328fe926d Drop refcell use, make view simply ref doc.id. 3 years ago
Blaž Hrastnik d0530fb839 Fix a scrolling crash where it would jump past the end of the buffer. 3 years ago
Blaž Hrastnik 73c92a0bc1 Implement m / match_brackets (using tree sitter). 3 years ago
Blaž Hrastnik df306fe031 Implement open_above (O). 3 years ago
Blaž Hrastnik 42d07b0621 Implement replace command (r<key>). 3 years ago
Blaž Hrastnik bf95ee27aa Store Document on the Editor type, make View reference it. 3 years ago
Blaž Hrastnik 5e6716c89c Add tab_width and indent_unit config. 3 years ago
Blaž Hrastnik cbcacb1063 Merge some imports. 3 years ago
Blaž Hrastnik 71999cce43 Implement auto-pairs behavior for open and close. 3 years ago
Blaž Hrastnik a32806b490 Improve completion: src/<tab> will now correctly complete to src/main.rs 3 years ago
Blaž Hrastnik f29f01858d Implement iter() and len() directly on Selection. 3 years ago
Blaž Hrastnik e9bd9e72c3 Pos conversions always operate on whole documents. 3 years ago
Blaž Hrastnik 175d38c88c toggle_comments needs to append to history. 3 years ago
Blaž Hrastnik c331721565 Finish hiding doc.state / State as an implementation detail. 3 years ago
Blaž Hrastnik 8ba1e15d29 Expose doc.syntax() via accessor. 3 years ago
Blaž Hrastnik e261f3c50d Expose doc.language_server as an accessor. 3 years ago
Blaž Hrastnik 59e6024186 Remove State from a few more signatures. 3 years ago
Blaž Hrastnik dbcc099f48 Move things out of state.rs. 3 years ago
Blaž Hrastnik 0f6624491b Fix completion panicking if text changed before insert completed. 3 years ago
Blaž Hrastnik 8eaf9a432d Make Transaction::change only rely on the rope. 3 years ago
Blaž Hrastnik 51c15da3c3 Hold a reference to executor on the Editor type. 3 years ago
Blaž Hrastnik e3ec5e31ec Fix goto code before merging. 3 years ago
Jan Hrastnik eadad13efa preparing for gd merge 3 years ago
Jan Hrastnik 4e461bea2f editor.open now checks if view already exists 3 years ago
Jan Hrastnik 0828d1fdea picker wip 3 years ago
Blaž Hrastnik cf71625d4e term: Simplify goto code, address lints. 3 years ago
Jan Hrastnik 3869d7713e added goto functions in helix-term 3 years ago
Jan Hrastnik b738ae1bc7 more goto lsp functions 3 years ago
Jan Hrastnik 294791dffd added picker for gd, but yet to test it. also need to load appropriate file when definition isnt in same file 3 years ago
Jan Hrastnik 0322c28e6b gd now works for singular definition 3 years ago
Blaž Hrastnik 18ec8adc7f Simplify code a bit. 3 years ago
Jan Hrastnik 8a68a04340 gotodefiniton now runs but doesnt return anything 3 years ago
Jan Hrastnik d3ddc8dea6 wip 3 years ago
Blaž Hrastnik 54a7e893b7 lsp: Wire up didClose notification on editor.close. 3 years ago
Blaž Hrastnik eca2a73ad0 lsp: Pass through language_id on didOpenTextDocument. 3 years ago
Blaž Hrastnik 143cfe13e0 minor: TODO comment cleanup 3 years ago
Blaž Hrastnik eea339545c Add command for keeping only the primary selection. 3 years ago
Blaž Hrastnik dd91090a1a Implement keep_selections (filter selections on regex). 3 years ago
Blaž Hrastnik 1cf887dea9 Cleanup: use doc.selection() instead of doc.state.selection(). 3 years ago
Blaž Hrastnik 4acf301022 Implement the f/t/F/T find/till family of commands. 3 years ago
Blaž Hrastnik 62c991230f find-till (f) prototype, on_next_key mode implementation. 3 years ago
Blaž Hrastnik 5ea610c41d ui: Move terminal into compositor, redo required_size hints. 3 years ago
Blaž Hrastnik 05aa0d6991 minor: dead code 3 years ago
Blaž Hrastnik 1d42b95915 ui: wip: Markdown doc renderer. 3 years ago
Blaž Hrastnik a5c4314940 commands: Improve scroll functions.
Followed kakoune's implementation, it's no longer janky and can scroll
all the way in either direction.
3 years ago
Blaž Hrastnik 565fb94afe commands: Correct another case that always used primary(). 3 years ago
Blaž Hrastnik 7e4830215e commands: w/b/e need to apply to all selections. 3 years ago
Blaž Hrastnik 4c6611f96b commands: Stop select_regex from breaking when no matches. 3 years ago
Blaž Hrastnik 0b85c16be9 ui: Share popup code with menu.
Menu is now just wrapped in a popup.
3 years ago
Blaž Hrastnik 11c4e0b053 ui: Calculate popup rendering and sizing. 3 years ago
Blaž Hrastnik 8f4ff4c646 editor: We still want to be able to calculate cursor pos. 3 years ago
Blaž Hrastnik 32f9a2d1d6 add missing fn 3 years ago
Blaž Hrastnik 857bce0e30 ui: Rework command mode, implement file path completion. 3 years ago
Blaž Hrastnik 2088c45075 commands: Implement X as extend line. 3 years ago
Blaž Hrastnik ec4dd0a176 Add a selection mode again. 3 years ago
Blaž Hrastnik 00808afe3c ui: Make editor more resilient about being shrunk too small. 3 years ago
Blaž Hrastnik 2c9b02039b commands: Implement join_selections. 3 years ago
Blaž Hrastnik 1ae7c43391 commands: = as range formatting (via lsp) 3 years ago
Blaž Hrastnik 7162632eb7 lsp: Hover documentation draft. 3 years ago
Blaž Hrastnik 8289bd1cb0 minor, fix clippy lint 3 years ago
Blaž Hrastnik 01907b3497 commands: Implement count for a few more commands. 3 years ago
Blaž Hrastnik 5fa1ba6b1c commands: refactor open_below to support count. 3 years ago
Blaž Hrastnik 87a6d4e736 minor: Simplify some code. 3 years ago
Blaž Hrastnik def949e509 open_below: drop redundant collect/into_iter. 3 years ago
Blaž Hrastnik 6cfb1acb9d commands: Implement expand_selection. 3 years ago
Blaž Hrastnik 33c67f1388 commands: add * as selection search. 3 years ago
Blaž Hrastnik 5096bdad33 completion: Use the language server bound to the document. 3 years ago
Blaž Hrastnik 9132c6a591 Make some Document fields read-only. 3 years ago
Blaž Hrastnik 7da6bd6a71 commands: Simplify some code, only calling cx.doc() once. 3 years ago
Blaž Hrastnik 7877647cf0 Allow closing individual views. 3 years ago
Blaž Hrastnik 1e1dae1c11 Remove unused method. 3 years ago
Blaž Hrastnik 8c82f8f140 indent: use_list indentation, fix indentation bug on open_below
use std::{
  time::Duration // <- pressing `o` here would use }'s indent instead of prev line
}
3 years ago
Blaž Hrastnik 7a1ff5e45f commands: Wire up toggle comments as ctrl-c 3 years ago
Blaž Hrastnik c9dd1c930e treewide: &RopeSlice -> RopeSlice. It's Copy so no reason to pass by ref 3 years ago
Blaž Hrastnik 9cac44c7c0 minor changes 3 years ago
Blaž Hrastnik c408e7e01a commands: tie in a simple :w for now. 3 years ago
Blaž Hrastnik 83d48f10ea search: Barebones implementation. 3 years ago
Blaž Hrastnik 239db79834 Finally: Retain horizontal position when moving vertically. 3 years ago
Blaž Hrastnik d4b85ce18d popup: wip work on completion popups 3 years ago
Blaž Hrastnik 30d1b7098f commands: % as select_all. 3 years ago
Blaž Hrastnik 9c33b5340a A dumb "next view" implementation that works. 3 years ago
Blaž Hrastnik 448c1abba0 View tree implementation: render multiple split views.
Cursors are still a bit buggy and we should render in focus statusbar
differently than in the other pane.
3 years ago
Blaž Hrastnik 2bea5db7bd commands: Implement select_on_matches. 3 years ago
Blaž Hrastnik a702af0aeb commands: add W and B (extend selection by word). 3 years ago
Blaž Hrastnik d9fb60e301 commands: Simplify code further via Context::doc. 3 years ago
Blaž Hrastnik 05c7fb98df Refactoring: move language_servers into Editor, proper load for doc. 3 years ago
Blaž Hrastnik 777a80917d Address clippy lints. 4 years ago
Blaž Hrastnik 7d41550a23 indent: refactor logic to be more correct.
Thanks to atom-sane-indentation, nvim-treesitter and tree-sitter-indent.el
for inspiration.
4 years ago
Blaž Hrastnik 941c34a7fc lsp: Move timeouts into client.request 4 years ago
Blaž Hrastnik b2800489de open_below is now indentation-aware. 4 years ago
Blaž Hrastnik 8b95c3353b lsp: buggy insert completion. 4 years ago
Blaž Hrastnik 6ec0f8e80f completion: Don't panic on timeout/no result, just do nothing. 4 years ago
Blaž Hrastnik 2ab069bb3f lsp: Work on syncing the state with the language server. 4 years ago
Blaž Hrastnik cd16df19c1 lsp: generate_transaction_from_text_edits 4 years ago
Blaž Hrastnik 56f2193811 Retrieve completion options on ctrl-x. 4 years ago
Blaž Hrastnik 3d3295bb75 ui: buffer picker on ctrl-b 4 years ago
Blaž Hrastnik ea502c8665 fix change -> change -> undo -> change -> undo -> undo. 4 years ago
Blaž Hrastnik d181027225 fix: undo/redo selection handling. 4 years ago
Blaž Hrastnik 25aa45e76c picker: Factor out file picker, we want to reuse code for other pickers. 4 years ago
Blaž Hrastnik 7c75ec04e8 File picker mockup, reuses the line editor work done on Prompt. 4 years ago
Blaž Hrastnik ed60866c54 Add an :o open command. 4 years ago
Blaž Hrastnik 8f0b28aeb8 Make the select prompt interactive. 4 years ago
Blaž Hrastnik 1a843b6c06 prompt: make the callback a FnOnce. 4 years ago
Blaž Hrastnik 2bfdcede32 split_selection 4 years ago
Blaž Hrastnik ed6a4c4bd2 wip: Use prompt for interactive commands. 4 years ago
Blaž Hrastnik 7dc24a25ba Move ui modules under a ui:: namespace. 4 years ago
Blaž Hrastnik ada3f92c5b wip: Getting the new prompt to render in a new layer. 4 years ago
Blaž Hrastnik 5103dc9617 move commands and keymap back to terminal.
Command needs to be able to deal with UI. We'll separate it again later
on.
4 years ago
Blaž Hrastnik 935cfeae57 Split parts of helix-term into helix-view.
It still largely depends on term for some types but I plan to change
that later.
4 years ago
Blaž Hrastnik 48330ddb5f Command needs access to view information for certain changes. 4 years ago