-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Roadmap
Zachary Yedidia edited this page Jul 2, 2020
·
4 revisions
This page is meant to provide information about what I am currently working on or planning to work on next for micro. I can't provide any dates for when these features might be implemented, and sometimes I work slowly or have to devote most of my time to other projects.
The following items are listed in order of priority.
-
Keybinding system improvements (in progress)
- Support for binding key sequences (e.g.
<Ctrl-x><Ctrl-c>
). - Support for wildcard keys in bindings. For example
<Ctrl-x><any>
would accept any event afterCtrl-x
, and in this example the action might jump to the next occurrence of the character typed afterCtrl-x
. So pressing<Ctrl-x><l>
would jump to the next occurrence ofl
, and<Ctrl-x><a>
would jump to the next occurrence ofa
, ... - Support for actions in keybindings. For example
<Ctrl-x><action>
would accept any set of events that is bound to an action afterCtrl-x
, and would execute an action that would act on the region between the original cursor and the location of the cursor after<action>
. Say<Ctrl-x><action>
is bound to a new "CopyRegion" action, then<Ctrl-x><Up>
would copy up one line, and<Ctrl-x><CtrlUp>
would copy to the start of the buffer, etc... - Support for numbers in keybindings. For example
<Ctrl-x><num><Ctrl-l>
would jump to linenum
, depending on the number that was typed in. - Keybindings local to each buffer.
- Separate keybindings for different kinds of Panes (buffers, command bar, terminal emulator...)
- Modes. Keybindings can be defined so they only take effect if a certain mode is active or inactive.
- Vim keybindings plugin.
- With the above features, the basics should be easy to implement.
- Properly replicating the behavior of
.
,Ctrl-o
(in normal mode), undo/redo, text objects, and macros will take more work.
- Support for binding key sequences (e.g.
-
Indentation-aware editing
- Very simple rules for defining when text should be auto-indented (for example, increase indent level after
{
and decrease after}
). - Ideally this will allow micro to place the cursor and paste (possibly more actions too) at the correct indentation level.
- Very simple rules for defining when text should be auto-indented (for example, increase indent level after
-
Better syntax highlighting
- Look into improvements to the current system, especially improving correctness of regions.
- Use tree-sitter (preliminary PR: #1466)
- This dependency will require cgo and make cross compiling more difficult.
- For incremental parsing, we will need to update the Go binding of tree-sitter to allow using a Go closure as a C function pointer.
- Tree-sitter does not highlight that many languages, so the existing syntax highlighter will remain as a fallback (also for people who don't like cgo).
-
Language-server protocol support
- Haven't looked into this yet.