Why another source-code editor?

I wanted a functional but light editor, language-agnostic, multi-platform, easily hackable, to browse and edit projects without storing metadata on disk.

Typical issues with other editors I tried:

  • Notepad++: win32 only, no proper dark theme (as of 2020).
  • SciTE: no proper dark theme, no project support, extensions only in Lua.
  • VS Code: tends to become bloated, caches gigabytes of whatever metadata.
  • GNOME-Builder: no block/column edition mode, caches metadata, Linux only.

On the other hand, EdiTidE has a few advantageous design aspects:

  • Good multi-platform support, thanks to the GLib/Gtk frameworks.
  • Coded in Python, that allows to hack the sources without any extra toolchain or compiler.
  • Extensions don’t require anything more than a simple *.py file.

What’s the implementation status?

The software is still beta-quality.

It’s perfectly usable (I use it daily), but definitely needs some polishing and improvements.

Is EdiTidE user-friendly?

Well, not by design. This app was done by myself for myself, so may not fit everyone’s habits.

Important is to learn the keyboard shortcuts (run help shortcuts from the command bar) and the available commands (help commands).

Extensions can be used to improve the customization.

How do I change the highlight style?

Set highlight_theme_light and highlight_theme_dark in the settings (see configuration).

Themes are managed by GtkSourceView, and are typically located under:

  • /usr/share/gtksourceview-5/styles/
  • ${XDG_DATA_HOME}/gtksourceview-5/styles/

More themes can be downloaded from GNOME Builder.

Resources:

How to support new languages?

For the syntax highlighting, it’s managed by GtkSourceView. The languages definitions are typically located under:

  • /usr/share/gtksourceview-5/language-specs/
  • ${XDG_DATA_HOME}/gtksourceview-5/language-specs/

For the symbols tree and completion, it’s provided by universal-ctags.

Resources:

I can’t see all the symbols of my source file!

Usually, ctags only reports public symbols by default, but this can be tweaked by requesting extra kinds.

As example, my personal ctags configuration, under ${HOME}/.config/ctags/custom.ctags:

--kinds-C=+Lpx
--kinds-C++=+Lpx
--map-C#=+.vala
--map-C#=+.vapi
--map-xml=+.ui
--param-CPreProcessor._expand=true

ctags configuration can also be placed in a folder .ctags.d/ at the root path of projects.

How to use the block mode?

TODO

Roadmap & future plans?

  • Rework the command-bar, to be faster and more user-friendly
  • LSP client
  • Basic debugger with DAP