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

Roadmap (October 2018) #937

Open
cmyr opened this Issue Oct 17, 2018 · 0 comments

Comments

Projects
None yet
1 participant
@cmyr
Copy link
Member

cmyr commented Oct 17, 2018

The principal focus of the next batch of work is turning xi-mac into a viable (albeit minimal) editor for daily use. To that end, the following is what I anticipate working on for the next 3-6 months:

Major Goals

Width measurement and word wrap (overview/tracking at #565):

  • remove Interval (#914): Not directly related to width measurement, but it probably isn't worth doing word wrap based on the Interval code and then removing it. (fixed in #941)
  • Incremental word wrap (#610, mostly) (note: basic word wrap working as of #943, fancy as of #1041, some polish left)
  • tracking longest line (#479): this needs a bit more thought, but it relates to word wrap in that it will share the width cache.
  • include line numbers in updates (#184) (PR #1056)

minimal language features

I've been avoiding this because doing it 'correctly' (in my estimation) involves confronting a bunch of fundamental problems about how languages are defined, the role of plugins, etc. But I'd like to be working in xi day-to-day, and the main things that bother me right now are comment toggling and manual indentation, so doing a 'good enough' implementation of this, for now, makes sense. In any case, there are two obvious approaches here; the first is to get this working through syntect metadata, and the other is to add something simple through the config system similar to what vscode does.

  • simple auto indent (#424) (PR #971)
  • comment toggling (#795) (PR #991)
  • maybe bracket matching (#647)
    • probably requires implementing edit priority (#933)

misc other projects

There are a number of projects currently being worked on by other contributors:

As well as a number of projects related to the mac client, which are out of scope here.

Getting involved

If you're interested in hacking on xi-editor, feel free to browse the issues. If you're interested in taking on something deeper, there are a number of open-ended questions and projects that could be interesting to explore:

Alternate syntax parsers (highlighters)

In xi-editor, syntax highlighting is provided by plugins. Currently there's only one such plugin, based on syntect. It would be fun to experiment with others. There are two good projects here: one is the currently broken plugin in /experimental/lang (#925), and the other would be writing a new plugin that uses tree-sitter (#753). Either of these projects would help expose any limitations of our current approach, and help us think about how best to implement full multi-plugin support.

Displaying errors, lints, and compiler output (needs issue)

This is a medium sized project that isn't really on the immediate roadmap, but would be a fun exercise for someone interested in diving a bit more deeply into xi. It would involve (probably) changes to the update protocol, as well as work in core and in the client, but it is also self-contained and can be hacked on without significantly overlapping with other work.

Toy autocorrect

This summer, @betterclever @nangtrongvuon and myself spent a bunch of time playing around with various integrations related to the Language Server Protocol. We learned a lot through that work, but I'd like to try and step back and look at language support features one by one. Autocorrect is a good place to start. I've sketched out what this would look like in #774, but I won't be revisiting this for a while; if someone wanted to take that up and try to play around with a simple autocomplete system that completes symbols in the current file, that would be a good place to start.

Performance metrics and regression tracking

At some point we will want to start more aggressively measuring and tracking performance. This is a vague, open-ended problem; but ideally we would have something like a CI system for performance, that would let us run some set of real-world benchmarks against new commits, and allow us to visualize changes over time. A good first step for this would be to create a new xi-bench crate that starts putting together these sorts of real-world benchmarks.

@cmyr cmyr added the planning label Oct 17, 2018

cmyr added a commit to cmyr/xi-editor that referenced this issue Nov 2, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes xi-editor#424
Progress on xi-editor#937

cmyr added a commit that referenced this issue Nov 2, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

cmyr added a commit that referenced this issue Nov 2, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

@cmyr cmyr referenced this issue Nov 2, 2018

Merged

Simple syntect-based autoindent #971

3 of 4 tasks complete

cmyr added a commit that referenced this issue Nov 3, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

cmyr added a commit that referenced this issue Nov 3, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

cmyr added a commit that referenced this issue Nov 6, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

cmyr added a commit that referenced this issue Nov 7, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

cmyr added a commit to cmyr/xi-editor that referenced this issue Nov 10, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes xi-editor#424
Progress on xi-editor#937

cmyr added a commit that referenced this issue Nov 13, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

cmyr added a commit that referenced this issue Nov 13, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

cmyr added a commit that referenced this issue Nov 17, 2018

Simple syntect-based autoindent
This adds support for basic autoindent, for languages supported by
syntect, through the syntect-plugin.

This implementation is not quite as fancy as Sublime's; we only use the
two most basic regex patterns, for 'increase next' and 'decrease
current' indentation level.

It is, however, actual honest-to-goodness syntax-aware auto-indent,
which is a step in the right direction.

Closes #424
Progress on #937

@cmyr cmyr referenced this issue Dec 15, 2018

Merged

Incremental word wrap initial impl #1041

3 of 4 tasks complete

@cmyr cmyr referenced this issue Dec 18, 2018

Merged

Send real line numbers with updates #1056

3 of 4 tasks complete

@cmyr cmyr pinned this issue Dec 23, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment