Ich möchte lernen, wie ein erweiterbarer Texteditor implementiert wird. Mit erweiterbar meine ich die Fähigkeit, die Funktionalität des Hauptprogramms mit Code zu erweitern, der von den Benutzern geschrieben wurde, wie Plugins, Laufzeitkonfigurationsdateien usw.
Welche würdest du empfehlen - vim
, emacs
oder etwas anderes? Es gibt kilo , das für seinen DIY-Ansatz ziemlich beliebt ist, und ich erwäge das als Ausgangspunkt, aber mein Hauptaugenmerk liegt darauf, zu lernen, wie man eine erweiterbare Software schreibt.
Ich mag ein paar Dinge emacs
wie die Lesbarkeit der Konfigurationsdatei (einfach Aufrufen von einfachen alten Funktionen mit Argumenten), das Mutieren der Umgebung selbst usw. Es gibt auch einige gute Bücher darüber emacs
wie The Craft of Text Editing . Ein Nachteil ist jedoch, dass elisp
es manchmal langsam sein kann.
Ich mag ein paar Dinge vim
wie die modale Bearbeitung ( <action>
<motion>
), die Bearbeitungsgeschwindigkeit usw. Allerdings ist die Konfigurationsdatei manchmal etwas kryptisch, da es hauptsächlich darum geht, einen Schlüsselsatz an einen anderen neu zu binden, was ich nicht wirklich finde lesbar oder intuitiv (intern könnte es auch Funktionen aufrufen, aber die Lesbarkeit ist geringer). Außerdem bin ich mir nicht sicher, ob es Lehrbücher über vim
das Design von gibt?
Hier ist eine sehr nette Ressource, die ich im Internet über Texteditoren gefunden habe: http://texteditors.org/ .
Sehen Sie sich den CudaText- Editor an, er ist in Lazarus geschrieben und hat alle möglichen Erweiterungen: Python-Plugins, Farbthemen, Syntax-Lexer usw.
Ich denke, es gibt mehrere Ansätze, um etwas erweiterbar zu machen.
Schauen Sie sich Atom an, entwickelt von Github. (atom.io)
Nishant