Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
* it turns out that option-like arguments could not be reliably passed to
SciTECO scripts for two reasons:
a) "--" arguments are not removed from argv by GOption if it detects
and following option-like argument.
"--" would thus be passed as a script argument which will disable
option parsing in scripts that interpret "--".
b) A script run via the Hash-Bang line "#!...sciteco -m" would
require an explicit "--" to turn of GOption parsing.
However it is __impossible__ to insert after the script file name
on UNIX.
* Therefore, SciTECO now removes leading "--" arguments left over by GOption.
* If possible (Glib >= 2.44), option parsing is performed in strict POSIX
mode which inhibits parsing after the first non-option argument.
This reduces the number of cases where an explicit "--" is required.
* --mung no longer takes an argument. Instead, the first non-option argument
is expected to be the script file name.
This looks weird at first but is more consistent with how other interpeters
work. Once we revise argument passing to scripts, the script name can also
be passed to the script which is more consistent with it being the first
non-option argument.
Also, with strict POSIX parsing, this fixed Hash-Bang lines since
the script file name constructed by the kernel will automatically switch
off option parsing, passing all option-like script arguments uninterpreted
to the script.
* Since we're supporting Glib < 2.44, the Hash-Bang lines are still broken
for certain builds.
Therefore, a wrapper script is installed to libexecdir (it never has to be
executed by users and Hash-Bang lines need absolute paths anyway) which
transparently inserts "--" into the SciTECO command line and should be used
as the interpreter in portable SciTECO scripts.
The wrapper script is generated and points to the exact SciTECO binary
installed. This is important when doing parallel installs of Curses and Gtk
binaries since each one will get its own working wrapper script.
The wrapper-script workaround can be removed once we depend on Glib >= 2.44
(some day...).
* The default /usr/bin/env Hash-Bang lines are no longer used in the
scripts since they are broken anyway (UNIX incl. Linux cannot pass
multiple arguments to the interpreter!).
Scripts that get installed will get a fixed-up Hash-Bang line referring
to the installed SciTECO binary anyway.
* Interface::main() has been renamed to Interface::init() and is optional
now. The Interface::main() method was introduced because of the misconception
that interfaces will find their options in the argv array and have to do
their own parsing.
This is wrong, since their option group already cares about parsing.
Therefore, gtk_init() does not have to called explicitly, too.
|
|
* makes sense since it already extracted information from ./configure
that is usually substituted.
* it already had to be run from a configured build directory
* it required the source tree directory, which had to be overwritten
on the Make command line when using an out-of-source build dir.
This is no longer necessary.
* It is still a stand-alone Makefile to keep it isolated from the main
build system, although it could certainly be translated to Automake.
* the generated file will now be called distribute.mk to signify
that it is a Makefile.
|
|
* Autotest ships with Autoconf, so it's available already
and relatively easy to integrate into an Autotools package.
* This is attached to `make check` using some Automake magic.
* The test suite will only call the built SciTECO for the time being.
But using tests/Makefile.am, custom programs could be easily
built.
* Since it uses the target sciteco, it cannot work in cross-compile
environments.
* The test suite tests/testsuite.at should be used for regression
tests at least: Whenever there is a bug, a test case should be
added to testsuite.at.
Later this might be split up into multiple includes for regressions
other tests.
|
|
these should be put by the user in his/her global or repository-specific
ignore patterns
|
|
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
|
|
tables using htbl.tes preprocessor
|
|
* will be useful for Windows builds since Windows users usally do not have
a man-page formatter/reader
|
|
* the language reference is a manually written man-page template
* containing special references for generated documentation (\#$...)
* SciTECO script generate-docs.tes extracts TECO comments (/*$ ... */)
from all source files and transforms them to Troff requests that are
inserted into the document template.
* TECO doc comments are a rather sophisticated markup:
* first part until empty line is called header: simplified command syntax descriptions
* the rest is called body: <identifier> is automatically underlined,
empty lines generate new paragraphs, lines beginning with "-" or numbers
denote an indented unordered or numbered list item.
* regular Troff requests/macros can be used for more sophisticated markup
* since Autoconf substitutions are performed on the generated man-page,
@VARIABLEs@ may be used in doc comments as well
|
|
* solely for generating developer docs
* disabled by default even if Doxygen is installed
* Doxygen comments are not used currently
|
|
* pkg-config LIBS should be added to $LIBS so that link order is correct
|
|
later there will be much more documentation
|
|
terminal color definitions
* lexer config is now in separate file installed into the package data dir,
so it can be excluded from the teco.ini template.
* teco.ini is generated so it can load an installed lexer.tes as ED hook
(can still be dropped into the user's home and will work immediately)
|
|
language and commands will be described in separate documents
|
|
|
|
* symbols are extracted from C header files by a TECO macro
* macro is executed using a "minimal" version of SciTECO that does not include symbols (uses gcc's weak symbols)
* the generated C++ code contains the symbol-name-to-define mapping as a constant sorted array and initializes the appropriate SymbolList object
* a symbol lookup is super fast using a simple binary search in the symbol lists
* except for object initialization, no there's no overhead for keeping the symbol lists!
* build process is complicated by introduction of bootstrapping via sciteco-minimal
|
|
|
|
|
|
|
|
|
|
* <TAB> autocompletion only in specified states
* GtkInfoPopup widget to display possible completions, written using Gob2
|
|
|