Kilua est un petit éditeur de texte extensible et alimenté par Lua.

Le projet était à l'origine basé sur l'éditeur de kilo minimal écrit à l'origine par @antirez, et présenté ici sur son blog, mais ne partage désormais aucun code avec ce projet, juste une ascendance.
Kilua a été écrit par Steve Kemp et dispose de nombreuses mises à jour et ajouts par rapport au projet original:
Mx function() .lua-lpeg . Le lancement kilua fonctionne comme vous vous en doutez:
$ kilua [options] [file1] [file2] ... [fileN]
Une fois lancé, les touches Arrow vous déplaceront, et les principales clés à apprendre sont:
Ctrl-x Ctrl-o Open an existing file.
Ctrl-x Ctrl-f Open an existing file.
Ctrl-x Ctrl-s Save the current file.
Ctrl-x Ctrl-c Quit.
Ctrl-x c Create a new buffer
Ctrl-x n Move to the next buffer.
Ctrl-x p Move to the previous buffer.
Ctrl-x b Select buffer from a list
M-x Evaluate lua at the prompt.
Ctrl-s Regular expression search.
Les options de ligne de commande suivantes sont reconnues et comprises:
--config file--dump-config--eval--syntax-path--versionL'installation doit être simple, pour construire le code exécuté:
make
Une fois construite, vous pouvez exécuter le binaire de manière portable, comme ainsi:
./kilua --syntax-path ./syntax [options] [file1] [file2] .. [fileN]
L'utilisation de --syntax-path est nécessaire pour charger les fichiers de syntaxe, mais vous pouvez supprimer l'option si vous copiez le contenu du répertoire ./syntax/ dans l'un ou l'autre:
/etc/kilua/syntax/~/.kilua/syntax/Si vous ne spécifiez pas l'emplacement des bibliothèques de syntaxe-highlighting ou que vous ne les installez pas, vous n'aurez aucune prise en charge de syntaxe-highlight.
Ceci est une conséquence de la mise en place du code de syntaxe-highlighting dans les bibliothèques externes: si vous ne pouvez pas charger ces bibliothèques, la fonctionnalité ne sera pas disponible.
Nous construisons avec LUA 5.2 par défaut, mais si vous modifiez src/Makefile vous devriez également pouvoir construire avec succès avec LUA 5.1.
Au démarrage, les fichiers de configuration suivants sont lus s'ils sont présents:
~/.kilua/init.lua ../.kilua/$hostname.lua .*Messages* pour voir lequel a été trouvé, le cas échéant. Si aucun fichier n'est lu, la copie intégrée de kilua.lua , qui a été générée au moment de la construction, sera exécutée, ce qui garantit que la fonctionnalité minimale est présente. (c'est-à-dire que si vous chargez des fichiers de configuration zéro, il n'y aura pas de configuration de clés pour que vous ne puissiez ni naviguer ni modifier!)
Il est supposé que vous modifierez le fichier de démarrage fourni, pour modifier les liaisons en fonction de vos besoins, ajoutez des fonctionnalités via les primitives Lua fournies, puis copiez ensuite dans ~/.kilua/init.lua (peut-être l'extension avec un fichier par hôte également).
Sans aucune modification, vous obtiendrez un éditeur fonctionnel qui suit mes préférences particulières.
Pull-Requests La mise en œuvre de fonctionnalités utiles sera reçue avec merci, même pour ajouter de la syntaxe-highlighting pour des langues supplémentaires.
À l'avenir, d'autres rappels pourraient être implémentés, qui sont des fonctions que les appels C à différents moments.
À l'heure actuelle, les rappels suivants existent et sont invoqués via le Core C:
get_status_bar()on_complete(str)on_idle()on_key(key)on_loaded(filename)on_save(filename)on_saved(filename) kilua permet d'ouvrir plusieurs fichiers, via l'utilisation de tampons. Si kilua est lancé sans aucun paramètre de nom de fichier, il y aura deux tampons:
*Messages*Ctrl-x Ctrl-s , ou Mx save("name") , pour l'enregistrer. Sinon, il y aura un tampon pour chaque fichier nommé sur la ligne de commande, ainsi que le tampon *Messages* . (Vous pouvez tuer le tampon *Messages* si vous le souhaitez, mais c'est une chose pratique à avoir.)
Les aliments par défaut des clés pour travailler avec des tampons sont:
| Action | Obligatoire |
|---|---|
| Créez un nouveau tampon. | Ctrl-x c |
| Tuez le tampon actuel. | Ctrl-x k |
| Tuez le tampon actuel, de force. | Ctrl-x K |
| Sélectionnez le tampon suivant. | Ctrl-x n ou M-right |
| Sélectionnez le tampon précédent. | Ctrl-x p ou M-left |
| Choisissez un tampon, via le menu. | Ctrl-x b ou Ctrl-x B |
Il convient de noter que vous pouvez facilement créer des tampons dynamiquement, via Lua, par exemple la fonction suivante peut être appelée par Mx uptime() , et faire ce que vous attendez:
*uptime* ./usr/bin/uptime dans le tampon.Échantillon de disponibilité:
-- Run `uptime`, and show the result in a dedicated buffer.
function uptime()
local result = buffer( "*uptime*" )
if ( result == -1 ) then create_buffer("*uptime*") end
-- move to end of file.
eof()
insert(cmd_output("uptime"))
end
Vous pouvez enregistrer votre position (c'est-à-dire "Mark") dans une clé nommée, et plus tard, sauter, tout comme dans vi .
Pour enregistrer la position actuelle, utilisez Mm et appuyez sur la touche que vous souhaitez utiliser. Pour y retourner, utilisez Mb XX où XX était la clé que vous avez choisie. (Les marques enregistrent le tampon, ainsi que la position actuelle du curseur.)
La barre d'état, indiquée comme avant-dernière ligne de l'écran, contient le nom du fichier / tampon actuel, ainsi que la position du curseur, etc.
Le contenu de la barre d'état est généré via LUA, il est donc simple à modifier. L'affichage par défaut affiche:
"${buffer}/${buffers} - ${file} ${mode} ${modified} #BLANK# Col:${x} Row:${y} [${point}] ${time}"
Les valeurs à l'intérieur " ${...} " sont étendues via des substitutions et les éléments suivants sont fournis par défaut:
| Nom | Signification |
|---|---|
${buffers} | Le nombre de tampons ouverts. |
${buffer} | Le nombre du tampon actuel. |
${date} | La date actuelle. |
${file} | Le nom du fichier / tampon. |
${mode} | Le mode de syntaxe-éclairage utilisé, le cas échéant. |
${modified} | Une chaîne qui rapporte si le tampon est modifié. |
${point} | Le personnage sous le point. |
${time} | L'heure actuelle. |
${words} | Le nombre de mots dans le tampon. |
${x} | La coordonnée x du curseur. |
${y} | La coordonnée y du curseur. |
Les refontes de traction ajouter plus d'options ici seraient les bienvenues.
La mise en évidence de la syntaxe est gérée via la bibliothèque lua-lpeg , et donc si cela n'est pas installé, il ne sera pas disponible.
Chaque tampon a un mode de syntaxe-highlighting associé, qui est une chaîne telle que "C", "Markdown" ou "Lua". Le fichier de configuration par défaut définit le mode en fonction du suffixe du fichier que vous modifiez.
Si vous souhaitez modifier le mode de manière interactive en Lua, par exemple, alors exécutez:
M-x syntax("lua")
L'implémentation de la mise en évidence de la syntaxe nécessite le chargement d'une bibliothèque. Par exemple, la mise en évidence de la syntaxe de LUA nécessite que la bibliothèque lua.lua soit chargée - les modes de syntaxe sont recherchés dans ces emplacements:
/etc/kilua/syntax~/.kilua/syntax--syntax-path .L'implémentation est assez simple:
update_colours permettra de définir la couleur de chaque caractère dans le tampon. Pour éviter les retards lors de l'insertion du texte, le rendu est mis à jour en arrière-plan, via le rappel on_idle() . Cette fonction fait la chose évidente:
text() .update_colours() . À titre d'exemple en béton, si le tampon contient la chaîne "Steve Kemp", alors l'appel à update_colours doit contenir:
`RED RED RED RED RED WHITE GREEN GREEN GREEN GREEN`
Cela entraînerait un "Steve" affiché en rouge et "Kemp" en vert.
Actuellement, nous incluons la syntaxe-éclairage pour:
Makefile s.Les refontes de traction ajoutant plus de modes de syntaxe seraient les bienvenues.
https://news.ycombinator.com/item?id=12137698
Il n'y a pas de plans futurs évidents, mais des rapports de bogues peuvent être faits si vous avez une fonctionnalité à suggérer (ou un bug à signaler)!
Une chose qui pourrait être utile est un dispositif séparé, pour afficher deux fichiers côte à côte, ou l'un au-dessus de l'autre. Ce n'est pas encore planifié, mais je pense que cela pourrait être fait assez proprement.
Steve - https://steve.kemp.fi/