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

November 2017 Roadmap #437

Closed
5 of 10 tasks
raphlinus opened this issue Nov 23, 2017 · 8 comments
Closed
5 of 10 tasks

November 2017 Roadmap #437

raphlinus opened this issue Nov 23, 2017 · 8 comments
Labels

Comments

@raphlinus
Copy link
Member

raphlinus commented Nov 23, 2017

Xi was first launched in April 2016, as a promising prototype but not an editor suitable for daily work. Work since then has included essential features and also infrastructure, particularly the CRDT that supports asynchrony from plugins, and a working demo of multi-device editing on Fuchsia. In my experience, it is now close to a good basic editing experience, but not quite there. The main focus of the next few months is to push it over the line.

Performance

Much of the promise of xi is very high performance. It is currently not delivering on that promise, and in fact it has regressed in some ways. A major focus is to fix these performance problems.

Coding essentials

Raph used xi as his main editor during his sabbatical at Recurse Center and found it mostly usable but with a couple of pain points.

  • Auto-indent. TextMate/Sublime syntax definitions include info to drive an auto-indent feature, so ideally syntect would grow the ability to process these. If that will take time, the syntect plugin could use an extremely simple heuristic (same indent level as last line with a delta for { or } as the last character on the line). The plugin interface currently supports the basic functionality for a plugin to edit the text, but will need some refinement (plugin edit in the same undo group as the manual edit, finer granularity in the multi-selection case). (Auto-indentation #424)
  • Reload on file change. This has been one of my biggest pain points, as doing a git checkout followed by a save clobbers the checkout. (reload files if changed outside the editor #362, PR Watch open files for changes #538)

As xi develops, as much IDE-like functionality as possible will be implemented in plugins. There's a lot of functionality to be exposed (for example, navigating between files, including opening new ones). Over the next few months, I expect to be prototyping some of this, but it's not an immediate goal.

Fuchsia

One of the main use cases for xi is editing general purpose text on Fuchsia (for example, for email composition). Goals for the next few months include:

References

@cmyr cmyr mentioned this issue Nov 23, 2017
28 tasks
@purpleP
Copy link

purpleP commented Nov 23, 2017

@raphlinus I'm not sure you haven't considered that but making scrolling async is actually very easy. You just need to embrace it and be explicit about it. So you can just do what they do in tweets feed etc where the content could be too large to actually load and show to the user - show some spinning thing while loading new content.

@cmyr
Copy link
Member

cmyr commented Nov 23, 2017

@purpleP While that is certainly an option, our goal is to have the async stuff not be explicit; the user should not need to know or understand what's happening behind the scenes, and I think a loading wheel in a text editor would be pretty tough to swallow.

@purpleP
Copy link

purpleP commented Nov 23, 2017

@cmyr Well, if the file is big can loading take perceivably long with algorithms you use or planning to use? And if that's the case showing the wheel is the best option isn't it? You're not planning for the editor just to hang in this case, are you?

@cmyr
Copy link
Member

cmyr commented Nov 23, 2017

@purpleP Async read for large files (#197) is an eventual goal, and in that case some UI indicator that a read is in progress might be useful.

What we're talking about here is the case where we have a document already in memory, and we're just painting lines; and we would like to not miss frames, even when the frontend has to request lines from the backend, which may not have computed style information etc.

@cmyr cmyr added the planning label Nov 24, 2017
cmyr added a commit to cmyr/xi-editor that referenced this issue Dec 29, 2017
This patch adds very basic auto-indentation capability to the syntect
plugin. On a newline, we match the previous line's indentation level;
if the previous line ended in [, (, {, or :, we increase the indentation
level by one.

Progress towards xi-editor#424, xi-editor#437
cmyr added a commit to cmyr/xi-editor that referenced this issue Dec 30, 2017
This patch adds very basic auto-indentation capability to the syntect
plugin. On a newline, we match the previous line's indentation level;
if the previous line ended in [, (, {, or :, we increase the indentation
level by one.

Progress towards xi-editor#424, xi-editor#437
cmyr added a commit to cmyr/xi-editor that referenced this issue Jan 3, 2018
This patch adds very basic auto-indentation capability to the syntect
plugin. On a newline, we match the previous line's indentation level;
if the previous line ended in [, (, {, or :, we increase the indentation
level by one.

Progress towards xi-editor#424, xi-editor#437
@cmyr cmyr mentioned this issue Jan 19, 2018
@AHL96
Copy link

AHL96 commented Feb 1, 2018

Any idea if basic word completion functionality will be added?

@cmyr
Copy link
Member

cmyr commented Feb 1, 2018

@AHL96 autocomplete is not on the immediate roadmap, but would probably make the subsequent one (summer 2018?)

cmyr added a commit to cmyr/xi-editor that referenced this issue Apr 20, 2018
With this patch, edit events are not rendered to the client immediately
if there are any active plugins. Instead a render is scheduled after a
brief delay (currently 2 ms) during which window any changes received
from plugins will be batched into a single render.

Progress on xi-editor#437. Closes xi-editor#267.
cmyr added a commit to cmyr/xi-editor that referenced this issue Apr 20, 2018
With this patch, edit events are not rendered to the client immediately
if there are any active plugins. Instead a render is scheduled after a
brief delay (currently 2 ms) during which window any changes received
from plugins will be batched into a single render.

Progress on xi-editor#437. Closes xi-editor#267.
cmyr added a commit to cmyr/xi-editor that referenced this issue Apr 21, 2018
With this patch, edit events are not rendered to the client immediately
if there are any active plugins. Instead a render is scheduled after a
brief delay (currently 2 ms) during which window any changes received
from plugins will be batched into a single render.

Progress on xi-editor#437. Closes xi-editor#267.
cmyr added a commit that referenced this issue Apr 24, 2018
With this patch, edit events are not rendered to the client immediately
if there are any active plugins. Instead a render is scheduled after a
brief delay (currently 2 ms) during which window any changes received
from plugins will be batched into a single render.

Progress on #437. Closes #267.
@skywind3000
Copy link

Why is Auto-indent still unimplemented ?

@jansol
Copy link
Collaborator

jansol commented Sep 10, 2018

There actually is an implementation of it already, but it's disabled in the default config because it apparently has some problems. An improved version is currently being worked on.

@jansol jansol closed this as completed Sep 10, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants