aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2014-02-18fixed array freeing using deleteRobin Haberkorn1-1/+1
* used `delete` instead of `delete[]` * don't know why this didn't cause problems (not even in valgrind)
2014-02-18comment on unused-result warning of fchown()Robin Haberkorn1-1/+5
2014-02-18removed unreliable CHR2STR() macroRobin Haberkorn4-18/+34
* referencing temporaries is unreliable/buggy in GNU C++, at least since v4.7 * in higher optimization levels it resulted in massive memory corruptions * this is responsible for the build issues (PPA build issues) * instead, always declare a buffer on the stack which guarantees that the variable lives long enough * the g_strdup(CHR2STR(x)) idiom has been replaced with String::chrdup(x)
2014-02-18use new EMCurses keyboard handler callbackRobin Haberkorn1-1/+1
* should improve performance on EMCurses/Emscripten, since no polling for key events is necessary anymore
2014-02-17sciteco emscripten sample HTML: make sure canvas is hidden if usedRobin Haberkorn1-1/+1
2014-02-16ncurses: fixed info bar at startupRobin Haberkorn1-0/+1
2014-02-16minor DOS to UNIX EOL conversionRobin Haberkorn1-28/+28
2014-02-16updated minimum required Scintilla version to v3.3.7 / Scinterm v1.2Robin Haberkorn1-0/+39
* allows us to remove most patches. One however is still necessary (Scinterm Makefile bug!) * TECO-style control code echoing is now set up using the SCI_SETREPRESENTATION message * updated copyrights * updated TODO
2014-02-16rewritten command-line completion without Glib's g_complete_ functionsRobin Haberkorn2-40/+71
* they have been marked deprecated in recent libglib versions (since v2.26) * there is no alternative in recent libglib versions, so we simply do it with a little string handling. this works with older and newer libglib versions.
2014-02-15updated Copyright to year 2014Robin Haberkorn30-30/+30
2014-02-15report stack overflows as errors & fixed ValueStack dtorRobin Haberkorn1-1/+5
* ValueStack destruction might have resulted in Segfaults at shutdown
2014-02-15all interface classes define the same type InterfaceCurrent, simplifying the ↵Robin Haberkorn4-11/+8
interface object definition * they still define their own classes (e.g. InterfaceNCurses), InterfaceCurrent is a typedef
2014-02-15catch division by zero errorsRobin Haberkorn1-8/+29
* C++ runtime does not automatically throw an exception
2014-02-15added State::StdError class for constructing errors from std::exception objectsRobin Haberkorn3-6/+19
2014-02-15use GLib's GError information to yield errorsRobin Haberkorn7-19/+27
* results in better error messages, e.g. when opening files * the case that a file to be opened (EB) exists but is not readably is handled for the first time
2014-02-15fixed Execute::macro() and Execute::file() exceptionsRobin Haberkorn2-8/+69
* might throw other exceptions that must be associated with the parent macro level's (stack frame) * add position information to "label not found" errors * Error copy constructors
2014-02-15removed most exception specifications: allow bad_allocs to propagateRobin Haberkorn12-111/+110
* specifications resulted in runtime errors (unexpected exception) when bad_alloc ocurred * specs should be used scarcely: only when the errors that may be thrown are all known and for documentary purposes
2014-02-15glib allocation functions throw std::bad_alloc exceptions now; catch all ↵Robin Haberkorn2-4/+69
bad_allocs and convert them to State::Error * will allow some degree of OOM handling * currently does not work since the exception specifications prevent bad_allocs from propagating. exception specification usage must be completely revised
2014-02-15String::get_coord() calculates line and column of a string positionRobin Haberkorn4-12/+53
* use to get line and column into a stack frame
2014-02-15added support for TECO stack tracingRobin Haberkorn6-37/+171
* when an error is thrown, stack frames are collected on clean up, up to the toplevel macro * the toplevel macro decides how to display the error * now errors in interactive and batch mode are displayed differently * in batch mode, a backtrace is displayed as a sequence of messages * Execute::file() forwards errors correctly * the correct error in the file is displayed in interactive mode * necessary to build the stack trace
2014-02-15added EMCurses/Emscripten supportRobin Haberkorn5-64/+170
by building with Emscripten support, SciTECO may be embedded into web pages. * sciteco.html is not a piece of documentation but a sample SciTECO embedding
2013-07-09fixed compilation of the GTK+ interfaceRobin Haberkorn1-1/+1
* there was a compile-time race condition that could result in the GObjects not being built (with Gob2). So I removed the symbols generation from BUILT_SOURCES. * apparently either Scintilla depends on gmodule since I last tested or the gtk+-2.0 pkg-config package no longer includes gmodule, so we must explicitly depend on it
2013-07-05only allow command-line replacements when actually editing the replacement ↵Robin Haberkorn1-0/+7
register I felt the urge to implement that after accidentally rubbing out my entire commandline (the work of an hour) just by pressing "}"...
2013-03-19avoid delete-non-virtual-dtor warning on g++ 4.7Robin Haberkorn2-0/+2
* the warning itself makes sense but in the cases reportet they were irrelevant
2013-03-19rewritten CHR2STR() using compound statementRobin Haberkorn2-3/+8
* fixes compilation on g++ 4.7 where compound literals are suddenly temporaries (from which you cannot get a pointer) * the compound statement (also GCC extension) should ensure that the string is allocated on the stack with automatic lifetime
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