Age | Commit message (Collapse) | Author | Files | Lines |
|
* MacOS packages are now built on macos-12 since macos-11 has been deprecated.
|
|
* probably not necessary for std::thread support in Scintilla
* should fix MinGW nightly builds
|
|
|
|
|
|
|
|
|
|
numbers now
* Instead of TECO_OP_NEW, there should perhaps simply be a flag of whether `,` was used.
|
|
* in fact, with a negative exponent the previous naive implementation would even hang indefinitely!
* Now uses the squaring algorithm.
This is slightly longer but significantly more efficient.
* added test cases
|
|
* It's generally a bad idea to pass backslashes as a glyph in macro arguments, even as `\\`
since this could easily be interpreted as an escape.
* Instead we now always use `\[rs]`.
|
|
* gboolean cannot be used since it is a signed type
* bool is still more readable, even though we mostly use glib typedefs.
* AFAIK the glib types are deprecated, so sooner or later we will switch
to stdint/stdbool types anyway.
|
|
* This is the same variable used by gtk3-nocsd, but we will now work
even without preloading any libraries.
Also, it turns out that gtk3-nocsd does not ship as a FreeBSD port
and hasn't been updated in a long time.
* Setting this in .teco_ini wouldn't have been easy since the
teco_interface_init() is called before any TECO code.
Also, you might not even want disable this globally but depending
on the window manager.
* Therefore, you are advised to `export GTK_CSD=0` in ~/.xsession.
* The --no-csd command line option is kept for the time being,
but probably serves no more purpose.
|
|
* Also turns out, I will have to use gtk_window_set_icon_list().
* This fixes icons in tabbed and st (when embedding SciTECO).
|
|
|
|
* Horizontal movements (left/right cursor keys) establish the current column
and vertical movements (up/down) will try to keep on that column.
* This has long been problematic in SciTECO as it requires state that gets
reversed when the command line replacement takes place.
* I experimented with encoding the current horizontal position into the braced
movement operations as in (123C5U$), but I decided that this was clumsy and
I generally did not want these expressions to become even larger.
* Instead I decided to add some minimal support to the C core in the form of 4EJ
which is like a number register only that it does NOT get reversed on rubout.
This is exploited by the fnkeys.tes macros by storing the current position
beyond replacements.
* In theory, this should be a property of the document, but we cannot easily
store custom parameters per document.
So instead, there is just one global variable.
When editing another buffer, it gets reset to .ESGETCOLUMN$$.
sample.teco_ini has been updated.
* The current X position only makes sense in the context of fnkeys.tes, as
TECO commands like <C> are not necessarily "horizonal" movements.
For the same reason, the core does not try to initialize 4EJ automatically
when editing new buffers.
It's entirely left to the TECO macros.
* The commandline replacement is more robust now as it checks braced
expressions at the end of the command line more thorougly.
It will no longer swallow all preceding braced expressions.
Only if they are at least 4 characters in length and end in `C)` or `R)`.
|
|
|
|
|
|
|
|
FreeBSD ports tree
* see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276492
* also the license is GPLv3+ to be precise
|
|
* Works only in Gtk of course and only in the parser start state.
* Since its side effects can neither be reversed, nor does it have any side effects on the editor state,
we can completely rub it out.
* Currently, it will only affect the current buffer and only the text area.
It would be trivial to apply the zoom to the commandline widget as well (FIXME?).
There is currently no way that the zoom value or any font size could be passed to the CSS, though.
So the auto-completion overlay could only be zoomed if Gtk supports a zoom factor as well.
|
|
* was introduced in e7867fb0
|
|
(-Wsingle-bit-bitfield-constant-conversion)
* gboolean is defined as gint which is a signed type.
A gboolean 1-bit-wide bitfield cannot have the values 0 and 1 but only 0 and -1.
* This wasn't practically a bug unless you would try to compare one of those bitfields
with TRUE.
* All of those bitfields are now guint, even though this is less self-documenting.
|
|
* This port is quite basic and does not yet allow building Gtk versions.
|
|
* passing an empty command string down to the shell would always do nothing,
so it doesn't make sense to support that.
* for the time being, we generate a proper error
* in the future, it might make sense to define some special behavior like repeating
the last command - but EC does not currently save the command line anywhere.
* The generated documentation is currently ugly (FIXME).
mandatory parameters are not properly detected by tedoc and we cannot keep apart
Q-Registers from mandatory parameters either.
Also, we should allow <param> markup in command summaries.
|
|
* The lexer scripts are not installed if the LEXILLA option is disabled,
so they need to be excluded from pkg-plist.
|
|
* The plain text format is deprecated.
* Thanks to Bob Eager.
|
|
* This was setting only the teco_doc but wasn't calling the necessary
set_string() methods.
* The idiom [$ FG...$ ]$ to change the working directory temporarily
now works.
* Similarily you can now write [~ ^U~...$ ]~ to change the clipboard
temporarily.
* Added test suite cases. The clipboard is not tested since
it's not supported everywhere and would interfer with the host system.
* Resolved lots of redundancies in qreg.c.
The clipboard and workingdir Q-Regs have lots in common.
This is now abstracted in the "external" Q-Reg base "class"
(ie. via initializer TECO_INIT_QREG_EXTERNAL()).
It uses vtable calls which is slightly more inefficient than per
register implementations, but avoiding redundancies is probably more
important.
|
|
|
|
FreeBSD port
* Makefiles are in .gitignore.
|
|
for debug builds
* There is cleanup that is not strictly necessary, because it only frees memory
which is freed on program termination anyway.
* However, it helps to explicitly free everything for debugging memory leaks via Valgrind.
* The new macro reduces the number of #ifdef statements.
* On NDEBUG, the code of these functions will still be eliminated.
* If functions are referenced only from the destructor, there will be no unused function
warnings, even in NDEBUG.
|
|
* it is supposed to be mainstreamed, but this did not yet happen
* even if it will eventually become part of the ports tree, I won't
have access to this repo and could not keep it up to date.
But I can keep this copy here up to date and it can serve as an
upstream source for the ports tree maintainer.
* Also, it can be used to build FreeBSD binary packages even now
without being part of the official ports tree.
|
|
|
|
* This is supposed to allow new users without any prior exposure to SciTECO
to pick up the basics of practical usage of SciTECO as an editor.
It almost does not elaborate on scripting-side of things.
* This requires a full Groff installation, so the document is not built by default.
|
|
* dh_testdir would sometimes cause problems on the PPA servers,
so we replaced it with an empty rule.
* We need to define the binary-arch and binary-indep targets
in order to recurse into the correct subdirectories.
I do not understand why this always worked on the Github runner
and sometimes even on the PPA servers.
Unfortunately, we cannot just call `dh binary-arch -B... -p...`
since that would call `dh_install -a` which overrides any `-p` (package),
thus trying to install the curses binaries from the Gtk build directory
and vice versa.
|
|
* This resolves must lintian warnings and errors.
|
|
packages
|
|
|
|
* Useful for packaging on platforms where we can only build from tarballs (FreeBSD)
* I don't know whether it's always safe and correct to install this file into $DATADIR/applications,
so the file is only distributed but not installed yet.
* It contains a hardcoded binary name "gsciteco". This could actually differ
depending on the concrete --program-prefix and it would be good to include the exact
installation path.
This however is not possible as long as we do not install this file.
|
|
* This is also the base of $SCITECOPATH.
* Changing it is useful for packaging where it is not possible to factor out the common
files between Curses and Gtk builds into a "sciteco-common" package.
As an alternative, you can now create disjunct sciteco-curses and sciteco-gtk packages.
* You will most likely want to use this for Gtk builds as in:
--with-interface=gtk --program-prefix=g --with-scitecodatadir=/usr/local/share/gsciteco.
|
|
* The lexer.test.* macros don't work on the unnamed buffer,
so any per-language indention settings etc. could be accidentally
applied to the unnamed buffer.
|
|
* Since Scintilla no longer automatically scrolls the caret (see 941f48da6dde691a7800290cc729aaaacd051392),
the caret wouldn't always end up in the view on startup.
* Added teco_interface_refresh() which includes SCI_SCROLLCARET and
is invoked on startup. This helps with the Curses backend.
It also reduces code redundancies.
* On Gtk, the caret cannot be easily scrolled on startup as long as no size is allocated
to the window, so we also added a size-allocate callback to the
window's event box. Sizes are less often allocated to the event box than to the
window itself for some strange reason.
|
|
* This probably did not cause any bugs.
|
|
default now
* On FreeBSD both the dlmalloc replacement and poll-thread via sysctl() work
but the poll-thread has been benchmarked to be significantly faster,
at least on my machine.
You can still ./configure --enable-malloc-replacement of course.
* Interestingly, the RSS of the process visible via htop does not decrease
after OOMs or command-line terminations - with neither of the implementations.
|
|
* it appears to behave similar to Mac OS with regard to recursions
|
|
* This especially fixes spawning on 0,128ED-mode broken since
f557af9a9112955d3b65f6ad0d54c0791189f961.
* The process is added to a job object now, which allows us to
kill the entire process tree.
Previously we we were leaving around orphaned processes.
|
|
|
|
* teco_interrupt() turned out to be unsuitable to kill child processes (eg. when <EB> hangs).
Instead, we have Win32-specific code now.
* Since SIGINT can be ignored on UNIX, pressing CTRL+C was not guaranteed to kill the
child process (eg. when <EB> hangs).
At the same time, it makes sense to send SIGINT first, so programs can terminate gracefully.
The behaviour has therefore been adapted: Interrupting with CTRL+C the first time will kill
gracefully. The second time, a more agressive signal is sent to kill the child process.
Unfortunately, this would be relatively tricky and complicated to do on Windows, so CTRL+C will always
"hard-kill" the child process.
* Moreover, teco_interrupt() killed the entire process on Windows when called the second time.
This resulted in any interruption to terminate SciTECO unexpectedly when tried the second time on Gtk/Win32.
* teco_sigint_occurred renamed to teco_interrupted:
There may be several different sources for setting this flag.
* Checking for CTRL+C on Gtk involves driving the main event loop repeatedly.
This is a very expensive operation. We now do that only every 100ms. This is still sufficient since
keyboard input comes from humans.
This optimization saves 75% runtime on Windows and 90% on Linux.
* The same optimization turned out to be contraproductive on PDCurses/WinGUI.
|
|
* test case: ECwhile true; do true; done$
* Some platforms require polling via teco_interface_is_interrupted()
for detecting interruptions, so we added an idle watcher to the
Glib event loop in spawn.c.
* On platforms that do not require polling key presses (like Unix/ncurses),
the idle watcher won't do any harm.
|
|
* The caret wasn't always kept out of the UZ and at some point would totally leave the view.
This was apparently cause by executing two SCI_SCROLLCARETs per teco_interface_cmdline_update().
* Instead, we now use a CARET_EVEN scroll policy which also works sufficiently well.
|
|
* This is using an Input Method now.
* Entering dead keys has probably always been broken in Gtk which I only did not notice
because I use a keyboard layout without dead keys.
This affects the ^ and ` keys on a German layout.
* Once we support Unicode input, it would make sense to abuse Scintilla's already existing input method support.
Unfortunately, forwarding keyboard events to the Scintilla view breaks event freezing and results in flickering.
|
|
PDCurses/WinGUI
* we can neither display, nor parse Unicode characters properly, so this does not worsen anything
* makes it harder to confuse the parser as long as we do not support Unicode.
* behaves like on Gtk: pressing a non-ASCII char will simply be ignored
* Most importantly, this fixes crashes on PDCurses/WinGUI.
It apparently couldn't handle the negative integers that resulted from passing a value >= 0x80 <= 0xFF
into gchar (which is a signed integer).
Changing everything into guchar is not worth the effort - we need full Unicode support anyway.
|