aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)AuthorFilesLines
2015-06-17improved build speed by refining the rules for building ScintillaRobin Haberkorn1-7/+16
* Scintilla was built as a .PHONY target, so we trigger its build process always when we depend on scintilla.a. The problem was that a real file (scintilla.a) was declared .PHONY which meant that it was always considered updated by Make. This triggered a relink of everything depending on scintilla.a. Always. When doing a bootstrap build, this would always result in rebuilding the symbols-*.cpp files, etc... * Now the Scintilla build process will always be triggered, but scintilla.a is handled like an ordinary target. When we depend on scintilla.a our recipe will only be executed if the recursive make for Scintilla actually did update scintilla.a
2015-06-14handle environment variables more consistentlyRobin Haberkorn9-48/+227
* the registers beginning with "$" are exported into sub-process environments. Therefore macros can now modify the environment (variables) of commands executed via EC/EG. A variable can be modified temporarily, e.g.: [[$FOO] ^U[$FOO]bar$ EC...$ ][$FOO] * SciTECO accesses the global environment registers instead of using g_getenv(). Therefore now, tilde-expansion will always use the current value of the "$HOME" register. Previously, both register and environment variable could diverge. * This effectively fully maps the process environment to a subset of Q-Registers beginning with "$". * This hasn't been implemented by mapping those registers to special implementations that updates the process environment directly, since g_setenv() is non-thread-safe on UNIX and we're expected to have threads soon - at least in the GTK+ UI.
2015-06-13updated INSTALL: document out-of-tree buildsRobin Haberkorn1-4/+51
* also added a warning about building on Windows
2015-06-13updated scintilla submoduleRobin Haberkorn2-2/+2
* it's now at Scintilla v3.5.6 and Scinterm v1.6 * the Curses tab-stop fix was removed from the sciteco-dev branch since Mitchell cared about getting it upstream. It is part of Scintilla v3.5.5 and Scinterm v1.6. Scinterm built fine with Scintilla v3.5.6, so we're using the newer release.
2015-06-12support UNIX-shell-like tilde-expansions in file names and directoriesRobin Haberkorn12-75/+203
* expands to the value of $HOME (the env variable instead of the register which currently makes a slight difference). * supported for tab-completions * supported for all file-name accepting commands. The expansion is done centrally in StateExpectFile::done(). A new virtual method StateExpectFile::got_file() has been introduced to pass the expanded/processed file name to command implementations. * sciteco(7) has been updated: There is now a separate section on file name arguments and file name handling in SciTECO. This information is important but has been scattered across the document previously. * optimized is_glob_pattern() in glob.h
2015-06-11fixed lexer configuration for the unnamed bufferRobin Haberkorn1-0/+1
* The unnamed buffer must be handled separately since the "lexer.test..." macros assume that register "*" is non-empty. Else it will be configured for some arbitrary lexer. * this was a regression compared to v0.6.4
2015-06-03avoid compiler warning for giving field precision (non-null terminated ↵Robin Haberkorn1-1/+1
string formatting)
2015-06-02throw error when trying to set or append the string part of "*" and ↵Robin Haberkorn3-3/+28
appending to "$" * these operations are unsupported and there is no benefit in ignoring them silently. It only confused the user.
2015-06-02added <FG> command and special Q-Register "$" to set and get the current ↵Robin Haberkorn11-30/+360
working directory * FG stands for "Folder Go" * FG behaves similar to a Unix shell `cd`. Without arguments, it changes to the $HOME directory. * The $HOME directory was previously only used by $SCITECOCONFIG on Unix. Now it is documented on its own, since the HOME directory should also be configurable on Windows - e.g. to adapt SciTECO to a MinGW or Cygwin installation. HOME is initialized just like the other environment variables. This also means that now, the $HOME Q-Register is always defined and can be used by platform-agnostic macros. * FG uses a new kind of tab-completion: for directories only. It would be annoying to complete the FG command after every directory, so this tab-completion does not close the command automatically. Theoretically, it would be possible to close the command after completing a directory with no subdirectories, but this is not supported currently. * Filename arguments are no longer completed with " " if {} escaping is in place as this brings no benefit. Instead no completion character is inserted for this escape mode. * "$" was mapped to the current directory to support an elegant way to insert/get the current directory. Also this allows the idiom "[$ FG...new_dir...$ ]$" for changing the current directory temporarily. * The Q-Register stack was extended to support restoring the string part of special Q-Registers (that overwrite the default functionality) when using the "[$" and "]$" commands. * fixed minor typos (american spelling)
2015-05-29Modified ^W in string (and file name) arguments: ensure that we always rub ↵Robin Haberkorn3-7/+25
out beyond empty arguments * it was annoying not to be able to rub out anything with ^W if the current string argument was empty. * Now, the special file name and string argument handling for ^W is effective only if the current argument is non-empty, else we fall back to the rub-out-command behaviour. * So now, if you press ^W in a string argument, it is rubbed out until empty and on the next ^W press, the entire command will be rubbed out.
2015-05-29support specialized ^W immediate editing command in file name argumentsRobin Haberkorn2-4/+43
* the rubout/reinsert-word behaviour of misc. string arguments is suboptimal for file name arguments as it depends on Scintilla's word characters. By default, the directory separators are not considered word characters, but this could be changed by the user. * The behaviour of ^W in file name arguments is now fixed and independant from the Scintilla configuration: It always rubs out or re-inserts one hierarchy level of the file name.
2015-05-25updated TODORobin Haberkorn1-5/+5
2015-05-25restrict globbing in the EB command to regular files.Robin Haberkorn1-2/+2
As SciTECO can only edit regular files (or symlinks to regular files), we can exclude directories from the list of files matched by <EB> glob patterns.
2015-05-25extended <EN> command and used it to optimize "lexer.test..." macrosRobin Haberkorn76-288/+582
* EN may now be used for matching file names (similar to fnmatch(3)). This is used to check the current buffers file extension in the lexer configuration macros instead of using expensive Q-Register manipulations. This halves the overall startup time - it is now acceptable even with the current amount of lexer configurations. * EN may now be used for checking file types. session.tes has been simplified. * BREAKS macro portability (EN now has 2 string arguments). * The Globber class has been extended to allow filtering of glob results by file type.
2015-03-24added new lexer configs auto-generated by scite2co.luaRobin Haberkorn63-5/+3190
* these are still not all languages supported by Scintilla. scite2co.lua does not do a good job of generating styles when SciTE's property files use hardcoded colors/fonts. This commit only includes reasonably good conversion results. The remaining languages need some additional manual labor. * Even these lexers are not perfect and should be revised by comparing them with SciTE's properties. * So many lexers make the "lexer.auto" macro too slow. We need some optimization. E.g. the search-command optimization described in TODO, or an extended EN command for globbing manually specified file names.
2015-03-24reformatted existing lexer definitionsRobin Haberkorn8-147/+113
* they are updated with the results of scite2co.lua This makes it easier in the future to update lexer settings based on the property files of new SciTE releases.
2015-03-24added scite2co.lua: a script for generating SciTECO lexer definitions from ↵Robin Haberkorn2-0/+173
SciTE properties files
2015-03-18updated README: there are recent brebuilt packages now...Robin Haberkorn1-5/+2
2015-03-18updated TODOv0.6.4Robin Haberkorn1-0/+4
2015-03-18bumped release version to v0.6.4, updated ChangeLog and clarify libglib ↵Robin Haberkorn4-8/+18
minimum version * it was necessary to increase the upstream version so I could upload new versions to launchpad while debugging PPA build issues. * ChangeLog finalized for v0.6.4 * SciTECO requires at least libglib v2.28 (but that's only a guess)
2015-03-18fixed Debian package: launchpad build servers have broken $TERM configurationsRobin Haberkorn3-2/+12
* it also sets the compatibility level to 7 which was required when building for Ubuntu Lucid. This version cannot be supported however since its libglib version is too old.
2015-03-18./distribute: recreate temporary directory each time a source or binary ↵Robin Haberkorn1-1/+19
package is built * you no longer have to make an entire clean when e.g. uploading for another Ubuntu release. Therefore, the source tar ball is preserved (it must be the same for all packages with the same upstream version). * also try to extract the SciTECO version from the ./configure script instead of hardcoding it in ./distribute
2015-03-18fixed compiling on G++ v4.4: It needs a more verbose syntax when calling ↵Robin Haberkorn1-2/+1
template base class constructors * v4.4 is still officially supported by SciTECO (see INSTALL) * Ubuntu Lucid appears to use v4.4 by default and lucid is till supported by PPA. So this should fix building SciTECO in its PPA for Ubuntu Lucid.
2015-03-18ncurses: fixed batch mode initialization for unset or broken $TERMRobin Haberkorn1-10/+56
* If TERM is set but wrong, it might still fail. Errors are reported now. * If $TERM is unset or empty, we refuse to start the interactive mode. Unfortunately, we cannot easily let curses decide this since newterm() does not work as expected. * However this solution should be quite good: Either $TERM is empty - then batch mode will work but not interactive mode. Or it is not empty, then it is checked by the first call to newterm() when initializing batch mode. The chance of starting up interactive mode with a wrong $TERM or in head-less environments is now quite low. * This is most likely responsible for the PPA build issues.
2015-03-17fixed invalid memory accesses in the expression stack and reworked ↵Robin Haberkorn5-83/+98
expression stack this was probably a regression from d94b18819ad4ee3237c46ad43a962d0121f0c3fe and should not be in v0.5. The return value of Expressions::find_op() must always be checked since it might not find the operator, returning 0 (it used to be 0). A zero index pointed to uninitialized memory - in the worst case it pointed to invalid memory resulting in segfaults. Too large indices were also not handled. This was probably responsible for recent PPA build issues. Valgrind/memcheck reports this error but I misread it as a bogus warning. I took the opportunity to clean up the ValueStack implementation and made it more robust by adding a few assertions. ValueStacks now grow from large to small addresses (like stack data structures usually do). This means, there is no need to work with negative indices into the stack pointer. To reduce the potential for invalid stack accesses, stack indices are now unsigned and have origin 0. Previously, all indices < 1 were faulty but weren't checked. Also, I added some minor optimizations.
2015-03-17updated TODORobin Haberkorn1-0/+34
2015-03-17updated ChangeLogRobin Haberkorn1-0/+3
2015-03-17updated Debian package and fixed ./distribute (for Debian packages)Robin Haberkorn3-7/+8
2015-03-17added PDCURSES_LIBS ./configure variable to overwrite the check for PDCursesRobin Haberkorn2-11/+17
* allows us to link against PDCurses/win32a statically. It requires additional Windows DLLs (gdi32 and comdlg32) and since there's no PDCurses configuration mechanism, it is easiest to set the PDCurses linker flags using a PDCURSES_LIBS env variable. * This is only possible since Scintilla links statically, we do the linking of the binary and can provide the linker flags. It is still not possible to overwrite the CFLAGS used for PDCurses without modifying the Scinterm Makefile. * Using PDCURSES_LIBS we can get rid of --with-interface=emcurses since if library checks fail with EMscripten, we can simply define PDCURSES_LIBS="-lpdcurses"
2015-03-17support for ncurses/win32Robin Haberkorn2-4/+18
Unfortunately, I cannot really test this curses port since it is not supported by Windows 2000 (missing AttachConsole() API) and it does not run very well in Wine. Under Wine, it does not require the LINES and COLS variable to be set. However, endwin() and the refresh later on result in a very unusable state of operation. I cannot currently check whether this is true on Windows XP or later.
2015-03-17always enable ^G modifier after tab completion in ^G mode.Robin Haberkorn1-0/+3
If there was a rubbed out command line and you tab completed a file name in a string argument (TAB in ^G mode), the immediate editing modifier was automatically reset. This still happens if nothing could be tab completed and you type a few characters and try to complete again (since ^G mode will be reset). If this feature is used often, the user should perhaps define a function key as ^G^I^G.
2015-03-16wrote change log for v0.6Robin Haberkorn1-0/+296
2015-03-16./distribute: updated recipes for building Windows releasesRobin Haberkorn1-11/+34
2015-03-16fixed tar ball creation for out-of-tree configurationsRobin Haberkorn1-1/+1
* Automake was trying to overwrite the submodule Scintilla (that should be distributed) with the local copy of Scintilla (perhaps because the directory had the same name). Instead, we now copy the submodule Scintilla manually into the distribution directory.
2015-03-16implemented function key masking (context-sensitive function key macros)Robin Haberkorn4-6/+78
* fnkeys.tes has been updated to enable the command line editing macros (cursor keys, etc.) only in the "start" state. This avoids the annoying effect of inserting the macros into string arguments where they have no effect and must be rubbed out again.
2015-03-16removed claim of no bugs in sciteco(1) ;-)Robin Haberkorn1-6/+0
2015-03-16clarify comment of why newterm() cannot be used on PDCursesRobin Haberkorn1-4/+6
2015-03-16fixed curses prog-mode reinitializationRobin Haberkorn1-4/+11
when SciTECO interactive mode is started, the curses prog mode is restored automatically. Therefore it should already be set up correctly (after SciTECO batch mode initialization). This fixes console glitches on MinGW/PDCurses. partial revert of commit 4dced2
2015-03-16removed check for glibc-compatible malloc and reallocRobin Haberkorn1-2/+0
the MSVCRT versions are not glibc-compatible and we do not actually need glibc compatible versions, as all allocations are done through the libglib wrappers.
2015-03-16fixup: left align icon in first README paragraphRobin Haberkorn1-2/+1
2015-03-16added icon to README.mdRobin Haberkorn1-0/+2
2015-03-16documented the automatic EOL translation featureRobin Haberkorn3-7/+75
2015-03-16implemented automatic EOL translation supportRobin Haberkorn14-132/+603
* activated via bit 4 of the ED flag (enabled by default) * automatic EOL guessing on file loading and translation to LFs. * works with files that have inconsistent EOL sequences. * automatic translation to original EOL sequences on file saving * works with inconsistent EOL sequences in the buffer. This should usually not happen if the file was read in with automatic EOL translation enabled. * also works with the EC and EG commands * performance is OK, depending on the file being translated. When reading files with UNIX EOLs, the overhead is minimal typically-sized files. For DOS EOLs the overhead is larger but still acceptable. * Return (line feed) is now an immediate editing command. This centralizes EOL sequence insertion. Later, other features like auto-indent could be added to the editing command. * get_eol() has been moved to main.cpp (now called get_eol_seq() * Warn if file ownership could not be preserved when saving files. * IOView has been almost completely rewritten based on GIOChannels. The EOL translation code is also in IOView.
2015-03-16added EL command for setting/getting the EOL modeRobin Haberkorn2-0/+101
2015-03-16when initializing ncurses, make sure that the output stream is fully bufferedRobin Haberkorn1-0/+1
2015-03-16also set window title on ncurses, by querying terminfo capabilitiesRobin Haberkorn3-3/+65
2015-03-14use g_strerror() instead of strerror() in interface-curses.cppRobin Haberkorn1-1/+1
2015-03-12updated TODORobin Haberkorn1-7/+15
2015-03-12improved ncurses batch mode initializationRobin Haberkorn2-22/+65
* I now understand better why the old initialization worked ;-) By not calling initscr(), we could prevent some terminal setup and screen clearing usually performed which would interfere with with having a clean stdout stream. However the Curses screen was still basically attached to the terminal. * That's why there was screen flickering in urxvt when calling sciteco (even in batch mode). Also that's why calling batch-mode SciTECO did not work from other Curses programs (including SciTECO). * The new implementation directs Curses at /dev/null, so it will completely stay away from /dev/tty. * /dev/tty is associated with the Curses screen only when the interactive mode is initialized. This works elegantly via freopen() - there's no need to create a new Curses screen. * This does currently not work on PDCurses where the batch mode will still initscr() followed by endwin(). I should investigate how newterm() behaves there - especially on Windows.
2015-03-11Curses UI: beep() on errorRobin Haberkorn1-0/+3