aboutsummaryrefslogtreecommitdiffhomepage
path: root/README
blob: e687f6acb4cc4c8b1e9de1b06b8d775452d27c31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Overview
========

<img align="left" alt="SciTECO" src="ico/sciteco-48.png"/>
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](http://www.scintilla.org/) editor component and supports
GTK+ 3 as well as Curses frontends (using [Scinterm](http://foicica.com/scinterm/)).

The Curses frontend is verified to work with [ncurses](https://www.gnu.org/software/ncurses/),
[PDCurses/XCurses](http://pdcurses.sourceforge.net/), the
[PDCurses win32a port](http://www.projectpluto.com/win32a.htm) and
[EMCurses](https://github.com/rhaberkorn/emcurses).
Others might work as well.

Linux, Windows (MinGW 32/64) and
[Haiku](https://www.haiku-os.org/) (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](https://developer.gnome.org/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
========

* All of the basic Video TECO commands supported
* 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: supports filename completion via immediate editing commands (e.g. `<TAB>` in
  commands accepting filenames); immediate searching (similar to search-as-you-type);
  context-sensitive immediate editing commands.
  In fact almost everything is done immediately, giving immediate interactive feedback.
  Context-sensitive immediate editing commands also make it much harder to destroy a day's
  work by accident than in classic TECOs.
* Command rubout: SciTECO can even undo 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.
* Munging: Macros may be munged, that is executed in batch mode. By default, a profile
  is munged.
* 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:
* [Download Archive at Sourceforge](https://sourceforge.net/projects/sciteco/files/)
* [Github Releases](https://github.com/rhaberkorn/sciteco/releases)
* [Ubuntu PPA](https://launchpad.net/~robin-haberkorn/+archive/sciteco)
* Users of OpenWrt may try to install the
  [`sciteco` package of this feed](https://github.com/rhaberkorn/nanonote-ports).
* Yocto/OpenEmbedded users should try the
  [`sciteco` package from this layer](https://github.com/rhaberkorn/meta-rhaberkorn).
* The official [SciTECO homepage](http://sciteco.sf.net/) is a live demo.

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

Additional Documentation
========================

* There is a manpage [__sciteco__(1)](http://sciteco.sf.net/manuals/sciteco.1.html)
  describing program invocation and SciTECO's batch mode processing.
* There is a manpage [__sciteco__(7)](http://sciteco.sf.net/manuals/sciteco.7.html)
  describing SciTECO as a language.
* [Wiki at Github](https://github.com/rhaberkorn/sciteco/wiki)