Commit Graph

279 Commits (4c7cdb8feaf94e5f0ee993680fe9e26c0b9339eb)

Author SHA1 Message Date
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
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 a9a718c3ca added some tests and a line_ending helper function in document.rs 3 years ago
Jan Hrastnik 9c419fe05c added more changes from pr review for line_ending_detection 3 years ago
Jan Hrastnik 5eb6918392 resolved conflict in rebase 3 years ago
Jan Hrastnik 17f69a03e0 ran cargo clippy and cargo fmt 3 years ago
Jan Hrastnik 3756c21bae rebase on branch line_ending_detection 3 years ago
Nathan Vegdahl ecb39da3e0 Cosmetic changes and better comments for the indent auto-detect code. 4 years ago
Nathan Vegdahl 0a5580aa21 Address PR comments.
- Move char functions into their own module under helix_core.
- Use matches!() macro where appropriate.
- Use a static lifetime on indent_unit() now that we can.
4 years ago
Nathan Vegdahl 8648e483f7 Render indent-style status in status line.
Also cleaned up the status line code a little.
4 years ago
Nathan Vegdahl 5ca043c17a Fix clippy warnings. 4 years ago
Nathan Vegdahl 2329512122 Attempt to auto-detect indentation style on document load.
This also moves the primary indentation-style setting into Document.
4 years ago
Wojciech Kępka d008e86037 `Document::is_modified` should not check if path is set
If there is a new document we still want to know if there are unsaved changes
4 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>
4 years ago
Ivan Tham 7cc13fefe9 Derive debug without feature
Note that this also removed those `finish_non_exhaustive()`.
4 years ago
notoria 1a3a924634 Implement Debug for data structure as a feature 4 years ago
Kevin Sjöberg 7ef0e2cab6 Don't panic on empty document 4 years ago
Ivan Tham 82fdfdc38e Add missing newline to end of file on load
Fix #152
4 years ago
Wojciech Kępka 16b1cfa3be Add diagnostics keybindings 4 years ago
Wojciech Kępka bcb1afeb4c Add a comment to `canonicalize_path` 4 years ago
Wojciech Kępka de946d2357 Add a TODO 4 years ago
Wojciech Kępka 14f511da93 Create document if it doesn't exist on save 4 years ago
Blaž Hrastnik 06d8d3f55f Try to detect language when document file path is set
Fixes #91
4 years ago
Ivan Tham e6132f0acd Fix undo redo
I missed the fast return.

Fix #89
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
Ivan Tham f5f46b1fed Separate document history into Cell
As history is used separately from the rest of the edits, separating it
can avoid needless borrowing and cloning. But one need to be aware later.
4 years ago
Blaž Hrastnik ce25aa951e Allow setting a filepath on :write 4 years ago
Blaž Hrastnik 2c48d65b15 Format document on save 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 355ad3cb82 Tokio migration. 4 years ago
Blaž Hrastnik b0bdcab970 doc: Note about diagnostic mapping. 4 years ago
Blaž Hrastnik 28c167d71d doc: Be smarter about calculating modified status.
This way edit -> undo will properly show up as unmodified.
4 years ago
Blaž Hrastnik 3e5f24a9d5 lsp: support both utf-8 and utf-16 offsets.
Still need to implement the clangd encoding negotiation, but it's
a start. Should also manually override to utf8 for pyls.
4 years ago
Blaž Hrastnik cf7b19d711 Always update selection: Empty transactions can still change selections. 4 years ago
Blaž Hrastnik ceea5eacd8 clippy lint 4 years ago
Blaž Hrastnik 15c9a33ebc Drop doc.state. Use doc.text + doc.selections. 4 years ago
Blaž Hrastnik 6c4093c946 Weave through view_id references so that views into one file have independent selects. 4 years ago
Blaž Hrastnik 9eaef6e333 Fully drop State references. 4 years ago
Blaž Hrastnik 1b5316ea74 Track document modified state. 4 years ago
Blaž Hrastnik 742b3a709f Store intra-files jumps (goto) on the jumplist. 4 years ago
Blaž Hrastnik c1f2a14453 view: document.rs cleanup 4 years ago
Blaž Hrastnik aefafc25cd Replace Mode::Goto with just using on_next_key. 4 years ago
Blaž Hrastnik e3c4edae32 Add the machinery to load syntax config from TOML.
It's embedded into the binary at build time for now, but it's progress.
4 years ago
Blaž Hrastnik 8328fe926d Drop refcell use, make view simply ref doc.id. 4 years ago
Blaž Hrastnik 5e6716c89c Add tab_width and indent_unit config. 4 years ago
Blaž Hrastnik c331721565 Finish hiding doc.state / State as an implementation detail. 4 years ago
Blaž Hrastnik 8ba1e15d29 Expose doc.syntax() via accessor. 4 years ago
Blaž Hrastnik 2b64f49f2c Document::new should just take a rope. 4 years ago
Blaž Hrastnik e261f3c50d Expose doc.language_server as an accessor. 4 years ago
Blaž Hrastnik 59e6024186 Remove State from a few more signatures. 4 years ago
Blaž Hrastnik 8eaf9a432d Make Transaction::change only rely on the rope. 4 years ago
Blaž Hrastnik 143cfe13e0 minor: TODO comment cleanup 4 years ago
Blaž Hrastnik bb87b08fc9 Configure language servers via LanguageConfiguration. 4 years ago
Blaž Hrastnik 6cbfb050e2 lsp: Emit didSave notifications. 4 years ago
Blaž Hrastnik ec4dd0a176 Add a selection mode again. 4 years ago
Blaž Hrastnik 87a6d4e736 minor: Simplify some code. 4 years ago
Blaž Hrastnik 8b9b02f08b minor 4 years ago
Blaž Hrastnik 3b6c9648f3 fix clippy lint 4 years ago
Blaž Hrastnik 9132c6a591 Make some Document fields read-only. 4 years ago
Blaž Hrastnik d5f9622e2e lsp: edit events change ranges need to affect each other. 4 years ago
Blaž Hrastnik 1ffd1e7633 Send updates to the lsp on undo/redo. 4 years ago
Blaž Hrastnik b7da7f83c3 lsp: Test changeset_to_changes. 4 years ago
Blaž Hrastnik 777a80917d Address clippy lints. 4 years ago
Blaž Hrastnik 3cbab20908 lsp: Fix pos_to_lsp_pos calculation. 4 years ago
Blaž Hrastnik 2ab069bb3f lsp: Work on syncing the state with the language server. 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 0b63e838e0 Port over Doc::relative_path. 4 years ago
Blaž Hrastnik 39bf1ca825 Update deps. 4 years ago
Blaž Hrastnik a7869c728c wip 4 years ago
Blaž Hrastnik 3f707c19f4 Save command 4 years ago
Blaž Hrastnik eff6fac9ec clippy lint 4 years ago
Blaž Hrastnik 55fa86248c Introduce doc.selection()/set_selection() 4 years ago
Blaž Hrastnik efc5aa2016 Simplify old_state handling. 4 years ago
Blaž Hrastnik c0e17dd324 Fix undo/redo not updating the syntax tree. 4 years ago
Blaž Hrastnik b39849dde1 Refactor: Document type as a wrapper around barebones State. 4 years ago