Age | Commit message (Collapse) | Author | Files | Lines |
|
* 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
|
|
* 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.
|
|
* also added a warning about building on Windows
|
|
* 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.
|
|
* 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
|
|
* 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
|
|
string formatting)
|
|
appending to "$"
* these operations are unsupported and there is no benefit
in ignoring them silently. It only confused the user.
|
|
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)
|
|
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.
|
|
* 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.
|
|
|
|
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.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
SciTE properties files
|
|
|
|
|
|
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)
|
|
* 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.
|
|
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
|
|
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.
|
|
* 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.
|
|
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.
|
|
|
|
|
|
|
|
* 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"
|
|
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.
|
|
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.
|
|
|
|
|
|
* 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.
|
|
* 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.
|
|
|
|
|
|
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
|
|
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.
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|