2016-06-09 23 views
1

Ich habe den Großteil des Handbuchs gelesen und erkunde langsam die Dinge, die ich brauche, um Hauptmodi usw. zu machen. Ich habe noch nichts gelernt, was den Loop/Zyklus erklärt, den Emacs durchläuft, um den Major anzuwenden Modus (oder Moll-Modus gerade).Was macht Emacs, um einen Hauptmodus anzuwenden?

Zum Beispiel: Ich gebe if während im Go-Modus und plötzlich if ist Syntax-Highlight. Ich weiß, dass nur gemeinsame Buchstaben self-insert-command eingeben. Wie reagiert Emacs dann auf die Änderung im Puffer, es sei denn, entweder self-insert-command feuert und Ereignis oder nur die Puffer Brände und Ereignis ändern?

+0

Bitte schränken Sie Ihre Frage auf etwas Spezifisches ein. Sie beginnen damit, zu sagen, dass Sie den Zyklus von Ereignissen verstehen möchten, der auftritt, wenn Sie einen Hauptmodus aktivieren, und dann mäandern Sie etwas über "Wenn" und Syntax und fahren dann mit dem Ändern von Puffern fort. . . Die Frage, wie sie jetzt steht, sollte als zu weit geschlossen werden. Etwas von dem, was passiert, ist in C geschrieben und in die ausführbare Emacs-Datei eingebettet, und ein Teil davon ist Lisp. Ich benutze Emacs seit 3,5 Jahren ausgiebig, und ich kann sagen, dass nichts einfach ist - man kann Stunden/Tage damit verbringen, rückwärts zu suchen, um die Quelle zu finden, wo etwas angefangen hat. – lawlist

+0

Um mit der langen und nie endenden Reise zu beginnen, die Emacs ist, können Sie mit den folgenden Funktionen beginnen: 'M-x Describe-Taste' und geben Sie dann eine Tastenkombination ein, die Ihnen den Namen der Funktion gibt. Sie können dem Link mit der Maus folgen, wenn Sie den Quellcode installiert haben. Wenn Sie den Namen der Funktion oder der Variablen oder des Gesichts kennen und den Quellcode lesen möchten, geben Sie 'M-x Find-Funktion' oder' M-x Find-Variable' oder 'M-X Find-Face' ein. Wenn Sie den c-source code installiert haben und die Variable an ihrem Speicherort richtig eingestellt ist, können Sie auch Emacs verwenden, um zum Quellcode zu springen. – lawlist

+0

Emacs hat eine große Menge an allgemeinen Fähigkeiten, und jeder gegebene Modus kann diese Fähigkeiten nutzen (und oben neue implementieren). Modi (oder auch jeder andere Code) können dafür sorgen, dass Dinge zu bestimmten Zeiten passieren, häufig durch Hinzufügen einer Funktion zu einem * Haken * ('post-command-hook' und' self-insert-hook' sind zwei eher allgemeine Zwecke) Beispiele) oder durch die Verwendung von * Timer * (sowohl normale als auch * idle * -Sorten). Jede * spezifische * Funktion funktioniert möglicherweise anders als jede andere Funktion. Soweit eine Schleife/Zyklus geht, ist auf der obersten Ebene "C-h i g (elisp) Command Loop" und alles andere passiert von dort. – phils

Antwort

0

W.r.t Syntaxhervorhebung, dies wird durch jede Änderung des Puffers ausgelöst, egal welcher Befehl verwendet wird. Zu diesem Zweck verwendet das Paket, das darauf achtet, die Hervorhebung auf dem neuesten Stand zu halten (normalerweise jit-lock im Namen von font-lock), after-change-functions. Siehe C-hafter-change-functionsRET und überprüfen Sie auch die entsprechende Dokumentation im Emacs Lisp Referenzhandbuch (erreichbar über das Menü "Hilfe").