aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2013-03-18explicitly instantiate MicroStateMachine: fixes compilation with gcc-4.4Robin Haberkorn4-7/+7
2013-03-18add check for CLang: use clang-specific warnings only when compiling with CLangRobin Haberkorn1-1/+5
* fixes gcc-4.4 which does not have -Wno-mismatched-tags and no -Wunknown-warning
2013-03-18remove all unused-attributes for parametersRobin Haberkorn5-17/+11
* compiler does not warn by default: this actually makes sense * so we don't need any unused-attributes * less GCC-extension based * on older GCCs I think -Wunused-parameters was enabled by -Wall we should add -Wno-unused-parameters if that's the case
2013-03-18declare State::Error::Error() as printf-likeRobin Haberkorn1-1/+1
2013-03-18declare all global inter-dependant objects in main.cpp and get rid of ↵Robin Haberkorn15-50/+60
init_priority attribute * we cannot use weak symbols in MinGW, so we avoid init_priority for symbol initialization by compiling the empty definitions into sciteco-minimal but the real ones into sciteco (had to add new file symbols-minimal.cpp) * this fixes compilation/linking on LLVM Clang AND Dragonegg since their init_priority attribute is broken! this will likely be fixed in the near future but broken versions will be around for some time
2013-03-18disable some bogus warnings for LLVM/ClangRobin Haberkorn1-1/+1
* -Wmismatched-tags does not appear to exist on GCC: but we need to be able to refer to classes with both struct and class keywords because of the BSD data types * -Wchar-subscripts exists on GCC and may or may not be in -Wall. We disable it since we use character literals as subscripts - they are actually of type char in C++, in contrast to C where they are of type int.
2013-03-18make sure a (void*)0 is used as sentinelsRobin Haberkorn6-12/+18
since including glib.h on LLVM-Clang (32-bit) results in NULL being redefined to 0 and compiler warnings being emitted when NULL is used as sentinels
2013-03-18prefer $HOME over passdb when looking for .teco_iniRobin Haberkorn1-1/+1
* fixes sudo sciteco: will still use the real user's .teco_ini * when run with real user as root, will look in root's home dir * use g_get_home_dir() as a fallback
2013-03-17^E\ string building character to format numberRobin Haberkorn3-14/+38
* new Expressions::format() * may be used format numbers as part of arrays (Q-Register names)
2013-03-17fixed ^EG pattern match character: use QRegSpecMachine to parse register ↵Robin Haberkorn2-3/+7
specifications * allows full Q-Reg syntax
2013-03-16make success/failure conditional tests more consistent with the definition ↵Robin Haberkorn1-3/+9
of success/failure booleans * for the S and T conditions, nothing changes effectively (were testing for < 0 already) * the F and U conditions were testing for equality to zero which worked for condition booleans returned by commands but not for any failure condition (defined as >= 0) * may be different in classic TECOs but makes more sense IMHO
2013-03-16common parent state for all file-name-expecting commands: fixes EM ↵Robin Haberkorn4-7/+17
tab-completions * StateExpectFile adds no functionality (currently), but is useful for checking state types
2013-03-16fixed: prevent accessing registers in parse-only modeRobin Haberkorn1-0/+10
* they might not already exist, yielding bogus errors * in case the register might be initialized we do not want to do so in parse-only-mode * this fix is only a workaround: currently we must return a register sind got_register() expects one and must be called to determine the next state in parse only mode * proper solution would be to better separate parsing and execution
2013-03-16documented remaining commandsRobin Haberkorn6-2/+405
* flow control and other structures have not been documented this ways. I have not yet decided whether they should be documented in separate sections or use the documentation tool.
2013-03-16completed documentation of all commands in parser.cppRobin Haberkorn1-1/+220
* also updated sciteco(7): add SEE ALSO and AUTHORS
2013-03-16documented commands ending in StateStartRobin Haberkorn1-0/+311
2013-02-25EM...$ command to read macro from file and execute immediately (just like "M")Robin Haberkorn4-1/+21
* useful for using macro libraries
2013-02-24moved QuickSort macros from symbols-extract script into own string.tes macro ↵Robin Haberkorn1-43/+1
library * therefore for bootstrapping to work, the SCITECOPATH is always set explicitly
2013-02-24cleaned up SymbolList class: make attributes privateRobin Haberkorn2-7/+13
* they were logically private but still declared public so that initializer constructor functions could access them. * instead, now use friend classes * has the side effect that initializing priority can be declared using GCC's init_priority attribute which works with earlier compilers than the constructor (with priority) attribute
2013-02-23fixed symbol lists: sort order must correspond with search order (determined ↵Robin Haberkorn3-32/+42
by comparision function) * lists were sorted lexicographically (like strcmp()), but searched caseless (like strcasecmp()) * lists are now sorted with strcasecmp()-like comparision * caselessness is thus a property of the SymbolList * use new language features in symbols-extract.tes
2013-02-22save/restore anchor position along with dot (current position) when editing ↵Robin Haberkorn2-6/+12
documents * fixes search-replace commands when function keys are used since they rely on selections not being disturbed * will also be useful later when there may be other selections
2013-02-22use typedef for SciTECO integers and make it configurable at configure timeRobin Haberkorn12-68/+78
* storage size should always be 64 (gint64) to aid macro portability * however, for performance reasons users compiling from source might explicitly compile with 32 bit integers
2013-02-22added --with-default-scitecopath config option: default value of $SCITECOPATHRobin Haberkorn1-1/+1
useful for Windows where the desired default path does not correspond with the installation dir of the std lib macros
2013-02-22resolved enter-key handling by introducing get_eol()Robin Haberkorn4-22/+19
2013-02-22function key macro support for GTK+ interfaceRobin Haberkorn2-11/+61
* also revised the way in which unhandled keys are interpreted (use gdk_keyval_to_unicode() instead of deprecated GdkEventKey::string) * keep in sync with Curses key handling
2013-02-22fixed global object initialization order issueRobin Haberkorn7-25/+53
* Scintilla is now initialized from main() using Interface::main() * Scintilla initialization depends on initialization of objects in the global namespace (otherwise the Lexer catalogue may not be filled properly and lexing may not work). Lexer modules were initialized after SciTECO interface initialization * merged Scintilla initialization (Interface::main()) with interface option parsing
2013-02-22fixed margin configuration with GTK+ interfaceRobin Haberkorn1-1/+3
* line-number style must be explicitly set, even after CLEARALLSTYLES * margin widhts are in pixels (except in Scinterm), so we must determine the pixels requiered by a number of digits (e.g. 5 digits)
2013-02-22Windows (MinGW) compatibility fixes: suspending impossible and environment ↵Robin Haberkorn2-9/+10
initialization revised * g_get_environ() appears to be broken, at least in Wine and Win2k
2013-02-22VPATH build fixes: SciTECO can now be built from a parallel source treeRobin Haberkorn1-8/+11
...which is useful when crosscompiling for MinGW
2013-02-22removed unused Red-Black tree abstractionsRobin Haberkorn1-180/+0
they didn't work and weren't really necessary either
2013-02-22clean up QRegisterTable::insert|initialize usageRobin Haberkorn3-15/+13
* distinction no longer useful since string part of register is now never pre-initialized
2013-02-22clean up QRegister vs. Buffer redundancies using TECODocument classRobin Haberkorn7-88/+234
* also encapsulates data properly (previously there were many public attributes to avoid permission issues) * new class also cares about saving/and restoring scroll state. now, buffer/q-reg edits and temporary accesses do not reset the scroll state anymore.
2013-02-22clean up SciTECO bootstrapping by building convenience libraryRobin Haberkorn1-23/+29
* pkg-config LIBS should be added to $LIBS so that link order is correct
2013-02-22use preprocessor error if no interface has been selectedRobin Haberkorn1-0/+2
this is often because of a missing "config.h" include, but puzzles me every time...
2013-02-17made UndoStack::push_msg() inlineRobin Haberkorn2-8/+6
2013-02-16fixed commandline replacementsRobin Haberkorn1-15/+16
ensure that undo tokens for first differing characters are actually associated with this character instead of the next. (resulted in strange behaviour on rubout and subsequent replacements)
2013-02-16implemented command to query ASCII code of character (^^x)Robin Haberkorn2-0/+26
2013-02-16function key support (keys without printable representation) using keyboard ↵Robin Haberkorn4-8/+59
macros * if enabled, when a function key is pressed it is looked up in Q-Registers ^F... e.g. HOME key corresponds to register ^FHOME * the string if available is inserted as if it was entered by key-presses (later it may be entered as a single input token which may be removed in a single rubout) * only NCurses currently, key names directly correspond to Curses key names * on Curses if function keys are enabled ESCAPE will be inserted after a delay (because function keys are transmitted via escape sequences). A function key macro may be used to define an alternative escape character
2013-02-15install standard macros into special standard library path (pkgdatadir/lib)Robin Haberkorn2-2/+6
* SCITECOPATH environment variable defaults to this directory * manpage updated * default teco.ini updated: no need to generate it anymore
2013-02-14hide some implementation details in MicroStateMachinesRobin Haberkorn3-19/+20
2013-02-14initialize global Q-Registers (beginning with $) with environment variablesRobin Haberkorn1-0/+23
e.g. G{$HOME} will insert the HOME environment variable
2013-02-14undo q-register table initializations (insertions) on ruboutRobin Haberkorn2-1/+24
2013-02-14option for q-reg spec state machine to allocate (insert) new q-registersRobin Haberkorn3-9/+38
* enabled for all modifying Q-Reg commands
2013-02-14use Q-Register micro state machine when parsing Q-Reg spec in ↵Robin Haberkorn2-45/+39
string-building commands * allows referring to long Q-Register names in string arguments * currently, long names specified this way use their own string building char parsing (I'm unsure whether this makes any sense)
2013-02-14undo tokens for changing an object pointerRobin Haberkorn1-0/+40
will care about the eventual deletion of the object
2013-02-14micro state machine for Q-Register specifications: allow long Q-Reg namesRobin Haberkorn2-16/+100
syntax is as follows: ["."]("#" CHR1 CHR2 | "{" STRING_BUILDING "}" | CHR1) * the short one/two char names are turned upper case, while no case folding is performed on verbose names
2013-02-14rewritten string building state machine using a common MicroStateMachine ↵Robin Haberkorn2-125/+140
base class * uses label pointers instead of state-enum and switch case (both faster and shorter to write) * common interface for all micro state machines: makes them reusable
2013-02-11properly support <CTL/Z> suspension as immediate commandRobin Haberkorn1-0/+12
see comment: special handling of <CTL/Z> in terminal might be disabled, or commandline input might be in X11 window...
2013-02-11<CTL/U> immediate editing command to rubout current string paramRobin Haberkorn1-0/+9
when not in string-state, <CTL/U> is self inserting (unlike traditional TECO where it would clear your entire commandline)
2013-02-11fixup: word-rubout may rub out nothingRobin Haberkorn1-4/+3