ghalkes:~# command line tools

The Tilde Text Editor

Development

Git Repositories

Development of Tilde and the Tilde Terminal Toolkit libraries is at Github. The repositories can be found here.

The README.md in the Tilde repository has instructions on which packages are required for building, and how to build Tilde.

Design Principles

The development of Tilde is guided by the following design principles:

  • Tilde should use the same short-cuts and idoms as mainstream GUI editors. If this is not possible, due to limitations of the terminal, it should provide a reasonable substitute.
  • All actions should be available through the menus, where the short-cut (if any) must be listed. This will allow users to 1) find the action and 2) learn the short-cut. The only exception to this rule are the cursor motion and shift-selection actions.
  • All configuration options should be available through the menus.
  • Tilde should integrate with the environment as much as possible. An example of this is the X11 integration, which allows copy/paste interaction with X11 programs if Tilde is run in an X11 environment.
  • Tilde is not meant to replace GUI editors, or be an IDE. It is meant to be an easy to use fallback for GUI editors, when none are available. This is not to say that it should not provide a good set of features, but it does mean that advanced features more commonly associated with IDEs are not in the development roadmap.

Code Style

Tilde uses the Google code formatting style, with the one minor change that it uses a 100 character line length. A .clang-format file is provided in the source repository which will format the code as required. The following subsections list some further requirements, which the Google code formatting style does not define.

Empty Statements

If an empty statement is desired for a for or while loop, use {} on the same line as the for or while.

Fallthrough in a Switch

A fallthrough in a switch statement must be marked with a /* FALLTHROUGH */ comment, except if there is no code following the case statement.

Variable Declarations

Pointers are declared by prepending the name of the variable with an asterisk, not by suffixing the type with an asterisk. The same holds for the ampersant for declaring references.