Sprachunabhängiger Code-Editor mit erweiterten Formatierungs-/Hervorhebungsfunktionen

Ich suche einen Code-Editor mit bestimmten Funktionen. Für Windows, kommerziell oder kostenlos.

Liste der erforderlichen Funktionen:

  1. Der Editor sollte sprachunabhängig sein, und sprachabhängige Funktionen sollten anpassbar und über externe Definitionen importierbar/exportierbar sein, möglichst transparent für den Benutzer. Wenn ich also beispielsweise meine benutzerdefinierte Sprache erstelle, kann ich benutzerdefinierte Lexer- und Hervorhebungsschemata usw. erstellen. Die Möglichkeit, erweiterte Funktionen für jede Sprache zu verwenden oder zu erstellen (z. B. Grammatikprüfer, Variablen-/Funktionslisten usw.), wäre natürlich großartig.
  2. Skriptfähig/programmierbar : Muss Unterstützung für Skripterstellung (idealerweise mit Python) mit Zugriff auf Text, Caret und andere interne Editorfunktionen haben, damit ich Bearbeitungsfunktionen programmieren und sie an Verknüpfungen binden kann. Idealerweise mit der Möglichkeit, die GUI des Editors zu verwenden (z. B. eine Liste in einem Seitenbereich anzuzeigen usw.).
  3. Hochgradig anpassbare Funktionen zur Syntaxhervorhebung. Dh nicht nur grundlegende Dinge, sondern mit der Möglichkeit, das Styling für einzelne Zeichen und Sequenzen (zB Regex-Matching) zu definieren und so auf unterschiedliche Schriftart , Größe und Farbe für den Match einzustellen. (Bitte beachten Sie die Betonung). [*]
  4. Linien können unterschiedlich hoch sein . Wenn ich zum Beispiel den Styler auf 5pt-Schriftart einstelle und er mit der gesamten Linie übereinstimmt, hat die Linie 50% Höhe im Vergleich zu den Höhenlinien mit 10pt-Größe.
  5. Idealerweise mit Unterstützung für Zeileneinzüge (baumartige Bearbeitung). Die Einrückungsebene (Verschachtelungsebene) muss per Scripting zugänglich sein (z. B. um lauffähigen Python-Code zu generieren). ( Hinweis : Bitte verwechseln Sie Einrückungen nicht mit dem Einfügen von Leerzeichen oder Tabulatorzeichen! Einrückungen hier = nicht bearbeitbarer horizontaler Abstand).

[*] Wichtiger Hinweis zu Anforderung Nr. 3: Auch wenn einige Editoren besonders reichhaltige Formatierungsoptionen haben, besteht das allgemeine Problem darin, dass diese nur auf die sogenannten 'Tokens' (zB Schlüsselwörter, Funktionen) anwendbar sind. Beachten Sie also, dass dies nicht ausreicht. Um besser zu verstehen, was ich meine, hier sind konkrete Beispiele, was ich tun muss:

  • setze die Schriftart/Größe nur für kyrillische Buchstaben innerhalb von Strings;
  • Legen Sie die Schriftart/Größe nur für Zahlen innerhalb von Bezeichnern fest;
  • Legen Sie die Schriftart/Größe für den Bindestrich innerhalb eines Wortes fest; etc...

Weitere Kriterien (weniger wichtig):

  • es sollte schnell und reaktionsschnell sein, ohne viel Aufblähung;
  • Es wäre großartig, wenn es aktiv weiterentwickelt würde, damit zumindest die Möglichkeit besteht, dass einige nützliche Funktionen hinzugefügt werden.
  • erweiterte Skript-API für interaktive Funktionen, zum Beispiel die Fähigkeit, Mauskoordinaten zu lesen und das Zeichen oder die Linie unter dem Mauszeiger zu erkennen;
  • angemessene Tabellierungsunterstützung (Einrückungs-bewusst);
  • keine aufdringlichen lästigen Funktionen wie etwas Blinken, Animationen, Fokuswechsel, CPU & HDD in Beschlag nehmen usw.

Frage:

Bitte schlagen Sie einen Editor vor, der alle oben genannten Funktionen unterstützt.
Auch wenn nicht alles standardmäßig unterstützt wird, aber per Scripting/Erweiterung möglich ist, geben Sie bitte auch einen Vorschlag und einige Beschreibungen.

Mit anderen Worten, auch wenn der Editor nicht gerade ein Code-Editor ist, aber die Anforderungen erfüllen kann, kann er auch eine nützliche Antwort geben.

Nicht als echtes Beispiel - sondern nur um einen alternativen Ansatz zu veranschaulichen: So kann man zB mit Word oder Adobe InDesign den Code editieren, dann Sourcen generieren und an andere Tools weitergeben. Ja, das wäre für diese Aufgabe etwas absurd, aber nur um zu sagen - zB sind bei InDesign alle Hervorhebungsfunktionen und zB die Codegenerierung über Skripte möglich, also ist es theoretisch eine praktikable Option.


Was ich bisher mit Listen nach Feature getestet habe:

Notepad++

Dieser Editor erfüllt viele Anforderungen, aber dennoch sind viele Funktionen eingeschränkt. Superschnell, kein Aufblähen. Es basiert auf der Scintilla-Engine, die ihrer Zeit viele fortschrittliche Funktionen voraus hat. Über Plug-Ins ist einiges möglich. Als Anmerkung, die Entwicklung eines Plugins erfordert grundsätzlich die Entwicklung einer C++-Anwendung, was eine ziemliche Herausforderung sein kann.

Also zu meiner Featureliste:

  1. Teilweise. Um zB Hervorhebungen für eine benutzerdefinierte Sprache zu definieren, muss UDL verwendet werden, aber es ist begrenzt (siehe 3.). Eingebaute Lexer sind hartcodiert, Entwicklerhandbücher fehlen.
  2. Ja - zB mit dem PythonScript-Plugin, und es ist gut.
  3. Teilweise. Das Problem ist, dass Regex-basierte Übereinstimmungen nicht unterstützt werden.
    Daher kann ich Styler mit verschiedenen Schriftarten/Größen definieren, aber ich kann sie nur auf die Token anwenden, die vom Lexer (fest codiert) oder über UDL definiert werden, aber UDL ist auf den einheitlichen Grammatik-Tokenizer beschränkt (keine benutzerdefinierten Operatorgruppen , keine benutzerdefinierten Match-Sequenzen). Im Grunde unterstützt der Composer von Scintilla dies, aber der Editor stellt dies dem Benutzer nicht zur Verfügung, also keine Möglichkeit, es direkt zu verwenden.
  4. Nein (alle Zeilen sind gleich hoch).
  5. Nein.

gVIM

Toller Editor, super schnell und anpassbar. Aber ziemlich begrenzt in den grafischen Funktionen.

  1. Ja.
  2. Ja.
  3. Nein. (hiermit nur auf Monospaced-Schriftarten beschränkt , aber als netter Bonus hat es Regex-basierte Hervorhebungen)
  4. Nein.
  5. Nein.

VSCode

Ich habe es erst seit einiger Zeit getestet, daher kann ich mir bei einigen Funktionen nicht sicher sein. Es ist ziemlich langsam, also wird es auf einem Low-End-Rechner kaum nutzbar sein.

  1. ???. Scheint erweiterbar zu sein, um jede Sprache per Erweiterung zu unterstützen, aber das Gesamtbild ist unklar und seine Entwicklung scheint ziemlich chaotisch zu sein.
  2. ???. Erweiterungen sind möglich, aber eine klare Anleitung oder einen Dev-Guide konnte ich nicht entdecken. Außerdem scheint es, dass viele Teile des Kerneditors überhaupt nicht anpassbar/zugänglich sind.
  3. Nein.
  4. Nein.
  5. Nein.
Ich würde mir Geany ansehen - ich weiß, dass es 1 tut, 2 kann über Plugin-Entwicklung erfolgen, 3 bis zu einem gewissen Grad nativ, ansonsten siehe 2 und Plugins, 4 über Plugins/Plugin-Entwicklung, und ich denke, 5, aber ich tue es nicht Python machen...
@ivanivan Geany basiert wie Notepad++ auf Scintilla. Dies sollte bedeuten, dass 4 und 5 Nein sind (es sei denn, dies wird zu einer Funktion in Scintilla). Oder übersehe ich etwas?
@ivanivan gleiche Situation mit # 1/3 - um den Lexer der benutzerdefinierten Sprache zu definieren, müssen Sie höchstwahrscheinlich einen Fork des Editors pflegen und das gesamte Projekt kompilieren, worüber ich nicht sehr aufgeregt bin.

Antworten (3)

SynWrite (Freeware; CudaText ist ein Ersatz):

  • sprachagnostisch: check.
  • Skriptfähig/programmierbar: prüfen, über Python-Plugins.
  • Anpassbare Funktionen zur Syntaxhervorhebung: Überprüfung über den internen Lexer-Editor-Dialog. Dialog unterstützt auch unterschiedliche Schriftartnamen/-größen für Fragmente, dh „Tokens“.
  • Zeilen können unterschiedlich hoch sein: prüfen, der Editor passt die Zeilenhöhe an die Größe der "Tokens" in dieser Zeile an.
  • Unterstützung für Zeileneinzüge: aktiviert, Lexer Editor ermöglicht die Konfiguration von einzugsbasierten Faltungen.
  • Wichtiger Hinweis zu Anforderung Nr. 3 - nicht unterstützt, Lexer Highlite basiert auf "Tokens".
  • schnell und reaktionsschnell: check.

Sie könnten Sublime Text ausprobieren, es funktioniert recht gut und ist durch Python-Plugins und dergleichen wirklich anpassbar. Bei den Punkten 3, 4 und 5 bin ich mir nicht sicher, aber vielleicht sind sie über Plugins erreichbar.

Es lohnt sich wahrscheinlich, Textadept zu diesen Fragen und Antworten hinzuzufügen. Ein Blick auf die ! Symbole unten deuten darauf hin, dass dies eine schlechte Passform ist. Aber ich poste es, weil (a) ich mir darüber wirklich nicht sicher bin; und (b) es ist so schnell, leistungsstark und erweiterbar, dass es sich lohnt, es auszuprobieren. So erfüllt es die Kriterien von OP:

  1. Der Editor sollte sprachunabhängig sein | JaJa.
  2. Skriptfähig/programmierbar | JaJa, aber mit Lua , nicht mit Python.
  3. Hochgradig anpassbare Funktionen zur Syntaxhervorhebung | NotizIch denke schon, bin mir aber nicht sicher. Sehen Sie im Handbuch zur " Lexer-Syntax " nach, um zu sehen, ob es den Anforderungen entspricht.
  4. Linien können unterschiedlich hoch sein | NotizNicht sicher! Noch nie gemacht, aber wenn andere Kriterien erfüllt sind, lohnt es sich, dies zu überprüfen.
  5. Idealerweise mit Unterstützung für Zeileneinzüge (baumartige Bearbeitung) | NotizWieder nicht sicher.

Zusätzliche Anmerkungen :

  • sehr aktiv gewartet, mit reaktionsschnellem Entwickler (eigentlich wirklich beeindruckend)
  • Scintilla-basiert
  • sehr gut dokumentiert
  • Angesichts des Interesses von OP an Kyrillisch ist hier der Eintrag von Wikipedia.ru .