Advanced TECO dialect and interactive screen editor based on Scintilla
Switch branches/tags
Nothing to show
Clone or download
rhaberkorn CPP lexer: support *.ino files (Arduino IDE sketches)
 * a proper Arduino lexer supporting the special Arduino keywords/classes
   could in principle be written, but for the time being they're treated
   just like regular C++ sources
Latest commit df6c898 Nov 17, 2017
Permalink
Failed to load latest commit information.
compat/bsd/sys add BSD headers for MinGW32 Nov 22, 2012
debian updated copyright to 2017 Mar 3, 2017
doc some minor Doxygen documentation improvements Mar 25, 2017
ico added 16px, 32px and 256px versions of the SciTECO PNG icon Jan 31, 2016
lib
m4 build system portability fixes Mar 3, 2017
scintilla @ aa3365e support NetBSD's curses Mar 14, 2017
src fixed memory leaks and memory measurement leaks by removing -fsized-d… Aug 24, 2017
tests fixed checks for missing left and right operands to binary operators Mar 23, 2017
.gitignore build system portability fixes Mar 3, 2017
.gitmodules updated Scintilla submodule Nov 18, 2014
AUTHORS added TODO list Jan 19, 2013
COPYING first working version of autotools based build-system Dec 4, 2012
ChangeLog bumped release version to v0.6.4, updated ChangeLog and clarify libgl… Mar 18, 2015
INSTALL
Makefile.am build system portability fixes Mar 3, 2017
NEWS first working version of autotools based build-system Dec 4, 2012
README support NetBSD's curses Mar 14, 2017
README.md first working version of autotools based build-system Dec 4, 2012
TODO
bootstrap.am build system portability fixes Mar 3, 2017
configure.ac fixed memory leaks and memory measurement leaks by removing -fsized-d… Aug 24, 2017
distribute.mk.in distribution helper script: let it be preprocessed/substituted by Aut… Feb 16, 2016
sample.teco_ini 0,8ED: Automatic case-folding of commands Mar 25, 2017
scintilla.am pass user/maintainer provided CXXFLAGS to the Scintilla build process Feb 11, 2016

README.md

Overview

SciTECO

SciTECO is an interactive TECO dialect, similar to [Video TECO](http://www.copters.com/teco.html). It also adds features from classic TECO-11, as well as unique new ideas.

The basic approach to text editing is both radically different and surprisingly similar to popular editors like Vi or EMacs. Instead of using mostly keyboard commands to modify text in a visual manner, in SciTECO you edit a program (called macro) using very few keyboard commands (called immediate editing commands). This program edits text for the user and is executed immediately, as far as possible. For instance, moving the cursor to the right can be done immediatly via the "C" command which is a part of the editor language. The language is the editor so to speak. When you delete a character from the end of the command line macro (called rubout), the side-effects of that character which may be a command or part of a command, are undone.

SciTECO uses the Scintilla editor component and supports GTK+ 3 as well as Curses frontends (using Scinterm).

The Curses frontend is verified to work with ncurses, NetBSD Curses, PDCurses/XCurses, the PDCurses win32a port and EMCurses. Others might work as well.

Linux, FreeBSD, Windows (MinGW 32/64) and Haiku (gcc4) are tested and supported. SciTECO compiles with both GCC and Clang. SciTECO should compile just fine on other UNIX-compatible platforms, like Mac OS X - however I cannot test it regularily and there is currently no Mac OS X maintainer. However UNIX-compatibility is not strictly required: Since SciTECO primarily depends on glib and some implementation of Curses, it should be easy to port to even more exotic platforms.

Warning: The SciTECO language is work in progress and has not yet fully stabilized. It may change drastically and in backwards-incompatible ways in the repository's master branch and between releases until version 1.0 is released.

Features

  • Supports most of the Video TECO commands
  • Improved parser compared to classic TECOs, making SciTECO more similar to other imperative languages.
  • Operator precedence in arithmetic expressions and an argument stack that may be modified by the user (commands may have more than two arguments)
  • Extended Q-Register namespace (arbitrary strings): Can be used to build libraries and can be abused as a data structure.
  • Make use of your keyboard's function keys by assigning them to strings inserted into the command stream. This also enables navigating with function keys (e.g. cursor keys) as demonstrated by the standard library fnkeys.tes. Function key macros can be context-sensitive, too.
  • Many TECO-11 features, like that most commands have a colon-modified form, string-building characters, exotic match characters...
  • Interactivity: Immediate searching (similar to search-as-you-type) and context-sensitive immediate editing commands. In fact almost everything is done on-the-fly, giving immediate interactive feedback. This also means that commands can fail immediately and will not even be accepted into the command line, making it harder to write incorrect interactive macros. Context-sensitive immediate editing commands also make it much harder to destroy a day's work by accident than in classic TECOs. Also, SciTECO supports many types of context-sensitive auto-completions (ie. the Tab-key): Q-Register names, file names, directories, goto labels, help topics...
  • Command rubout: SciTECO can undo almost every side effect, including file writes (EW command). This makes it even harder to destroy work by accident than in most other editors. Rubbed out commands can be re-inserted (redo).
  • Munging: Macros may be munged, that is executed in batch mode. In other words, SciTECO can be used for scripting. By default, a profile is munged.
  • Self-documenting: An integrated indexed help system allows browsing formatted documentation about commands, macros and concepts within SciTECO (? command). Macro packages can be documented with the tedoc tool, generating man pages. Man pages and GNU troff markup in general can be compiled into documents loadable by SciTECO using the grosciteco post-processor.
  • Cross platform: Builds on a wide variety of platforms. While being focused on UNIX and drawing some inspiration from it, other platforms (esp. Windows) are fully supported. It is made sure that SciTECO integrates well into all supported platforms even without an UNIX-like environment.
  • SciTECO is console and command-line friendly. Besides running under Curses and being a scripting language, it is written to be used interactively on system terminals, can be integrated into UNIX pipelines and can be extended with external command-line tools (see EC command).
  • Themeability and consistency: Color settings (or schemes) are applied consistenly across all supported platforms. Gtk+ builds allow further customization using CSS. The user interface is kept minimalistic and is consistent in spirit across the different platforms.
  • Syntax highlighting, styles, line numbers, etc. thanks to Scintilla. Low-level Scintilla commands can also be accessed to extend SciTECO.
  • A growing standard library of macros with frameworks for color schemes, syntax highlighting and buffer sessions. Optimized for hack-ability rather than completeness.

Download

There are prebuilt binary packages and source bundles for your convenience:

For more details on building from source, please refer to INSTALL.

Additional Documentation