aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
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
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)