Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep arrow and special keys in insert #3915

Merged
merged 5 commits into from
Oct 3, 2022

Conversation

pickfire
Copy link
Contributor

@pickfire pickfire commented Sep 20, 2022

Advanced users won't need it and is useful for beginners. Revert part of #3671.

Beginners who do not read documentation rely on these keys, having these keys reduce the effort for them to get started, we are turning down 3 groups of people without it:

  • those that have no prior experience to modal editors
  • those that does not have time/effort to read docs or dig in issues to find out how to add the worse keys
  • those that even after they read docs they don't know how to change the config (well they need an editor to do it first, and helix is an editor, so this means we force them to read the docs on how to use helix better keys to edit helix config to add the worse keys if they don't use other editors?)

But if we have it, it does not affect advanced users, but it does have a chance to make those beginners lazy to learn, but I don't think we can do much about that.

Pros

  • lower barrier of entry, groups mentioned above can use helix without much guidance, steering helix towards being usable with zero-config even for beginners
  • users new to modal editors does not need to read docs to get started if they know a couple of basic vi keys: i, esc, :wq

Cons

  • user left with less motivation to learn the better keys and stick in their comfort zone
  • we may get some weird bugs which we don't cover for in insert keys due to less usage of arrow/special keys

Alternatives

We can let users use another editor if they don't want to learn or read docs, but I don't see much harm in doing so for the existing users.

I didn't keep emacs keys because most likely they already know the better keys and they can read docs if they use emacs, so it is fine not keeping it given that the keys are similar in terms of ergonomic.

The above is just my personal opinion, I am not sure about other team members. I personally don't use these keys in both insert and normal mode.

Poll was created in #3865 some people like it, some don't like it but I know it broke someones' workflow that people search the issues and wrote an essay about it

Advanced users won't need it and is useful for beginners.
Revert part of helix-editor#3671.
```
### Insert Mode (beginners)

These keys are not recommended, it is for those who do not read documentations.
Copy link
Contributor Author

@pickfire pickfire Sep 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if we even need this line given that most likely they won't even read documentation. Not sure if we have to say there are some bugs there that are not fixed given the low usage.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should say "These keys are not recommended, but are included for new users less familiar with modal editors"

Copy link
Contributor

@aral aral Sep 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Genuinely happy to see this. Again, not for me (I’ve already added the mappings back in my config and am running from source) but in terms of the culture of the project and what it says for how new folks are welcomed. This might seem like a tiny thing but it does make a world of difference in terms of how someone feels when they’re not familiar with a new tool.

This is saying “hey, we recognise this is how nearly every other editor out there works and that you have muscle memory you’re bringing with you… that’s ok. This tool is designed with a different workflow in mind – which you’ll learn in time unless we lose you in the first 30 seconds – but we will cater for your needs to make your introduction more seamless.”

Happy to see Helix embracing a more open/welcoming approach than “our way or the highway.” I truly believe that (whether by accident or not), this is one of those things that has brought a lot of people who would otherwise not have used a modal editor to Helix.

💕

@archseer
Copy link
Member

You need to also revert the tutor change: #3865 (comment)

@dead10ck
Copy link
Member

dead10ck commented Sep 20, 2022

I think it's too soon to be reverting this. My position isn't set in stone; I've heard these arguments, and there is validity to helping new users transition, but even so, at this point I still think this

  • user left with less motivation to learn the better keys and stick in their comfort zone
  • we may get some weird bugs which we don't cover for in insert keys due to less usage of arrow/special keys

Is presently still very much a thing. I don't believe all users who like to use the arrow keys are people who are too lazy to learn their editor, but I also don't believe in making decisions to cater to such a user base. This is a different editor, and some learning is required.

It could turn out that the goal of removing them will not be accomplished, and/or it will cause more harm than is worth it. If this turns out to be the case, I will not object to reverting. But at least initially, some push back from existing users was fully expected, but we won't know the overall effect on new users until probably the couple of weeks after the next release.

However, if other maintainers also feel it's better to add them back now, I won't object then either.

Comment on lines 368 to 369
"C-left" => move_prev_word_end,
"C-right" => move_next_word_start,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's right to restore C- mappings but not the A- mappings.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Though that seems to be the nvim default so maybe it's ok

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But kakoune only supports arrow keys (no ctrl or alt mappings)

Copy link
Contributor Author

@pickfire pickfire Sep 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only added back C- keys because like other (non-modal) editors and browsers, C- is used to move between word, not A- so the familiarity comes from there.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove C-left, C-right and pageup, pagedown to match kakoune.

@archseer
Copy link
Member

overall effect on new users until probably the couple of weeks after the next release.

I think that's too late to decide, we should make the decision before the next release.

@dead10ck
Copy link
Member

overall effect on new users until probably the couple of weeks after the next release.

I think that's too late to decide, we should make the decision before the next release.

Okay. Then I'm honestly alright either way. I see both sides of it. If we revert, then maybe we can explore other ways to address the issue.

@archseer
Copy link
Member

I'm thinking we could match kakoune's insert mode: Only arrow keys and home/end, no ctrl or alt mappings: https://github.com/mawww/kakoune#33-insert-mode

@dead10ck
Copy link
Member

That sounds reasonable to me. Keep the basic bindings, but don't make the default overly cozy for staying in insert mode.

@aral
Copy link
Contributor

aral commented Sep 20, 2022

Sounds good to me too :)

Comment on lines 350 to 351
| `PageUp` | Move one page up | `page_up` |
| `PageDown` | Move one page down | `page_down` |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Page down/up will have to be removed too if we're going with only arrow keys and home/end.

Copy link
Contributor Author

@pickfire pickfire Sep 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we also support page down/up since it is one special key keyboard have that is similar to arrow keys and home/end, and it works without pressing C-? If anything, I think page up/down is more useful than home/end.

I will be keeping this for now unless other team members disagree here.

@CBenoit
Copy link
Member

CBenoit commented Sep 20, 2022

For what it’s worth, I too think simply following the minimal kakoune insert mode is very reasonable. Neither too much, nor too little, and people looking for more than the basics will find the doc at some point.

@kirawi kirawi added A-keymap Area: Keymap and keybindings S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 20, 2022
@pickfire
Copy link
Contributor Author

pickfire commented Sep 21, 2022

Is presently still very much a thing. I don't believe all users who like to use the arrow keys are people who are too lazy to learn their editor, but I also don't believe in making decisions to cater to such a user base. This is a different editor, and some learning is required.

What do you suggest for someone who starts learning helix as the first editor? How do you suggest them to open up helix as the first editor? Do we point them to use other editor to edit the config file and then come back to use helix?

Will work on the changes to add tutor and remove C- keys tonight. If anything I will try to get it done before the release.

@dead10ck
Copy link
Member

@pickfire

What do you suggest for someone who starts learning helix as the first editor? How do you suggest them to open up helix as the first editor? Do we point them to use other editor to edit the config file and then come back to use helix?

The very first thing the helix usage docs suggest is opening the tutor with hx --tutor, and the very first thing in the tutor explains hjkl. The rest is there for them to read. If they can't manage that, then I don't see any hope of them ever becoming productive with helix, arrow keys or not.

book/src/keymap.md Outdated Show resolved Hide resolved
@kirawi kirawi added S-waiting-on-review Status: Awaiting review from a maintainer. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 21, 2022
@pickfire pickfire added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from a maintainer. labels Sep 21, 2022
@NomisIV
Copy link
Contributor

NomisIV commented Sep 21, 2022

Instead of removing the arrow keys only to add them again, wouldn't it make more sense to add this as an option? I suggest it would be enabled for new users (so either no value = enabled, or no value = disabled, but the default config file enables it). That way new users can still use the arrow keys if they so wish, but more advanced users can disable them if they are unneeded. Perhaps, even a warning comment could be added to the line enabling it in the default config, suggesting the users to turn the feature off to fully get into the helix workflow. Would there be any downsides to this approach?

@the-mikedavis
Copy link
Member

wouldn't it make more sense to add this as an option?

I think it's distasteful to add a config option for anything you can accomplish with keybindings.

@NomisIV
Copy link
Contributor

NomisIV commented Sep 21, 2022

Ah, I wasn't aware it was possible to re-add the functionality by configuring the keybindings. In that case I also consider the configuration option redundant. Perhaps that option would make more sense would be if it disabled helix' modal editing completely, but that's probably outside the scope of this PR anyway.

@pickfire
Copy link
Contributor Author

Instead of removing the arrow keys only to add them again, wouldn't it make more sense to add this as an option? I suggest it would be enabled for new users (so either no value = enabled, or no value = disabled, but the default config file enables it). That way new users can still use the arrow keys if they so wish, but more advanced users can disable them if they are unneeded. Perhaps, even a warning comment could be added to the line enabling it in the default config, suggesting the users to turn the feature off to fully get into the helix workflow. Would there be any downsides to this approach?

Existing users can always disable it by adding "noop" for those keys.

@pickfire
Copy link
Contributor Author

pickfire commented Sep 22, 2022

You need to also revert the tutor change: #3865 (comment)

Regarding this, I think it is better for us to not revert the tutor change and keep it hidden. Since we are not recommending users to use it, users probably expected that it works and they can easily just try it out. Well, if they get into tutor means they want to learn the useful keys.

Note: If you want to move the cursor while in Insert mode,
you may use the arrow keys instead of exiting and
reentering Insert mode.

@pickfire pickfire removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Sep 22, 2022
@pickfire pickfire added the S-waiting-on-review Status: Awaiting review from a maintainer. label Sep 22, 2022
The last tutor page can page down multiple times and it will break the
heading on the 80x24 screen paging when reaching the last page, this
keeps the style the same and make sure page up and down won't break it.
@dylrich
Copy link
Contributor

dylrich commented Sep 23, 2022

I want to add that I think framing it as an advanced users vs. new users discussion misses that many folks who are very comfortable with modal movement sometimes use arrow keys in insert mode because it can be simply faster. On my keyboard I can reach the arrow keys easily with my pinky while on the home row, but I cannot reach the escape key without moving my left hand out of position. This means that the "activation energy" to change modes is somewhat high relative to just hitting an arrow key, so for one character movements it's a large speed gain to hit the arrow key. Granted, this greatly depends on the keyboard you have, how exactly you position your hands while typing, and even the size of your hands, but I think it's important to consider that there are legitimate reasons to want to move while in insert mode outside of the person who is simply new to the insert/normal mode split.

@dead10ck
Copy link
Member

dead10ck commented Sep 23, 2022

@dylrich that's a good point, the assumption that "advanced users" would not want to use arrow keys is not correct, though I think the issue was mostly meant to address users who would use the arrow keys exclusively, which I think would tend to be someone not very experienced with modal editors.

@aral
Copy link
Contributor

aral commented Sep 23, 2022

I mean, I don’t know if I qualify as an “advanced user” but I know I’ve been coding for 39 years (since I was 7) and I use the arrow keys ;)

Also, I feel old now :)

@pedronasser
Copy link

pedronasser commented Sep 25, 2022

I feel this kind of decision is really bad for the future of Helix, and honestly I am disappointed.
I would rather see helix remove all default keybindings instead and maybe add an argument to load the "default bindings".
By imposing these types of opinionated changes, you are clearly signaling that you don't helix to be used by anyone besides the people who already is used to the modal editing. Which is a very bad way to introducing the modal editing approach new users.
Helix should be new user friendly to a point.

But who cares? I am not a core contributor.

@archseer
Copy link
Member

From the vision doc:

Don't try to be everything for everyone. There are many great editors out there to choose from. Let's make Helix one of those great options, with its own take on things.

@pedronasser
Copy link

pedronasser commented Sep 26, 2022

From the vision doc:

Don't try to be everything for everyone. There are many great editors out there to choose from. Let's make Helix one of those great options, with its own take on things.

There's a difference between having your own take on things, and not being perfect for everything and having the minimum requirement for a text editor for a new user.
There's also a big difference between suggesting a better approach and basically requiring the user to learn by force the new approach.
Yeah, a new user could configure it before starting to use it, but if you have any experience with software you know that new users often doesn't start by the config file. And if you want to make the user always configure before using then, like I said, just remove all default bindings and be clear about that in the doc and maybe also remove the "A post-modern modal text editor" part from it.

@dead10ck
Copy link
Member

@pedronasser

having the minimum requirement for a text editor for a new user

Big assumption on your part to presume that you know what new users need.

Yeah, a new user could configure it before starting to use it, but if you have any experience with software you know that new users often doesn't start by the config file

Or, you could spend the time to read the docs, and practice the editing style. The very first page of the Usage docs suggest reading through the tutor. I don't know about you or anyone else, but whenever I use a new tool, reading docs is the first thing I do. Yes, this requires more work up front. Maybe this comes down to individuals' learning styles, but I personally tend to front-load and do my learning first. I don't want to speak for anyone, but perhaps it's possible this conflict is coming from people who tend to like to learn by doing first, and only read when they get stuck.

But modal editing is different than modeless editing. It is sufficiently different that this will not work. You will not get by on previous experience, arrow keys or not.

@archseer archseer merged commit 3d59d3f into helix-editor:master Oct 3, 2022
@pickfire pickfire deleted the easy-keys branch October 4, 2022 16:21
pathwave pushed a commit to pathwave/helix that referenced this pull request Nov 6, 2022
* Keep arrow and special keys in insert

Advanced users won't need it and is useful for beginners.
Revert part of helix-editor#3671.

* Change text for insert mode section

Co-authored-by: Blaž Hrastnik <[email protected]>

* Remove ctrl-up/down in insert

* Reorganize insert keys and docs

* Improve page up experience on last tutor

The last tutor page can page down multiple times and it will break the
heading on the 80x24 screen paging when reaching the last page, this
keeps the style the same and make sure page up and down won't break it.

Co-authored-by: Blaž Hrastnik <[email protected]>
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Dec 7, 2022
Rework the pkgsrc infrastructure to simplify tree-sitter-depends.mk, rewrite
the awk script to simplify things and support regular awk, and put it in the
usual place.  Also add support for Darwin (where this was tested).

# 22.12 (2022-12-06)

This is a great big release filled with changes from a 99 contributors. A big _thank you_ to you all!

As usual, the following is a summary of each of the changes since the last release.
For the full log, check out the [git log](https://github.com/helix-editor/helix/compare/22.08.1..22.12).

Breaking changes:

- Remove readline-like navigation bindings from the default insert mode keymap ([e12690e](helix-editor/helix@e12690e), [#3811](helix-editor/helix#3811), [#3827](helix-editor/helix#3827), [#3915](helix-editor/helix#3915), [#4088](helix-editor/helix#4088))
- Rename `append_to_line` as `insert_at_line_end` and `prepend_to_line` as `insert_at_line_start` ([#3753](helix-editor/helix#3753))
- Swap diagnostic picker and debug mode bindings in the space keymap ([#4229](helix-editor/helix#4229))
- Select newly inserted text on paste or from shell commands ([#4458](helix-editor/helix#4458), [#4608](helix-editor/helix#4608), [#4619](helix-editor/helix#4619), [#4824](helix-editor/helix#4824))
- Select newly inserted surrounding characters on `ms<char>` ([#4752](helix-editor/helix#4752))
- Exit select-mode after executing `replace_*` commands ([#4554](helix-editor/helix#4554))
- Exit select-mode after executing surround commands ([#4858](helix-editor/helix#4858))
- Change tree-sitter text-object keys ([#3782](helix-editor/helix#3782))
- Rename `fleetish` theme to `fleet_dark` ([#4997](helix-editor/helix#4997))

Features:

- Bufferline ([#2759](helix-editor/helix#2759))
- Support underline styles and colors ([#4061](helix-editor/helix#4061), [98c121c](helix-editor/helix@98c121c))
- Inheritance for themes ([#3067](helix-editor/helix#3067), [#4096](helix-editor/helix#4096))
- Cursorcolumn ([#4084](helix-editor/helix#4084))
- Overhauled system for writing files and quiting ([#2267](helix-editor/helix#2267), [#4397](helix-editor/helix#4397))
- Autosave when terminal loses focus ([#3178](helix-editor/helix#3178))
- Use OSC52 as a fallback for the system clipboard ([#3220](helix-editor/helix#3220))
- Show git diffs in the gutter ([#3890](helix-editor/helix#3890), [#5012](helix-editor/helix#5012), [#4995](helix-editor/helix#4995))
- Add a logo ([dc1ec56](helix-editor/helix@dc1ec56))
- Multi-cursor completion ([#4496](helix-editor/helix#4496))

Commands:

- `file_picker_in_current_directory` (`<space>F`) ([#3701](helix-editor/helix#3701))
- `:lsp-restart` to restart the current document's language server ([#3435](helix-editor/helix#3435), [#3972](helix-editor/helix#3972))
- `join_selections_space` (`A-j`) which joins selections and selects the joining whitespace ([#3549](helix-editor/helix#3549))
- `:update` to write the current file if it is modified ([#4426](helix-editor/helix#4426))
- `:lsp-workspace-command` for picking LSP commands to execute ([#3140](helix-editor/helix#3140))
- `extend_prev_word_end` - the extend variant for `move_prev_word_end` ([7468fa2](helix-editor/helix@7468fa2))
- `make_search_word_bounded` which adds regex word boundaries to the current search register value ([#4322](helix-editor/helix#4322))
- `:reload-all` - `:reload` for all open buffers ([#4663](helix-editor/helix#4663), [#4901](helix-editor/helix#4901))
- `goto_next_change` (`]g`), `goto_prev_change` (`[g`), `goto_first_change` (`[G`), `goto_last_change` (`]G`) textobjects for jumping between VCS changes ([#4650](helix-editor/helix#4650))

Usability improvements and fixes:

- Don't log 'LSP not defined' errors in the logfile ([1caba2d](helix-editor/helix@1caba2d))
- Look for the external formatter program before invoking it ([#3670](helix-editor/helix#3670))
- Don't send LSP didOpen events for documents without URLs ([44b4479](helix-editor/helix@44b4479))
- Fix off-by-one in `extend_line_above` command ([#3689](helix-editor/helix#3689))
- Use the original scroll offset when opening a split ([1acdfaa](helix-editor/helix@1acdfaa))
- Handle auto-formatting failures and save the file anyway ([#3684](helix-editor/helix#3684))
- Ensure the cursor is in view after `:reflow` ([#3733](helix-editor/helix#3733))
- Add default rulers and reflow config for git commit messages ([#3738](helix-editor/helix#3738))
- Improve grammar fetching and building output ([#3773](helix-editor/helix#3773))
- Add a `text` language to language completion ([cc47d3f](helix-editor/helix@cc47d3f))
- Improve error handling for `:set-language` ([e8add6f](helix-editor/helix@e8add6f))
- Improve error handling for `:config-reload` ([#3668](helix-editor/helix#3668))
- Improve error handling when passing improper ranges to syntax highlighting ([#3826](helix-editor/helix#3826))
- Render `<code>` tags as raw markup in markdown ([#3425](helix-editor/helix#3425))
- Remove border around the LSP code-actions popup ([#3444](helix-editor/helix#3444))
- Canonicalize the path to the runtime directory ([#3794](helix-editor/helix#3794))
- Add a `themelint` xtask for linting themes ([#3234](helix-editor/helix#3234))
- Re-sort LSP diagnostics after applying transactions ([#3895](helix-editor/helix#3895), [#4319](helix-editor/helix#4319))
- Add a command-line flag to specify the log file ([#3807](helix-editor/helix#3807))
- Track source and tag information in LSP diagnostics ([#3898](helix-editor/helix#3898), [1df32c9](helix-editor/helix@1df32c9))
- Fix theme returning to normal when exiting the `:theme` completion ([#3644](helix-editor/helix#3644))
- Improve error messages for invalid commands in the keymap ([#3931](helix-editor/helix#3931))
- Deduplicate regexs in `search_selection` command ([#3941](helix-editor/helix#3941))
- Split the finding of LSP root and config roots ([#3929](helix-editor/helix#3929))
- Ensure that the cursor is within view after auto-formatting ([#4047](helix-editor/helix#4047))
- Add pseudo-pending to commands with on-next-key callbacks ([#4062](helix-editor/helix#4062), [#4077](helix-editor/helix#4077))
- Add live preview to `:goto` ([#2982](helix-editor/helix#2982))
- Show regex compilation failure in a popup ([#3049](helix-editor/helix#3049))
- Add 'cycled to end' and 'no more matches' for search ([#3176](helix-editor/helix#3176), [#4101](helix-editor/helix#4101))
- Add extending behavior to tree-sitter textobjects ([#3266](helix-editor/helix#3266))
- Add `ui.gutter.selected` option for themes ([#3303](helix-editor/helix#3303))
- Make statusline mode names configurable ([#3311](helix-editor/helix#3311))
- Add a statusline element for total line count ([#3960](helix-editor/helix#3960))
- Add extending behavior to `goto_window_*` commands ([#3985](helix-editor/helix#3985))
- Fix a panic in signature help when the preview is too large ([#4030](helix-editor/helix#4030))
- Add command names to the command palette ([#4071](helix-editor/helix#4071), [#4223](helix-editor/helix#4223), [#4495](helix-editor/helix#4495))
- Find the LSP workspace root from the current document's path ([#3553](helix-editor/helix#3553))
- Add an option to skip indent-guide levels ([#3819](helix-editor/helix#3819), [2c36e33](helix-editor/helix@2c36e33))
- Change focus to modified docs on quit ([#3872](helix-editor/helix#3872))
- Respond to `USR1` signal by reloading config ([#3952](helix-editor/helix#3952))
- Exit gracefully when the close operation fails ([#4081](helix-editor/helix#4081))
- Fix goto/view center mismatch ([#4135](helix-editor/helix#4135))
- Highlight the current file picker document on idle-timeout ([#3172](helix-editor/helix#3172), [a85e386](helix-editor/helix@a85e386))
- Apply transactions to jumplist selections ([#4186](helix-editor/helix#4186), [#4227](helix-editor/helix#4227), [#4733](helix-editor/helix#4733), [#4865](helix-editor/helix#4865), [#4912](helix-editor/helix#4912), [#4965](helix-editor/helix#4965), [#4981](helix-editor/helix#4981))
- Use space as a separator for fuzzy matcher ([#3969](helix-editor/helix#3969))
- Overlay all diagnostics with highest severity on top ([#4113](helix-editor/helix#4113))
- Avoid re-parsing unmodified tree-sitter injections ([#4146](helix-editor/helix#4146))
- Add extending captures for indentation, re-enable python indentation ([#3382](helix-editor/helix#3382), [3e84434](helix-editor/helix@3e84434))
- Only allow either `--vsplit` or `--hsplit` CLI flags at once ([#4202](helix-editor/helix#4202))
- Fix append cursor location when selection anchor is at the end of the document ([#4147](helix-editor/helix#4147))
- Improve selection yanking message ([#4275](helix-editor/helix#4275))
- Log failures to load tree-sitter grammars as errors ([#4315](helix-editor/helix#4315))
- Fix rendering of lines longer than 65,536 columns ([#4172](helix-editor/helix#4172))
- Skip searching `.git` in `global_search` ([#4334](helix-editor/helix#4334))
- Display tree-sitter scopes in a popup ([#4337](helix-editor/helix#4337))
- Fix deleting a word from the end of the buffer ([#4328](helix-editor/helix#4328))
- Pretty print the syntax tree in `:tree-sitter-subtree` ([#4295](helix-editor/helix#4295), [#4606](helix-editor/helix#4606))
- Allow specifying suffixes for file-type detection ([#2455](helix-editor/helix#2455), [#4414](helix-editor/helix#4414))
- Fix multi-byte auto-pairs ([#4024](helix-editor/helix#4024))
- Improve sort scoring for LSP code-actions and completions ([#4134](helix-editor/helix#4134))
- Fix the handling of quotes within shellwords ([#4098](helix-editor/helix#4098))
- Fix `delete_word_backward` and `delete_word_forward` on newlines ([#4392](helix-editor/helix#4392))
- Fix 'no entry found for key' crash on `:write-all` ([#4384](helix-editor/helix#4384))
- Remove lowercase requirement for tree-sitter grammars ([#4346](helix-editor/helix#4346))
- Resolve LSP completion items on idle-timeout ([#4406](helix-editor/helix#4406), [#4797](helix-editor/helix#4797))
- Render diagnostics in the file picker preview ([#4324](helix-editor/helix#4324))
- Fix terminal freezing on `shell_insert_output` ([#4156](helix-editor/helix#4156))
- Allow use of the count in the repeat operator (`.`) ([#4450](helix-editor/helix#4450))
- Show the current theme name on `:theme` with no arguments ([#3740](helix-editor/helix#3740))
- Fix rendering in very large terminals ([#4318](helix-editor/helix#4318))
- Sort LSP preselected items to the top of the completion menu ([#4480](helix-editor/helix#4480))
- Trim braces and quotes from paths in goto-file ([#4370](helix-editor/helix#4370))
- Prevent automatic signature help outside of insert mode ([#4456](helix-editor/helix#4456))
- Fix freezes with external programs that process stdin and stdout concurrently ([#4180](helix-editor/helix#4180))
- Make `scroll` aware of tabs and wide characters ([#4519](helix-editor/helix#4519))
- Correctly handle escaping in `command_mode` completion ([#4316](helix-editor/helix#4316), [#4587](helix-editor/helix#4587), [#4632](helix-editor/helix#4632))
- Fix `delete_char_backward` for paired characters ([#4558](helix-editor/helix#4558))
- Fix crash from two windows editing the same document ([#4570](helix-editor/helix#4570))
- Fix pasting from the blackhole register ([#4497](helix-editor/helix#4497))
- Support LSP insertReplace completion items ([1312682](helix-editor/helix@1312682))
- Dynamically resize the line number gutter width ([#3469](helix-editor/helix#3469))
- Fix crash for unknown completion item kinds ([#4658](helix-editor/helix#4658))
- Re-enable `format_selections` for single selection ranges ([d4f5cab](helix-editor/helix@d4f5cab))
- Limit the number of in-progress tree-sitter query matches ([#4707](helix-editor/helix#4707), [#4830](helix-editor/helix#4830))
- Use the special `#` register with `increment`/`decrement` to change by range number ([#4418](helix-editor/helix#4418))
- Add a statusline element to show number of selected chars ([#4682](helix-editor/helix#4682))
- Add a statusline element showing global LSP diagnostic warning and error counts ([#4569](helix-editor/helix#4569))
- Add a scrollbar to popups ([#4449](helix-editor/helix#4449))
- Prefer shorter matches in fuzzy matcher scoring ([#4698](helix-editor/helix#4698))
- Use key-sequence format for command palette keybinds ([#4712](helix-editor/helix#4712))
- Remove prefix filtering from autocompletion menu ([#4578](helix-editor/helix#4578))
- Focus on the parent buffer when closing a split ([#4766](helix-editor/helix#4766))
- Handle language server termination ([#4797](helix-editor/helix#4797), [#4852](helix-editor/helix#4852))
- Allow `r`/`t`/`f` to work on tab characters ([#4817](helix-editor/helix#4817))
- Show a preview for scratch buffers in the buffer picker ([#3454](helix-editor/helix#3454))
- Set a limit of entries in the jumplist ([#4750](helix-editor/helix#4750))
- Re-use shell outputs when inserting or appending shell output ([#3465](helix-editor/helix#3465))
- Check LSP server provider capabilities ([#3554](helix-editor/helix#3554))
- Improve tree-sitter parsing performance on files with many language layers ([#4716](helix-editor/helix#4716))
- Move indentation to the next line when using `<ret>` on a line with only whitespace ([#4854](helix-editor/helix#4854))
- Remove selections for closed views from all documents ([#4888](helix-editor/helix#4888))
- Improve performance of the `:reload` command ([#4457](helix-editor/helix#4457))
- Properly handle media keys ([#4887](helix-editor/helix#4887))
- Support LSP diagnostic data field ([#4935](helix-editor/helix#4935))
- Handle C-i keycode as tab ([#4961](helix-editor/helix#4961))
- Fix view alignment for jumplist picker jumps ([#3743](helix-editor/helix#3743))
- Use OSC52 for tmux clipboard provider ([#5027](helix-editor/helix#5027))

Themes:

- Add `varua` ([#3610](helix-editor/helix#3610), [#4964](helix-editor/helix#4964))
- Update `boo_berry` ([#3653](helix-editor/helix#3653))
- Add `rasmus` ([#3728](helix-editor/helix#3728))
- Add `papercolor_dark` ([#3742](helix-editor/helix#3742))
- Update `monokai_pro_spectrum` ([#3814](helix-editor/helix#3814))
- Update `nord` ([#3792](helix-editor/helix#3792))
- Update `fleetish` ([#3844](helix-editor/helix#3844), [#4487](helix-editor/helix#4487), [#4813](helix-editor/helix#4813))
- Update `flatwhite` ([#3843](helix-editor/helix#3843))
- Add `darcula` ([#3739](helix-editor/helix#3739))
- Update `papercolor` ([#3938](helix-editor/helix#3938), [#4317](helix-editor/helix#4317))
- Add bufferline colors to multiple themes ([#3881](helix-editor/helix#3881))
- Add `gruvbox_dark_hard` ([#3948](helix-editor/helix#3948))
- Add `onedarker` ([#3980](helix-editor/helix#3980), [#4060](helix-editor/helix#4060))
- Add `dark_high_contrast` ([#3312](helix-editor/helix#3312))
- Update `bogster` ([#4121](helix-editor/helix#4121), [#4264](helix-editor/helix#4264))
- Update `sonokai` ([#4089](helix-editor/helix#4089))
- Update `ayu_*` themes ([#4140](helix-editor/helix#4140), [#4109](helix-editor/helix#4109), [#4662](helix-editor/helix#4662), [#4764](helix-editor/helix#4764))
- Update `everforest` ([#3998](helix-editor/helix#3998))
- Update `monokai_pro_octagon` ([#4247](helix-editor/helix#4247))
- Add `heisenberg` ([#4209](helix-editor/helix#4209))
- Add `bogster_light` ([#4265](helix-editor/helix#4265))
- Update `pop-dark` ([#4323](helix-editor/helix#4323))
- Update `rose_pine` ([#4221](helix-editor/helix#4221))
- Add `kanagawa` ([#4300](helix-editor/helix#4300))
- Add `hex_steel`, `hex_toxic` and `hex_lavendar` ([#4367](helix-editor/helix#4367), [#4990](helix-editor/helix#4990))
- Update `tokyonight` and `tokyonight_storm` ([#4415](helix-editor/helix#4415))
- Update `gruvbox` ([#4626](helix-editor/helix#4626))
- Update `dark_plus` ([#4661](helix-editor/helix#4661), [#4678](helix-editor/helix#4678))
- Add `zenburn` ([#4613](helix-editor/helix#4613), [#4977](helix-editor/helix#4977))
- Update `monokai_pro` ([#4789](helix-editor/helix#4789))
- Add `mellow` ([#4770](helix-editor/helix#4770))
- Add `nightfox` ([#4769](helix-editor/helix#4769), [#4966](helix-editor/helix#4966))
- Update `doom_acario_dark` ([#4979](helix-editor/helix#4979))
- Update `autumn` ([#4996](helix-editor/helix#4996))
- Update `acme` ([#4999](helix-editor/helix#4999))
- Update `nord_light` ([#4999](helix-editor/helix#4999))
- Update `serika_*` ([#5015](helix-editor/helix#5015))

LSP configurations:

- Switch to `openscad-lsp` for OpenScad ([#3750](helix-editor/helix#3750))
- Support Jsonnet ([#3748](helix-editor/helix#3748))
- Support Markdown ([#3499](helix-editor/helix#3499))
- Support Bass ([#3771](helix-editor/helix#3771))
- Set roots configuration for Elixir and HEEx ([#3917](helix-editor/helix#3917), [#3959](helix-editor/helix#3959))
- Support Purescript ([#4242](helix-editor/helix#4242))
- Set roots configuration for Julia ([#4361](helix-editor/helix#4361))
- Support D ([#4372](helix-editor/helix#4372))
- Increase default language server timeout for Julia ([#4575](helix-editor/helix#4575))
- Use ElixirLS for HEEx ([#4679](helix-editor/helix#4679))
- Support Bicep ([#4403](helix-editor/helix#4403))
- Switch to `nil` for Nix ([433ccef](helix-editor/helix@433ccef))
- Support QML ([#4842](helix-editor/helix#4842))
- Enable auto-format for CSS ([#4987](helix-editor/helix#4987))
- Support CommonLisp ([4176769](helix-editor/helix@4176769))

New languages:

- SML ([#3692](helix-editor/helix#3692))
- Jsonnet ([#3714](helix-editor/helix#3714))
- Godot resource ([#3759](helix-editor/helix#3759))
- Astro ([#3829](helix-editor/helix#3829))
- SSH config ([#2455](helix-editor/helix#2455), [#4538](helix-editor/helix#4538))
- Bass ([#3771](helix-editor/helix#3771))
- WAT (WebAssembly text format) ([#4040](helix-editor/helix#4040), [#4542](helix-editor/helix#4542))
- Purescript ([#4242](helix-editor/helix#4242))
- D ([#4372](helix-editor/helix#4372), [#4562](helix-editor/helix#4562))
- VHS ([#4486](helix-editor/helix#4486))
- KDL ([#4481](helix-editor/helix#4481))
- XML ([#4518](helix-editor/helix#4518))
- WIT ([#4525](helix-editor/helix#4525))
- ENV ([#4536](helix-editor/helix#4536))
- INI ([#4538](helix-editor/helix#4538))
- Bicep ([#4403](helix-editor/helix#4403), [#4751](helix-editor/helix#4751))
- QML ([#4842](helix-editor/helix#4842))
- CommonLisp ([4176769](helix-editor/helix@4176769))

Updated languages and queries:

- Zig ([#3621](helix-editor/helix#3621), [#4745](helix-editor/helix#4745))
- Rust ([#3647](helix-editor/helix#3647), [#3729](helix-editor/helix#3729), [#3927](helix-editor/helix#3927), [#4073](helix-editor/helix#4073), [#4510](helix-editor/helix#4510), [#4659](helix-editor/helix#4659), [#4717](helix-editor/helix#4717))
- Solidity ([20ed8c2](helix-editor/helix@20ed8c2))
- Fish ([#3704](helix-editor/helix#3704))
- Elixir ([#3645](helix-editor/helix#3645), [#4333](helix-editor/helix#4333), [#4821](helix-editor/helix#4821))
- Diff ([#3708](helix-editor/helix#3708))
- Nix ([665e27f](helix-editor/helix@665e27f), [1fe3273](helix-editor/helix@1fe3273))
- Markdown ([#3749](helix-editor/helix#3749), [#4078](helix-editor/helix#4078), [#4483](helix-editor/helix#4483), [#4478](helix-editor/helix#4478))
- GDScript ([#3760](helix-editor/helix#3760))
- JSX and TSX ([#3853](helix-editor/helix#3853), [#3973](helix-editor/helix#3973))
- Ruby ([#3976](helix-editor/helix#3976), [#4601](helix-editor/helix#4601))
- R ([#4031](helix-editor/helix#4031))
- WGSL ([#3996](helix-editor/helix#3996), [#4079](helix-editor/helix#4079))
- C# ([#4118](helix-editor/helix#4118), [#4281](helix-editor/helix#4281), [#4213](helix-editor/helix#4213))
- Twig ([#4176](helix-editor/helix#4176))
- Lua ([#3552](helix-editor/helix#3552))
- C/C++ ([#4079](helix-editor/helix#4079), [#4278](helix-editor/helix#4278), [#4282](helix-editor/helix#4282))
- Cairo ([17488f1](helix-editor/helix@17488f1), [431f9c1](helix-editor/helix@431f9c1), [09a6df1](helix-editor/helix@09a6df1))
- Rescript ([#4356](helix-editor/helix#4356))
- Zig ([#4409](helix-editor/helix#4409))
- Scala ([#4353](helix-editor/helix#4353), [#4697](helix-editor/helix#4697), [#4701](helix-editor/helix#4701))
- LaTeX ([#4528](helix-editor/helix#4528), [#4922](helix-editor/helix#4922))
- SQL ([#4529](helix-editor/helix#4529))
- Python ([#4560](helix-editor/helix#4560))
- Bash/Zsh ([#4582](helix-editor/helix#4582))
- Nu ([#4583](helix-editor/helix#4583))
- Julia ([#4588](helix-editor/helix#4588))
- Typescript ([#4703](helix-editor/helix#4703))
- Meson ([#4572](helix-editor/helix#4572))
- Haskell ([#4800](helix-editor/helix#4800))
- CMake ([#4809](helix-editor/helix#4809))
- HTML ([#4829](helix-editor/helix#4829), [#4881](helix-editor/helix#4881))
- Java ([#4886](helix-editor/helix#4886))
- Go ([#4906](helix-editor/helix#4906), [#4969](helix-editor/helix#4969), [#5010](helix-editor/helix#5010))
- CSS ([#4882](helix-editor/helix#4882))
- Racket ([#4915](helix-editor/helix#4915))
- SCSS ([#5003](helix-editor/helix#5003))

Packaging:

- Filter relevant source files in the Nix flake ([#3657](helix-editor/helix#3657))
- Build a binary for `aarch64-linux` in the release CI ([038a91d](helix-editor/helix@038a91d))
- Build an AppImage for `aarch64-linux` in the release CI ([b738031](helix-editor/helix@b738031))
- Enable CI builds for `riscv64-linux` ([#3685](helix-editor/helix#3685))
- Support preview releases in CI ([0090a2d](helix-editor/helix@0090a2d))
- Strip binaries built in CI ([#3780](helix-editor/helix#3780))
- Fix the development shell for the Nix Flake on `aarch64-darwin` ([#3810](helix-editor/helix#3810))
- Raise the MSRV and create an MSRV policy ([#3896](helix-editor/helix#3896), [#3913](helix-editor/helix#3913), [#3961](helix-editor/helix#3961))
- Fix Fish completions for `--config` and `--log` flags ([#3912](helix-editor/helix#3912))
- Use builtin filenames option in Bash completion ([#4648](helix-editor/helix#4648))
herkhinah pushed a commit to herkhinah/helix that referenced this pull request Dec 11, 2022
* Keep arrow and special keys in insert

Advanced users won't need it and is useful for beginners.
Revert part of helix-editor#3671.

* Change text for insert mode section

Co-authored-by: Blaž Hrastnik <[email protected]>

* Remove ctrl-up/down in insert

* Reorganize insert keys and docs

* Improve page up experience on last tutor

The last tutor page can page down multiple times and it will break the
heading on the 80x24 screen paging when reaching the last page, this
keeps the style the same and make sure page up and down won't break it.

Co-authored-by: Blaž Hrastnik <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-keymap Area: Keymap and keybindings S-waiting-on-review Status: Awaiting review from a maintainer.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet