aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2014-11-10support new "~" conditional: useful for implying default parameters in macrosRobin Haberkorn1-6/+17
2014-11-10fixed EG command: make sure to reset the register argument on termination,Robin Haberkorn1-0/+2
else the next EC command will not work as expected or even crash
2014-11-09fixed EC command for negative line rangesRobin Haberkorn1-0/+6
2014-11-09allow "-EC" command even though we do not generally imply the sign prefixRobin Haberkorn1-3/+13
2014-11-09revised U command: fail if no argument is providedRobin Haberkorn2-5/+30
* there is no reasonable default value for U * omitting the parameter for U might be a frequent programming error * U can be colon-modified now, in which case it may be used * to check for the presence of arguments in macros
2014-11-09fixed undoing of initial TECO document changesRobin Haberkorn1-0/+3
* the TECODocument::undo_edit() function is called before TECODocument::edit() and the Scintilla document might still be unitialized * fixes e.g. undoing of Xq, ^Uq on registers whose string part has not being used before
2014-11-09current_doc_must_undo(): check for undo-necessity when operating on the ↵Robin Haberkorn3-19/+44
current document if the current document is a local q-register from a macro call, we must not generate undo tokens, since the local documents are discarded on macro termination.
2014-11-09prevent assertions when pushing operators without corresponding operandsRobin Haberkorn1-4/+14
instead throw an error. The error could theoretically be thrown earlier instead of only when trying to perform a calculation. test cases: "++", "+1+", etc.
2014-11-09documented EC and EG commandsRobin Haberkorn2-0/+108
2014-11-09TAB-completion for EC commandRobin Haberkorn1-2/+13
behaves just like ^T in string arguments. later we might add special Bash-completion support
2014-11-09added EG command: pipe from buffer into Q-RegisterRobin Haberkorn3-7/+45
2014-11-09implemented EC command (execute operating system command) in spawn.cppRobin Haberkorn6-1/+428
powerful command for filtering a SciTECO buffer through an external program. It will be described in the sciteco(7) man pages. The implementation uses an asynchronous background process with pipes but is platform independant thanks to glib's g_spawn functions, GIOChannels and event loops. There are however platform differences in how the operating system command is interpreted/parsed.
2014-11-02changed syntax for long Q-Register names: use [] brackets instead of {}Robin Haberkorn2-5/+5
this breaks many existing scripts, and means you may have to rebuild SciTECO with ./configure --enable-bootstrap The syntax of SciTECO might change in backwards-incompatible until version 1.0 is released.
2014-11-01fixed reversing EW (save as)Robin Haberkorn1-23/+22
when the file name changes, there will no longer be a use-less save point file. instead the new file is deleted upon rubout. * save points are properly created if a file already exists with the same name, even though it was not known to SciTECO before the save. (e.g. you do save-as to a file that already exists). * more effects of the save command can now be rubbed out correctly
2014-10-07Merge branch 'master' of https://github.com/rhaberkorn/scitecoRobin Haberkorn1-0/+1
2014-08-22automatically build Scintilla as part of SciTECO's build system:Robin Haberkorn1-0/+1
this should simplify building SciTECO for new users * compiler and archiver are passed down from Autoconf, so cross-compiling should work transparently * `make clean` will also clean the Scintilla source tree * there is no longer any need for "source bundles" as tar balls also contain Scintilla/Scinterm now * building from Git is not much more difficult than building from a tar ball * The versions of Scintilla/Scinterm embedded as submodules already contain all the patches necessary (currently none are necessary), so there's no need to have patch files in the repository * INSTALL instructions have been rewritten * the --with-scintilla and --with-scinterm site-config options have been kept. But they should be rarely necessary now.
2014-08-02don't abort on unexpected semicolon (break from loop)Robin Haberkorn1-1/+3
the question remains what to do then. FIXME: consult TECO standard
2014-08-02ensure that expressions.eval(true) pops the brace "operator"Robin Haberkorn1-3/+2
test case: 1<()> * an empty brace (or content that does not leave anything on the stack) resulted in the brace op to be left on the stack which makes the op stack inconsistent
2014-04-25avoid narrowing-conversion warning in C++11Robin Haberkorn1-1/+1
* as of gcc 4.7.2, -Wnarrowing is in -Wall
2014-04-25added generated symbols (symbols-*.cpp) to CLEANFILESRobin Haberkorn1-1/+2
this was broken in #de616e362ccd56aae8b26a08d9520ab9132a060f
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