Age | Commit message (Collapse) | Author | Files | Lines |
|
* Popup entries are added with expanded directory names, so we have to skip the
expanded directory names from the clicked popup entries.
|
|
|
|
|
|
* As an alternative to OSC-52, which is rarely supported by terminal emulators.
* Makes the new mouse support much more useful since you rely on good builtin
clipboard support. You can no longer e.g. just double-click a word to copy it into
the "primary" selection as terminal emulators do by default.
* Set $SCITECO_CLIPBOARD_SET/GET e.g. to xclip, way-copy, pbcopy or some wrapper script.
* This is currently using POSIX-specific popen() API, so it behaves a bit different
to command execution via EC/EG.
I am not sure if it's worth rewriting with the GSpawn-API, since it will be used
only on POSIX anyway and a GSpawn-based implementation is likely to be a bit larger.
* Should there be some small command-line utility for interacting (esp. pasting) via OSC-52,
built-in OSC-52 support could well be removed from SciTECO.
Currently, I know only of https://github.com/theimpostor/osc/ and it requires
very recent Go compilers. (I still haven't tested it. Quite possibly, pasting when run as
a piped command is impossible.)
|
|
flickering when scrolling the popup window
* see https://github.com/orbitalquark/scinterm/issues/26
* scintilla_wnoutrefresh() actually caused a refresh(), thus updating the physical screen
before calling teco_curses_info_popup_noutrefresh() and doupdate().
* This was visible when redrawing the both Scintilla view and popup often as happens during
scrolling or when clicking on the popup borders.
* This was probably broken since v2.1.0.
|
|
Environment variables will of course never contain null-bytes.
However you can always set them later on from TECO code and include nulls.
We therefore everywhere check for null-bytes in all registers used as null-terminated strings
to avoid unexpected behavior.
|
|
We cannot practically test `?` since it relies on women pages being installed
into the $SCITECOPATH.
While we do set $SCITECOPATH to the source tree, we cannot currently provide
the generated women pages to test scripts, unless installing the project first.
|
|
* Test case: @EQa// @?/EX/ -- Rubout should return you to the Q-Register view.
* The test suite has been extended.
Unfortunately we cannot currently directly check whether we're editing a Q-Register.
But we add a magic number of characters to the Q-Register, that we can check afterwards.
|
|
* At the SciTECO API level (-nEJ), there are no double clicks.
We must therefore ignore the GDK_2BUTTON_PRESS and GDK_3BUTTON_PRESS events,
that are delivered when GTK detects double or triple clicks.
They are only sent in addition to GDK_BUTTON_PRESS, so it's safe to
simply ignore them.
* This was causing spurious RELEASED events, which were confusing the ^KMOUSE
macro from fnkeys.tes, causing the wrong buffer range to be inserted into the
command line.
|
|
(or generally when keeping it on screen even unchanged)
* Turns out that updating the hardware cursor - which is not displayed anyway - would cause premature
screen updates in teco_interface_refresh(), thus causing flickering, for instance
when quickly cycling through the auto completion popup.
Or even just when clicking its borders which does not change it.
* Touching the popup window is actually important and expected since
Scinterm is also touching its window by completely redrawing it.
Touching the popup window makes sure, it's still copied into newscr and overlaps
the Scintilla view even if the popup did not change - e.g. when pressing an unassigned
function key or clicking on the popup borders.
|
|
popup window
|
|
|
|
* Curses allows scrolling with the scroll wheel at least
if mouse support is enabled via ED flags.
Gtk always supported that.
* Allow clicking on popup entries to fully autocomplete them.
Since this behavior - just like auto completions - is parser state-dependant,
I introduced a new state method (insert_completion_cb).
All the implementations are currently in cmdline.c since there is some overlap
with the process_edit_cmd_cb implementations.
* Fixed pressing undefined function keys while showing the popup.
The popup area is no longer redrawn/replaced with the Scintilla view.
Instead, continue to show the popup.
|
|
* Fixes scrolling with default ^KMOUSE macro from fnkeys.tes which adjusts
the scroll position without changing dot.
The unconditional SCI_SCROLLCARET would effectively prevent scrolling to any position
that does not contain dot.
|
|
* You need to set 0,64ED to enable mouse processing in Curses.
It is always enabled in Gtk as it should never make the experience worse.
sample.teco_ini enables mouse support, since this should be the new default.
`sciteco --no-profile` won't have it enabled, though.
* On curses, it requires the ncurses mouse protocol version 2, which will
also be supported by PDCurses.
* Similar to the Curses API, a special key macro ^KMOUSE is inserted if any of the supported
mouse events has been detected.
* You can then use -EJ to get the type of mouse event, which can be used
with a computed goto in the command-line editing macro.
Alternatively, this could have been solved with separate ^KMOUSE:PRESSED,
^KMOUSE:RELEASED etc. pseudo-key macros.
* The default ^KMOUSE implementation in fnkeys.tes supports the following:
* Left click: Edit command line to jump to position.
* Ctrl+left click: Jump to beginning of line.
* Right click: Insert position or position range (when dragging).
* Double right click: insert range for word under cursor
* Ctrl+right click: Insert beginning of line
* Scroll wheel: scrolls (faster with shift)
* Ctrl+scroll wheel: zoom (GTK-only)
* Currently, there is no visual feedback when "selecting" ranges
via right-click+drag.
This would be tricky to do and most terminal emulators do not appear
to support continuous mouse updates.
|
|
nightly builds
|
|
* the filenames contain commit hashes now, so it's no longer trivial to do with wget
* should fix nightly builds
|
|
* Allowing label redefinitions might have been useful when used as comments,
since you will want to be able to define arbitrary comments.
However as flow control constructs, this introduced a certain ambiguity since
gotos might jump to different locations, depending on the progression
of the parser.
* On the other hand, making label redefinition an error might disqualify labels as
comments when writing or porting classic TECO code.
Therefore, it has been made a warning as a compromise.
* Added test case
|
|
Should improve the SciTECO site at the AppImages Hub (appimage.github.io).
We will have to make another PR before the site gets updated.
|
|
* This means you should be able to install them into non-root directories. E.g.:
sudo installer -pkg sciteco-curses_nightly_macos_x86_64.pkg -target test-installation
|
|
Analoguous to :EX, but always saves the file like EW$, not only if it's dirty.
|
|
* This is not simply determined at compile-time but queries the concrete path
at least on Windows and OS X.
* The Windows implementation is kind of hacky and relies on undocumented behavior.
It's also not even tested yet!
* On Linux and FreeBSD completions will always be case-sensitive as they used to be.
There does not appear to be any API to query case sensitivity of a given path or even
the entire file system.
At most, we could white-list a number of case-insensitive file systems.
|
|
|
|
|
|
* This is done via the new opener.tes in the standard library.
* Some programs that use $EDITOR expect the +line syntax to work.
* You can copy filename:line:column directly from GCC error messages
and filename:line from grep output.
* Since there may be safe file names beginning with "+" or containing colons,
there needs to be a way to turn this off, especially for scripts that don't
know anything about the filenames to open.
This is done with "--".
Unfortunately, the first "--", that stops parameter processing,
is always removed from the command line and not passed down into TECO land.
This is not a problem for stand-alone scripts,
since the script filename is already stopping option processing, so "--"
would get passed down.
But when calling the profile via `sciteco -- ...`, you could prevent leading
minus signs to cause problems but since the `--` is removed, opener.tes cannot
use it as a hint.
Therefore, we introduced `-S` as a new alternative to `--`, that's always passed
down as `--` (i.e. it is equivalent to "-- --").
In other words, `sciteco -S *` will always open exactly the specified files
without any danger of misinterpreting certain file names.
Should we ever switch to a custom option parsing algorithm, we might preserve
"--" (unless after --mung) and thus get rid of "-S".
* This advanced behavior can be tweaked by the user relatively easily.
In the easiest case, we could replace M[opener] with
<:L;R 0X.f [* @EB/^EN.f/ ]* L>
in ~/.teco_ini to completely disable the special syntax.
|
|
|
|
|
|
* Hopefully makes the log easier to read in case of failures.
There may still be 2 runs concurrently since we build Curses and Gtk in parallel.
* Updated homepage.
* Ubuntu plucky builds are failing.
See https://launchpadlibrarian.net/765999455/buildlog_ubuntu-plucky-amd64.sciteco_2.3.0-0ppa1~plucky1_BUILDING.txt.gz
This may have been a spurious failure due to xvfb-run.
It may be less likely with --no-parallel.
Theoretically we could bump the Debian package version in order to test that,
but the PPA is practically not used by anybody anyway.
|
|
g_module along with glib anyway
|
|
|
|
|
|
* 32-bit binaries have been dropped, even though we could build both.
But there is virtually no demand for 64-bit binaries left.
* I continue to build 32-bit versions during CI, so that at least
something still builds and tests under 32-bit.
|
|
* This does not build the current source tree.
You must still have a properly set up ports tree somewhere.
|
|
|
|
Turns out that the FreeBSD ports Makefiles install programs and scripts with 0555 by default,
i.e. without write permissions.
This broke the install-exec-hook unless building as root.
Unfortunately, this also broke the Poudriere builds at the FreeBSD build servers.
See https://pkg-status.freebsd.org/package19/data/141amd64-default-build-as-user/aa1f9b124e36/logs/errors/sciteco-curses-2.2.0.log
|
|
* This goes into session.vcs as well.
* `fossil info` does not allow printing only the local-root property, so we have to do
some parsing afterwards.
|
|
* In fact, since SVN has --no-newline, this is even simpler than on Git and Mercurial.
* This requires at least Subversion v1.9 (2015, so should be safe).
|
|
autoconf archive (including CI)
|
|
* Turns out that on SunOS/OmniOS the ncurses port does not ship with
a ncursesw pkg-config file, but the ncurses file is for a version,
that does contain widechar support as well.
* Instead of adding yet another recursive PKG_CHECK_MODULES() call,
we now use the AX_WITH_CURSES() macro, which is probably more robust.
This should at least fix ./configure on OmniOS.
* It also adds a number of feature C macros, that could be useful to
check in the future.
* At the moment, we strive to support all X/Open-compatible Curses
libraries, but both enhanced and color functions are required.
Therefore plain SVr4 Curses is not supported.
* source: https://www.gnu.org/software/autoconf-archive/ax_with_curses.html
|
|
* The previous convention of !* ... *! are now true block comments,
i.e. they are parsed faster, don't spam the goto table and allow
embedding of exclamation marks - only "*!" terminates the comment.
* It is therefore now forbidden to have goto labels beginning with "*".
* Also support "!!" to introduce EOL comments (like C++'s //).
This disallows empty labels, but they weren't useful anyway.
This is the shortest way to begin a comment.
* All comment labels have been converted to true comments, to ensure
that syntax highlighting works correctly.
EOL comments are used for single line commented-out code, since it's
easiest to uncomment - you don't have to jump to the line end.
This is a pure convention / coding style.
Other people might do it differently.
* It's of course still possible to abuse goto labels as comments
as TECO did for ages.
* In lexing / syntax highlighting, labels and comments are highlighted differently.
* When syntax highlighting, a single "!" will first be highlighted as a label
since it's not yet unambiguous. Once you type the second character (* or !),
the first character is retroactively styled as a comment as well.
|
|
* They are used at runtime only by the GTK port.
* Their existence can cause problems if OS-specific build systems
have to clean these files from the staging directory afterwards.
This was the case on FreeBSD where the committer refused to remove
these files after installation.
In the official FreeBSD port, we therefore currently ship the
PNG icons unnecessarily.
* They are now installed and shipped only on GTK builds.
|
|
|
|
This is not done automatically when building ports.
The FreeBSD binaries were thus the only ones without LTO.
We should prefer WITH_LTO, even once we add something like --enable-lto,
as WITH_LTO enables Clang-specific ThinLTO support.
|
|
|
|
* g_utf8_get_char_validated() returns -2 for null-bytes (sometimes!?)
|
|
* Apparently g_utf8_get_char_validated() sometimes(!) returns -2 for null-characters,
so it was considered an invalid byte sequence.
* What's strange and unexplainable is that other uses of the function, as are behind nA and nQq,
did not cause problems and returned 0 for null-bytes.
* This also fixes syntax higlighting of .teco_session files which use the null-byte as the
string terminator.
(.teco_session files are not highlighted automatically, though.)
|
|
This is a purely cosmetic change.
|
|
characters)
* The teco_qreg_vtable_t::get_string() method should support returning the
length optionally (may be NULL).
This already worked with teco_doc_get_string(), even though it wasn't documented,
and therefore didn't cause problems with regular Q-Registers.
|
|
* @ES/SCI_SETILEXER/lib^@name/ now opens the lexer <name> in library <lib>.
* You need to define the environment variable $SCITECO_SCINTILLUA_LEXERS to point
to the lexers/ subdirectory (containing the *.lua files).
Perhaps this should default to the dirname of <lib>?
* The semantics of SCI_NAMEOFSTYLE have been changed:
It now returns style ids when given style names, so you can actually write
Scintillua lexer *.tes files.
This will be superfluous if we had a way to return strings from Scintilla messages into
Q-Registers, e.g. 23@EPq/SCI_NAMEOFSTYLE/.
* We now depend on gmodule as well, but it should always be part of glib.
It does not change the library dependencies of any package.
It might result in gmodule shared libraries to be bundled in the Win32 and Mac OS
packages if they weren't already.
|
|
installation
* use the new ::FS and ^Q commands
|