Configuration¶
One file, key = value, one per line. # starts a comment.
font_family = JetBrains Mono
font_size = 12
theme = simple-nord
vim_mode = true
line_numbers = relative
:config opens it. Every key is listed in
Every config key.
Where it is¶
| Linux, BSD | $XDG_CONFIG_HOME/ase/config.ase, i.e. ~/.config/ase/config.ase |
| Windows | %APPDATA%\ase\config.ase |
It is written for you the first time ase starts, with every key commented and explained. Deleting it and restarting gives you a fresh one.
It reloads while you watch¶
Save the file and the editor picks it up — colours, font, line numbers, everything. There is no reload command and no restart.
That is also true of a mistake: a key the editor does not know, or a binding pointing at a command that does not exist, is reported in the status bar as soon as you save. A typo that silently did nothing was indistinguishable from a broken feature, so it says so instead.
Per-project settings¶
A .ase.conf beside your code applies to that project only. The nearest
one at or above the file wins.
It may set only filetype.* — what a suffix means:
# .ase.conf in a C++ project that uses .h headers
filetype.h = cpp
It may not set build_command, lsp_command, or anything else that
names a program to run. A repository you cloned writes this file, and
opening a file in it should not be able to execute something. Anything
else in it is ignored, and the editor tells you it was.
See ADR 0087.
Colours¶
Nine colour keys, #RRGGBB or #RRGGBBAA. You rarely want to set them
by hand — pick a theme instead, which sets all nine.
If you have set one by hand, a theme leaves it alone. A value you changed is a decision; a value still equal to what shipped is not, and a theme may replace it.
Large files¶
Syntax highlighting is parsed on its own thread, so a large file opens and edits without waiting for it — the colours arrive when the parse finishes and the text is plain until then.
syntax_max_kb (4096 by default) is the point past which a file gets no
highlighting at all. That bounds memory, not responsiveness: a parsed
buffer costs roughly 26 times its source size. Raise it if you routinely
open very large files and have the memory for it.
Languages and servers¶
lsp_command = clangd # any language without its own
lang.python.lsp = pylsp # one language
lang.rust.lsp = rust-analyzer
filetype.h = cpp # what a suffix means
See Language servers.
Build command¶
build_command = cmake --build build
:compile or Alt+B runs it and puts the output in a panel below the
buffer. %f in the command is replaced with the current file, so
gcc %f -o /tmp/a.out works on whatever you are looking at.