Assembled from development commit c3c40f6c8fca. Since 830b193: on Windows the
products carry Windows names (ktext.exe, klammertext.dll, document.dll,
reflect.dll) and the console's output code page is UTF-8 for a run; the
editor tooling works on Windows (VS Code, Sublime Text, Vim, with the
interpreter's name chosen by platform) and Notepad++ joins it
(doc/edit/notepadpp: a User Defined Language and two Run-menu commands);
a sixth install page, doc/install/windows_wsl_install.md, for Linux
inside WSL; the Windows page opens with the three routes and gains its
editor section, the PowerShell quoting and Path notes; the Linux page
installs OpenImageIO from the python3-openimageio package and verifies
with kdiag --machine; the README lists all six install pages. Linux and
macOS behaviour is unchanged.
Klammertext support for Notepad++
Notepad++ support for editing Klammertext files (.kt documents and .k
klammer definitions): syntax highlighting through a User Defined
Language, and the shared editor core's delimiter check and
reindentation through two Run-menu commands. Notepad++ is Windows
only, and so is this package.
Notepad++ has no Python plugin host and no built-in language-server client, so it cannot import the shared core the way Sublime Text does or talk to the language server the way VS Code does. What it has is a declarative highlighter and a Run menu that can invoke any program on the current file, and this package uses exactly those two things.
Files
| File | Purpose |
|---|---|
Klammertext.udl.xml |
The User Defined Language: highlighting for the three @-tiers, escapes, text removal, and the @code verbatim interior. Its header lists what it colours and the limits of a UDL. |
klammertext_edit.py |
The shared editor core (in the editing zip it sits here; in the Klammertext repository it is doc\edit\shared\klammertext_edit.py). The Run commands call it. |
README.md |
This file. |
Requirements
- Notepad++ 7.9 or later (the
userDefineLangsfolder; any recent version qualifies). - For the Run commands:
pythonon thePath, which the Klammertext installation already needs.
Install the highlighting
Copy Klammertext.udl.xml into Notepad++'s user-defined-language folder
and restart Notepad++:
$d = "$env:AppData\Notepad++\userDefineLangs"
New-Item -ItemType Directory -Force $d | Out-Null
Copy-Item Klammertext.udl.xml $d
Notepad++ loads every file in that folder at start. .kt and .k files
then open as "Klammertext" (the language shows in the status bar and at
the bottom of the Language menu). The alternative is the dialog:
Language → User Defined Language → Define your language… → Import…,
which copies the file to the same place.
What you see: klammer applications (@name … @) in blue, definitions
(@@name … @@) in green, system commands (@@@name … @@@) in orange;
a # at the start of a line greys the rest of the line, #[ … ]# greys
and folds a region; ##, #-, #+, #/, | and : in the marker
red; the interior of @code … code@ muted and uninterpreted. The
colours are the palette's light-ground values with transparent
backgrounds, so a dark theme keeps its own ground.
Two limits, both properties of a UDL rather than of Klammertext, are
documented in the file's header: a # that is not the first thing on
its line is not treated as a comment (so that the whitespace operators
#-, #+, #/ never grey the rest of their line), and @c … c@ is not
made verbatim (a UDL delimiter has no word boundary, so @c would also
open at @caption and @cond).
The Run commands
The shared core's command-line interface reads a file on standard input
and writes the result on standard output; Notepad++'s Run → Run…
dialog (F5) runs a command line with the current file's path filled in
as $(FULL_CURRENT_PATH). Two commands cover the structural tools.
Replace C:\Users\<you>\klammertext\doc\edit\shared with the folder that
holds klammertext_edit.py (with the editing zip, the folder this
README is in).
Check the delimiters — lists every unclosed opening, extra close,
name or tier mismatch, and unclosed literal span or #[ block, as
line:column: message; an empty window means the file is balanced.
The /k keeps the window open to read:
cmd /k python "C:\Users\<you>\klammertext\doc\edit\shared\klammertext_edit.py" check < "$(FULL_CURRENT_PATH)"
Reindent the file — rewrites the file with the canonical
indentation (2 spaces per nesting level, bars and closes at their
opener's column, @document transparent, verbatim and removed text
untouched):
cmd /c python "C:\Users\<you>\klammertext\doc\edit\shared\klammertext_edit.py" indent < "$(FULL_CURRENT_PATH)" > "$(FULL_CURRENT_PATH).tmp" && move /y "$(FULL_CURRENT_PATH).tmp" "$(FULL_CURRENT_PATH)"
Paste each line into the Run dialog once, press Save…, give it a
name ("Klammertext check", "Klammertext reindent") and a shortcut
(Ctrl+Alt+K, Ctrl+Alt+I are free); they then appear at the bottom of
the Run menu with those keys.
Two things to know about the reindent command. It works on the file
on disk, so save first (Ctrl+S); Notepad++ does not save before
running. And after it runs, Notepad++ notices the changed file: with the
default setting it asks whether to reload, which you answer Yes; under
Settings → Preferences → MISC. → File Status Auto-Detection the
choice "Update silently" makes the reload automatic. Undo history is
lost on a reload, as for any external edit.
Table alignment and jump-to-match need a caret position the Run dialog cannot pass, so they are not offered here. They are available in every other supported editor, and for Notepad++ through the PythonScript plugin, which embeds a Python that can import the shared core and reach the caret; a script for it is a possible addition, not part of this package.
Keeping things in sync
The UDL restates the literal-klammer set (@code) that the shared core
owns in LITERAL_KLAMMERS; its header says how to add one. The editor
support's overview is doc/edit/README.md in the Klammertext repository.