#editor #applications #text #real-time

nightly bin+lib duat

A Highly customizable text editor, configured through the use of a rust crate

2 releases

0.1.1 Oct 31, 2023
0.1.0 Oct 31, 2023

#376 in Text editors

41 downloads per month

AGPL-3.0-or-later

80KB
1.5K SLoC

Duat

Duat is the underworld in egyptian mythology, home to the god Osiris, where the deceased go in order to be judged, and possibly have their rights to an afterlife revoked by the weight of a feather. It is also a text editor.

Duat is a text editor that is configured through the use of a Rust crate in the user's config directory. The use of a crate for such a purpose means that the extensibility potential -- as well as my ability to add features -- is increased dramatically.

Duat, when installed, will be able to automatically detect changes in the user's configuration, and change in real time -- with a delay of a few seconds -- in order to reflect the new configuration.

It is currently a work in progress, and many features are yet to come (such as an LSP plugin...).

How to use

In order to use it, you must have cargo installed. If you do, run

cargo install duat

This will install the default version of Duat, which uses a terminal user interface. It will also create a configuration directoy in XDG_CONFIG_HOME or ~/.config/duat/. This config will have some default changes, but you can modify it as you wish. It also has some documentation explaining the basics of Duat.

Roadmap

These are the goals that have been acomplished or are on their way:

  • Implement basic visual functionality (printing, scrolling, etc);
  • Implement wrapping;
  • Implement editing;
  • Create a kak mode;
  • Implement the use of multiple cursors;
  • Implement a history system;
  • Implement colors;
  • Implement widgets and designated areas;
  • Make all of these things easy to use on a public interface;
  • Create a number line and a separator line;
  • Create a status line;
  • File switching;
  • Create a command creation interface and a command line;
  • Add the ability to frame areas;
  • Implement concealment;
  • Implement hot reloading of configuration;
  • Create a "normal editing" mode;
  • Add the ability to create hooks;
  • Create a more generalized plugin system;
  • Add floating widgets, not tied to the session layout;
  • Implement autocompletion lists;
  • Create an LSP plugin;
  • Create a vim mode;
  • Add a regex searcher (possibly a new regex-streams?!?!);

  • Create an EGUI frontend;

NOTE: These are not set in stone, and may be done out of order.

Motivation

This project was mostly created as a fun side project to occupy my time, and I was also unsatified with the current offerings of open source text editors.

Dependencies

~3–15MB
~125K SLoC