<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sciteco, branch lsp</title>
<subtitle>Scintilla-based Text Editor and COrrector</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/'/>
<entry>
<title>LSP: ignore not only server notifications but all requests as well</title>
<updated>2026-08-11T20:09:27+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-11T20:03:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=2332530360ede8559275367ad0a0eda20dd2bf30'/>
<id>2332530360ede8559275367ad0a0eda20dd2bf30</id>
<content type='text'>
* We use 23 now as the "id" for all JSON-RPC requests.
* Every message with a different "id" can be ignored,
  as it is a request, we haven't advertised to support.
  Alternatively, we should perhaps send an error response to
  unexpected requests?
* Fixes support for the ccls server which sends window/workDoneProgress/create
  even though I didn't advertise it.
  ccls cannot practically be used with FTsymbol$ though since it returns
  full declarations.
  You can perform a fuzzy symbol search, though.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* We use 23 now as the "id" for all JSON-RPC requests.
* Every message with a different "id" can be ignored,
  as it is a request, we haven't advertised to support.
  Alternatively, we should perhaps send an error response to
  unexpected requests?
* Fixes support for the ccls server which sends window/workDoneProgress/create
  even though I didn't advertise it.
  ccls cannot practically be used with FTsymbol$ though since it returns
  full declarations.
  You can perform a fuzzy symbol search, though.
</pre>
</div>
</content>
</entry>
<entry>
<title>LSP: save $SCITECO_LSP and $SCITECO_LSP_ROOT as part of buffer sessions</title>
<updated>2026-08-11T19:26:38+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-11T19:20:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=9b904f5b7e9ea45b8ea5991f6eeb19c2f3949874'/>
<id>9b904f5b7e9ea45b8ea5991f6eeb19c2f3949874</id>
<content type='text'>
If you have projects in different languages you can set different LSPs.
The default will still come from ~/.teco_ini if you decide to set one.
The default for $SCITECO_LSP_ROOT is set by session.tes' VCS integration
based on the VCS root, but you could still overwrite it per session.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If you have projects in different languages you can set different LSPs.
The default will still come from ~/.teco_ini if you decide to set one.
The default for $SCITECO_LSP_ROOT is set by session.tes' VCS integration
based on the VCS root, but you could still overwrite it per session.
</pre>
</div>
</content>
</entry>
<entry>
<title>LSP: use 0 (NULL) as the invalid value for GPid</title>
<updated>2026-08-11T19:05:49+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-11T19:05:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=1b43702731178ae8c2e4d5155e20ae1be6aa49c0'/>
<id>1b43702731178ae8c2e4d5155e20ae1be6aa49c0</id>
<content type='text'>
Should fix Windows builds.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Should fix Windows builds.
</pre>
</div>
</content>
</entry>
<entry>
<title>support lookups via language servers (LSP)</title>
<updated>2026-08-10T22:38:31+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-02T13:24:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=44f5bf677282308b959411c416da2b5b08db2062'/>
<id>44f5bf677282308b959411c416da2b5b08db2062</id>
<content type='text'>
* The main interface is the `FT` command.
  `FT` was an undocumented Video TECO command for etags/ctags lookups.
  I don't want to exactly copy its interface, though.
* `FT` allows looking up symbol names,
  definitions and references.
* ctags will be supported via ctags-lsp.
  LSP support is more powerful though and works without
  regenerating TAGS files all the time.
  The LSP will also allow you to customize auto-completions
  using SciTECO itself (i.e. by writing a language server
  in SciTECO).
* For multiple results, `FT$` can be used to cycle through
  results - this should mimic repeated `S$` or `N$`.
* `:FT...$` does a fuzzy search. IMHO it's not important
  to return a status integer instead. `FT` will only
  really be used in interactive mode.
* Document synchronization is supported via hooks from
  ring.c and via Scintilla notifications.
* Currently, the LSP communication is based on blocking
  GIOChannels. This means that a misbehaving hanging
  server could "lock up" the entire editor (FIXME).
  Only on ncurses you can always kill the subprocess by
  pressing CTRL+C.
  We need helper functions in spawn.c to read and write
  with interruptions.
* The textDocument/didChange notification transmits
  not only all edits, but all files' contents as well
  during initial synchronization.
  Therefore it is optimized to write and JSON-escape
  data without copying them around in memory and without
  destroying the buffer gap.
* Use $SCITECO_LSP to configure the language server.
  You can also use `tee` to capture stdin and stdout.
  Perhaps $SCITECO_LSP should be saved in .teco_session,
  so you can change it between projects?
* $SCITECO_LSP_ROOT is used to point to the project's
  root directory. session.tes will set it up automatically.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* The main interface is the `FT` command.
  `FT` was an undocumented Video TECO command for etags/ctags lookups.
  I don't want to exactly copy its interface, though.
* `FT` allows looking up symbol names,
  definitions and references.
* ctags will be supported via ctags-lsp.
  LSP support is more powerful though and works without
  regenerating TAGS files all the time.
  The LSP will also allow you to customize auto-completions
  using SciTECO itself (i.e. by writing a language server
  in SciTECO).
* For multiple results, `FT$` can be used to cycle through
  results - this should mimic repeated `S$` or `N$`.
* `:FT...$` does a fuzzy search. IMHO it's not important
  to return a status integer instead. `FT` will only
  really be used in interactive mode.
* Document synchronization is supported via hooks from
  ring.c and via Scintilla notifications.
* Currently, the LSP communication is based on blocking
  GIOChannels. This means that a misbehaving hanging
  server could "lock up" the entire editor (FIXME).
  Only on ncurses you can always kill the subprocess by
  pressing CTRL+C.
  We need helper functions in spawn.c to read and write
  with interruptions.
* The textDocument/didChange notification transmits
  not only all edits, but all files' contents as well
  during initial synchronization.
  Therefore it is optimized to write and JSON-escape
  data without copying them around in memory and without
  destroying the buffer gap.
* Use $SCITECO_LSP to configure the language server.
  You can also use `tee` to capture stdin and stdout.
  Perhaps $SCITECO_LSP should be saved in .teco_session,
  so you can change it between projects?
* $SCITECO_LSP_ROOT is used to point to the project's
  root directory. session.tes will set it up automatically.
</pre>
</div>
</content>
</entry>
<entry>
<title>imported sj.h - a minimalist JSON parser</title>
<updated>2026-08-10T21:55:40+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-02T13:04:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=9b78fc83dbd29b5594431b1c49b7d13865141aaa'/>
<id>9b78fc83dbd29b5594431b1c49b7d13865141aaa</id>
<content type='text'>
It will be useful for implementing LSP support.
It does not have JSON escape/unescape functions, so those
will still have to be written.

Source: https://github.com/rxi/sj.h
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It will be useful for implementing LSP support.
It does not have JSON escape/unescape functions, so those
will still have to be written.

Source: https://github.com/rxi/sj.h
</pre>
</div>
</content>
</entry>
<entry>
<title>testsuite: added test case for help command (`?`)</title>
<updated>2026-08-10T21:55:40+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-10T21:49:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=d00ff9b4d72eff882eac4529d9e3c4cd9423cc4c'/>
<id>d00ff9b4d72eff882eac4529d9e3c4cd9423cc4c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>when inserting text after auto completions, escape all magic string building characters</title>
<updated>2026-08-10T21:55:40+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-09T11:52:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=822b93aa765c7497b617ead419357f1be09e9ab0'/>
<id>822b93aa765c7497b617ead419357f1be09e9ab0</id>
<content type='text'>
This fixes insertion of strings containing ^, ^P, ^Q, ^R, ^V, ^W, ^E.
It mainly affects Q-Register specification auto-completions, but filenames
could theoretically also contain such special characters.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes insertion of strings containing ^, ^P, ^Q, ^R, ^V, ^W, ^E.
It mainly affects Q-Register specification auto-completions, but filenames
could theoretically also contain such special characters.
</pre>
</div>
</content>
</entry>
<entry>
<title>website: explicitly declare UTF-8 encoding and use local version of nerdfonts</title>
<updated>2026-08-08T10:57:07+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-08T10:57:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=573c9d9b60e2c4dca2be6ccd43ac92b8725f4453'/>
<id>573c9d9b60e2c4dca2be6ccd43ac92b8725f4453</id>
<content type='text'>
* Should fix some of the Groff-rendered pages which used Unicode symbols.
* Not hotlinking to nerdfonts.com hopefully improves SEO.
  Perhaps this prevented indexing!?
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Should fix some of the Groff-rendered pages which used Unicode symbols.
* Not hotlinking to nerdfonts.com hopefully improves SEO.
  Perhaps this prevented indexing!?
</pre>
</div>
</content>
</entry>
<entry>
<title>don't crash on `0S...$`, but always throw an error</title>
<updated>2026-08-07T19:23:59+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-07T18:47:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=8a8edaa2daf37f7c12e21b9199755b5de8e489f5'/>
<id>8a8edaa2daf37f7c12e21b9199755b5de8e489f5</id>
<content type='text'>
* This has been broken for some time, but it didn't crash in v2.5.2.
* Even when it did not crash, the search just failed.
  In TECO-11 (judging by TECOC), we must throw an error, though.
  Video TECO on the other hand always succeeds in such cases.
* Added test case
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* This has been broken for some time, but it didn't crash in v2.5.2.
* Even when it did not crash, the search just failed.
  In TECO-11 (judging by TECOC), we must throw an error, though.
  Video TECO on the other hand always succeeds in such cases.
* Added test case
</pre>
</div>
</content>
</entry>
<entry>
<title>.fmsbw/50-ubuntu22-appimage: hopefully fixed AppImage builds</title>
<updated>2026-08-07T19:23:59+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>rhaberkorn@fmsbw.de</email>
</author>
<published>2026-08-07T19:22:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=7a6e1ebb6e3257d62a472fe41aaead910904da54'/>
<id>7a6e1ebb6e3257d62a472fe41aaead910904da54</id>
<content type='text'>
I am unsure why it now suddenly causes problems.
pkg2appimage appears to download the appimagetool.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I am unsure why it now suddenly causes problems.
pkg2appimage appears to download the appimagetool.
</pre>
</div>
</content>
</entry>
</feed>
