aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)AuthorFilesLines
2024-10-16www: added v2.1.0 to the "News" sectionRobin Haberkorn1-1/+1
2024-10-16updated ChangeLog, FreeBSD and Debian packages for v2.1.0 releaseRobin Haberkorn3-1/+144
2024-10-16Solarized color scheme: fixed F5 function key macroRobin Haberkorn1-2/+2
The macro prefix was changed from ^F to ^K.
2024-10-16fixup: use teco_machine_t::must_undo instead of trying to identify the ↵Robin Haberkorn6-43/+30
current state machine * The previous solution was not wrong, but unnecessarily complex. We already have a flag for exactly this purpose. * Avoid redundancies by introducing teco_machine_stringbuilding_set_codepage().
2024-10-15fixed memory corruptions due to undoing the ↵Robin Haberkorn5-8/+42
teco_machine_stringbuilding_t::codepage * It's contained in teco_machine_main_t which is created per macro call frame. So after macro calls, the machine no longer exists. It is therefore unsafe to undo its members indiscriminately. * On the other hand, we must undo the codepage setting when run interactively, so it is now only undone when belonging to the commandline macro frame. * This was actually causing memory corruptions on every fnkeys cursor movement, but never caused crashes - probably because the invalid pointers are always pointing to unused parts of the C call stack. * Initially broken in b31b8871.
2024-10-15fixed memory leak when replacing command linesRobin Haberkorn1-3/+2
* this would also leak a few bytes on every of fnkeys.tes' movement commands
2024-10-15updated TODORobin Haberkorn1-43/+91
2024-10-15netbsd-curses: fixed the default escape delayRobin Haberkorn1-22/+22
* Apparently, netbsd-curses overwrites the escdelay on initscr() (if $ESCDELAY is not set), so we have to apply the default 25ms after screen initialization. * The info line is not drawn correctly on netbsd-curses, but only on st/simpleterm. I assume this is just a shortcoming of the included terminfo entry.
2024-10-15improved support for braces within loops: warn about unclosed braces and ↵Robin Haberkorn3-3/+21
allow breaking from within braces For instance, you can now write <23(1;)> without leaving anything on the stack.
2024-10-12grosciteco: added the "ti" glyph (refs #22)Robin Haberkorn1-0/+1
2024-10-11grosciteco: added the "ha" glyph (refs #22)Robin Haberkorn1-0/+1
2024-10-11grosciteco: added the "aq" glyph (refs #22)Robin Haberkorn1-0/+1
2024-10-08htbl.tes: fixed searching for caretRobin Haberkorn1-1/+1
* Due to recent changes, you now have to type S^Q^Q^^$ since the ASCII caret (94) is interpreted as a pattern match character.
2024-10-06fixup b36ff2502ae3b0e18fa862a01fba9cc2c9067e31: fixes pattern match ↵Robin Haberkorn1-0/+1
characters after escaped characters
2024-10-05Gtk UI: support setting and getting clipboards containing null bytesRobin Haberkorn3-13/+57
* added TECO_ERROR_CLIPBOARD for all clipboard-related errors
2024-10-04pattern match characters support ^Q/^R now as wellRobin Haberkorn4-11/+57
* makes it possible, albeit cumbersome, to escape pattern match characters * For instance, to search for ^Q, you now have to type S^Q^Q^Q^Q$. To search for ^E you have to type S^Q^Q^Q^E$. But the last character cannot be typed with carets currently (FIXME?). For pattern-only characters, two ^Q should be sufficient as in S^Q^Q^X$. * Perhaps it would be more elegant to abolish the difference between string building and pattern matching characters to avoid double quoting. But then all string building constructs like ^EQq should operate at the pattern level as well (ie. match the contents of register q verbatim instead of being interpreted as a pattern). TECOC and TECO-64 don't do that either. If we leave everything as it is, at least a new string building construct should be added for auto-quoting patterns (analoguous to ^EN and ^E@).
2024-09-28replaced bool completely with gbooleanRobin Haberkorn2-10/+7
2024-09-28fixed compilation on most compilers due to goto beyond g_auto() declarationRobin Haberkorn1-3/+3
2024-09-28some minor fixes to help (?) commandRobin Haberkorn1-2/+2
2024-09-28check the memory limit and allow interruptions when loading filesRobin Haberkorn2-5/+28
* Previously you could open files of arbitrary size and the limit would be checked only afterwards. * Many, but not all, cases should now be detected earlier. Since Scintilla allocates lots of memory as part of rendering, you can still run into memory limits even after successfully loading the file. * Loading extremely large files can also be potentially slow. Therefore, it is now possible to interrupt via CTRL+C. Again, if the UI is blocking because of stuff done as part of rendering, you still may not be able to interrupt the "blocking" operation.
2024-09-28FreeBSD/jemalloc: fixed recovery after hitting memory limitRobin Haberkorn1-0/+10
* We now set opt.retain=false for the process, so jemalloc returns freed memory and the RSS decreases when recovering from memory limit hits. This should be safe at least on FreeBSD. * Either the opt.retain option is new or I was previously testing this only on 32-bit systems.
2024-09-28fixed memory limiting if the process' memory usage is larger than 2GB and ↵Robin Haberkorn1-7/+8
overflow checking * teco_memory_usage is now an unsigned integer. * Unfortunately we currently rely on the variable being int-sized since we use atomic operations. This means on 64-bit systems, limiting will not work as expected if you set the limit larger than 4GB. Not sure whether this should be fixed. * Calling teco_memory_check() with a non-null request-size was totally broken and could result in bogus failures. This is currently used exclusively for checking backwards searches.
2024-09-26Git lexer: added support for TAG_EDITMSG and MERGE_MSGRobin Haberkorn2-1/+4
* Curses: "icons" have also been added
2024-09-25Curses: added "Git" icons for COMMIT_EDITMSG and git-rebase-todoRobin Haberkorn1-0/+2
2024-09-25fixed rubbing out (some) string building constructs at the beginning of the ↵Robin Haberkorn1-7/+2
command line argument * For instance, you can now rub out ^Q^W at the beginning of a string argument. Otherwise, pressing Ctrl+W after ^Q^W would rub out only the ^W. The next Ctrl+W would then insert ^W, due to special immediate editing inhibition after ^Q. * This still only works if the string building construct expanded to at least one byte. Suppose you have ^EQq, expanding to nothing, pressing Ctrl+W would chain to the default teco_state_process_edit_cmd() and the entire command would be rubbed out. This is probably tolerable.
2024-09-25inhibit some immediate editing commands after ^Q/^R string building constructsRobin Haberkorn3-1/+32
* This allows you to type ^Q^U (which would otherwise rub out the entire argument) and ^Q^W (which would otherwise rub out the ^Q). * ^Q^U coincidentally worked previously since the teco_state_stringbuilding_escaped state would default to teco_state_process_edit_cmd(). But it's better to make this feauture explicit. * This finally makes it possible to insert the ^W (23) char into a buffer. In interactive mode, you can still only type Caret+W as a string building construct. * ^G could also be inhibited after ^Q, but the control char is not used anywhere yet, so there is no point in doing that.
2024-09-23allow OSC-52 clipboards on all terminal emulatorsRobin Haberkorn5-27/+50
* The XTerm version is still checked if we detect running under XTerm. * Actually, the XTerm implementation is broken for Unicode clipboard contents. * Kitty supports OSC-52, but you __must__ enable read-clipboard. With read-clipboard-ask, there will be a timeout. But we cannot read without a timeout since otherwise we would hang indefinitely if the escape sequence turns out to not work. * For urxvt, I have hacked an existing extension: https://gist.github.com/rhaberkorn/d7406420b69841ebbcab97548e38b37d * st currently supports only setting the clipboard, but not querying it.
2024-09-23updated the Lexilla submodule URLRobin Haberkorn1-1/+1
I wonder why it even built on CI without that change. It should fix Yocto builds, though.
2024-09-22Curses: always wgetch() on a dummy pad, avoiding unnecessary wrefresh()Robin Haberkorn1-35/+45
* This is especially important on platforms, requiring the wgetch() poll workaround to detect CTRL+C (PDCurses/WinGUI). wgetch(cmdline_window) would implicitly wrefresh(cmdline_window), which resulted in additional flickering when pressing function keys. This is no longer so important since key macros are processed as an unity and the cmdline will be updated only after processing all of the characters contained in them, ie. only once after the key press. Still, there could have still been unwanted side effects. At the very least, wgetch(input_pad) should be faster. * The XTerm clipboard implementation was getch()ing on stdscr, so potentially suffered from the same problem. It should be tested again. * Since keypad() is now always enabled even on netbsd-curses. I assume that the function key processing bug in netbsd-curses has been fixed by now. We are not building any releases with netbsd-curses. But it should be retested. * It does not resolve all flickering issues on PDCurses/WinGUI. Both the command line and the Scintilla view still flicker near the cursor. See https://github.com/Bill-Gray/PDCursesMod/issues/322
2024-09-21disable shared libraries by defaultRobin Haberkorn4-15/+16
* This is necessary to fix the Unicode test suite on Win32, so I was always passing in --disable-shared manually. It's easy to forget though when building from scratch. * We don't currently install any (shared) library, so this is safe on all platforms. In fact on all other platforms, libtool detects that and doesn't generate wrapper binaries in any way. Only on win32 it's apparently buggy.
2024-09-21PDCurses/WinGUI: fixed Unicode icons on win32Robin Haberkorn3-8/+27
* Turns out that "%C" in wprintw() does not work with non-ANSI chars. * We still don't want to introduce the Curses widechar API, so I added teco_curses_add_wc() as a replacement for wadd_wch().
2024-09-21syntax errors are reported with "echoed" characters, ie. as purely printable ↵Robin Haberkorn1-1/+3
characters * Some characters like LF wouldn't be displayed in the message line correctly. * In fact the Gtk UI cannot display any of the control characters correctly. * I was considering deferring all echoing/formatting to the UIs, so they can use TecoGtkLabel or teco_curses_format_str(). This is not possible since messages transmitted via GError must not contain null-bytes, so these need to be sorted out earlier anyway. * This should also fix syntax errors in PDCurses for Windows where "%C" apparently doesn't work with non-ANSI codepoints.
2024-09-21screenshots.md: make one of the screenshots smallerRobin Haberkorn1-1/+1
2024-09-20^W^W and ^V^V can be typed completely with upcarets now and they case fold ↵Robin Haberkorn4-31/+104
all expansions of ^EQq, ^EUq and so on * Previously, there was no way to enter upper-case mode in interactive commands since the Ctrl+W immediate editing command is interpreted everywhere. * Without the case folding of ^EQq/^EUq results, the upper and lower case modes are actually pretty useless considering that modern keyboards have caps lock. So it was clear we need this, regardless of what the classic TECOs did. The TECO-11 manual is not very clear on this. tecoc apparently does not case-fold ^EQq results. * This opens up new idioms, for instance `EUq^W^W^EQq$` in order to upper case register q. It's also the only way you can currently upper-case Unicode codepoints.
2024-09-19Ctrl+^ is no longer translated to a single caret in string building (refs #20)Robin Haberkorn3-7/+24
* Ctrl+^ (30) and Caret+caret (^^) were both translated to a single caret. While there might be some reason to keep this behavior for double-caret, it is certainly pointless for Ctrl+^. * That gives you an easy way to insert Ctrl+^ (code 30) into documents with <I>. Perviously, you either had to insert a double-caret, typing 4 carets in a row, or you had to use <EI> or 30I$. * The special handling of double-caret could perhaps be abolished altogether, as we also have ^Q^ to escape plain carets. The double-caret syntax is very archaic from the time that there was no proper ^Q as far as I recall correctly.
2024-09-19fixed Load/Save Q-Reg tests on Mac OS and Win32Robin Haberkorn1-8/+3
2024-09-19"special" Q-Registers now support EQq/.../ (load) and E%q/.../ (save) commandsRobin Haberkorn6-68/+156
* @EQ$/.../ sets the current directory from the contents of the given file. @E%$/.../ stores the currend directory in the given file. * @EQ*/.../ will fail, just like ^U*...$. @E%*/.../ stores the current buffer's name in the given file. * It's especially useful with the clipboard registers. There could still be a minor bug in @E%~/.../ with regard to EOL normalization as teco_view_save() will use the EOL style of the current document, which may not be the style of the Q-Reg contents. Conversions can generally be avoided for these particular commands. But without teco_view_save() we'd have to care about save point creation.
2024-09-18homepage: added facicon and description meta tagRobin Haberkorn1-0/+2
2024-09-18added NEWS section to homepageRobin Haberkorn4-1/+9
* This file is required by Autotools and will be distributed in source tarballs as well.
2024-09-18check that local register is not edited at the end of macro callsRobin Haberkorn5-3/+27
* This was unsafe and could easily result in crashes, since teco_qreg_current would afterwards point to an already freed Q-Register. * Since automatically editing another register or buffer is not easy to do right, we throw an error instead.
2024-09-17screenshots.md: added screenshots for the upcoming v2.1.0 releaseRobin Haberkorn1-0/+6
Naturally they show off the new Unicode support.
2024-09-17sciteco(7): mentioned "[a]b" idiomRobin Haberkorn1-1/+2
2024-09-17updated cheat sheetRobin Haberkorn2-8/+18
* character-based model, avoid mentioning "ASCII code" * added "0EE" example * should be built with pdfmom, so it's built with gropdf
2024-09-17screenshots.md: every screenshot is in its own paragraph nowRobin Haberkorn1-0/+2
2024-09-17fixed titles on screenshots page (screenshots.md)Robin Haberkorn1-5/+5
2024-09-17fixed searches on completely new and empty documentsRobin Haberkorn2-1/+6
This was throwing glib assertions.
2024-09-17updated screenshots: screenshots.md now lists older screenshots as wellRobin Haberkorn2-2/+12
2024-09-17Github pages are auto-generated from the Markdown files and HTML manuals nowRobin Haberkorn4-14/+156
* This pushes to the gh-pages branch since we don't yet want to introduce a new workflow (that would have to rebuild SciTECO). * Built as part of the nightly MacOS builds. The Ubuntu builds directly build Debian packages which do not contain the HTML manuals. * I don't want to check in images into the master branch. The gh-pages branch is cleaned with every build. Therefore I still cross-link to Sourceforge for any additional images and documents. * We could automatically build the cheat-sheet.pdf (TODO?). For the time being, we are still linking to Sourceforge.
2024-09-17improved HTML lexer (html.tes)Robin Haberkorn1-3/+48
This previously highlighted little more than embedded Javascripts.
2024-09-16updated TODORobin Haberkorn1-28/+55