Wie konfiguriere ich SpaceMacs so, dass beim Start Code ausgeführt wird?

7

Vorwort

Ich weiß, dass der Titel subjektiv aussieht, aber ich möchte, dass diese Frage eine glatte Einführung in spacemacs für Neuankömmlinge ist nicht kommt aus emacs überhaupt (was mein Fall ist).

Sie wundern sich vielleicht, warum ich mich dazu entschlossen habe, spacemacs zu benutzen, was ein sehr angepasster Hack über Emacs ist, ohne sich die Zeit zu nehmen, sich zuerst an Vanille-Emacs zu gewöhnen. Nun, ich habe schon lange versucht, emacs und vim zu benutzen, weil ich verstehen konnte, warum diese Software die Produktivität steigern konnte und Sie sich bei der Programmierung / "zu Hause" fühlen ließen hacken.
Leider war die Zeit, die Sie zum Lernen benötigen, und vor allem die Zeit, die Sie für die Konfiguration dieser Software aufwenden müssen, viel zu hoch für mich.
Dann entdeckte ich spacemacs , was ein bisschen von dem, was in vim großartig ist, was in emacs großartig ist, und sie zu einem netten meist vorkonfigurierten Paket zusammenfügt.

Das Problem ist, dass die meiste Konfiguration über emacs-lisp erfolgt und erwartet, dass der Benutzer versteht, wie der Code geladen und ausgeführt wird, wenn Sie die Software starten, was ich komplett nicht tue (als ich anfing, das zu realisieren) mehr und mehr habe ich in den Code gegraben).

Was ich erreichen möchte

Ich möchte in der Lage sein, Emacs zu starten, und sehe, dass es einen benutzerdefinierten Code ausführt, den ich so schreiben würde, dass:

  • die Zeilennummern werden in jedem Puffer angezeigt, den ich öffne
  • git live Änderungen werden auf der linken Seite angezeigt
  • Symbole werden hervorgehoben, wenn der Cursor auf
  • steht
  • meine "Homepage" zeigt eine Liste von Projekten an und ich kann die neueste laden, die die Pufferkonfiguration vom letzten Mal
  • speichert

Ich möchte diese Features (und vielleicht noch eine Reihe anderer) bei Bedarf kodieren oder sie installieren, wenn sie bereits verfügbar sind.

Was ich versucht habe

(und was nicht funktioniert)

Ich (naiv) konfigurierte meine spacemacs wie jeder lisp / emacs-Neuling:

%Vor%

Die Frage

Ich bin mir bewusst, dass es ein Konzept namens "major-modes" und "minor-modes" gibt, die jeweils auf alle Puffer oder nur bestimmte Puffer-Instanzen zutreffen, aber ich bin auch sehr verwirrt darüber, dass Emacs seine eigene globale hat und lokale Variablen (die durch (setq) anpassbar zu sein scheinen), dass spacemacs auch Variablen oder Methoden zum Anpassen von (spacemacs/toggle-something-on) , aber auch (custom-set-variables) hat und dass das meiste, was ich tun möchte, mit "hooks erreicht werden kann ".

Die Dokumentation von spacemacs lässt mich völlig ahnungslos, weil es hauptsächlich davon ausgeht, dass Sie wissen, wie die Dinge funktionieren, und der Emacs ist wie ein Wartungsleitfaden für Nuklearanlagen.

Könnte jemand, der sich mit SpaceMacs auskennt, mir einen "Einstiegspunkt" geben , um diese Konzepte zu verstehen?

Ich möchte die Fragen beantworten können: "Oh, ich möchte dieses Verhalten anpassen, wo muss ich programmieren? Was sind die Methoden, die ich aufrufen sollte? Welche Methoden sollte ich nicht nennen? Welche Variable kann? Ich ändere / erstelle? Was wird tatsächlich ausgeführt, wenn ich meinen Code hier ablege? ... etc "

    
Jérôme 06.05.2016, 16:12
quelle

1 Antwort

26

Hier ist, was Sie wissen müssen, um loszulegen:

  • Die only Datei, die Sie berühren sollten, um Spacemacs anzupassen, ist ~/.spacemacs (oder ~/.spacemacs.d/init.el wenn Sie ein Verzeichnis bevorzugen). Sie sollten nichts in ~/.emacs.d anfassen. Sie sollten auch keine ~/.emacs -Datei haben.

  • Sie sollten die ~/.spacemacs -Datei einmal durchlesen, um alle möglichen Konfigurationsoptionen zu sehen, sie sind gut dokumentiert.

  • Die Datei ~/.spacemacs ist mit den folgenden Funktionen strukturiert:

    • dotspacemacs/layers : Dies ist der Ort, an dem Sie die Funktionen von Spacemacs konfigurieren können, z. B. die aktivierten Layer, die zusätzlichen Pakete, die Sie benötigen, die ausgeschlossenen Pakete, die Sie nicht wollen, usw. ... Das sollten Sie nicht tun Hinzufügen / Entfernen einer Variablen oder eines Codes dort, nur ändern vorhandene Werte.

    • dotspacemacs/init : Hier können Sie die von Spacemacs angebotene Anpassung aktivieren / deaktivieren, z. B. Ändern des Führungsschlüssels, Verwenden von https für die Aktualisierung, Einschalten von Zeilennummern usw. Sie sollten nicht hinzufügen / entfernen Sie dort eine Variable oder einen Code, nur ändern vorhandene Werte.

    • dotspacemacs/user-init : Hier können Sie SpaceMacs anpassen, bevor Pakete geladen werden. Es gibt nur wenige Fälle, in denen dies erforderlich ist, nur wenn Variablen festgelegt werden sollen, bevor Pakete geladen werden. Zum Beispiel indem ranger-override-dired auf t gesetzt wird, so dass wenn ranger geladen wird, wird es tun, was benötigt wird, um dired Funktionalitäten mit seinen eigenen zu überschreiben. Dies zu tun, nachdem das Paket geladen wurde, würde nicht funktionieren, da es zu spät sein wird. Wenn Sie sich nicht sicher sind, ob Sie die Anpassung dort oder in dotspacemacs/user-config platzieren, sind Anpassungen in dotspacemacs/user-config wahrscheinlich. Versuchen Sie es zuerst, und wenn es nicht funktioniert, können Sie versuchen, die Variable hier zu setzen.

    • dotspacemacs/user-config : Dies ist der Ort, an dem Sie höchstwahrscheinlich Ihre gesamte persönliche Konfiguration vornehmen werden . Dies wird ausgeführt nachdem alle Pakete geladen und konfiguriert wurden, so dass es jede andere Konfiguration überschreibt.

  • Die Konfiguration von Emacs erfolgt in Emacs lisp , daher benötigen Sie grundlegende Kenntnisse, um Spacemacs zu konfigurieren. Es gibt keinen anderen Weg. Die wirklich Grundlagen:

    • (<function>) : Funktionsaufruf.
    • (<function> <arg_1> <arg_2> …) : Funktionsaufruf mit Argumenten.
    • (setq <variable> <value>) : Setze den Wert einer Variablen.

Bei Ihren Fragen:

Hinweis: Ich habe gesehen, dass Sie gesagt haben, dass einige dieser Konfigurationen nicht funktionieren, aber sie funktionieren wie erwartet für mich. Bitte versuchen Sie, Hilfe bei gitter anzufordern, damit Sie das Problem beheben können.

  • «Die Zeilennummern werden in jedem Puffer angezeigt, den ich öffne» : Es gibt bereits eine Konfigurationsoption, die Sie dafür in ~/.spacemacs aktivieren können (welche als Übung erlaubt ist) für den Leser :-)).

  • «git Live-Änderungen werden auf der linken Seite angezeigt» : Ich habe (setq diff-hl-side 'left) in mein user-config eingefügt und das funktioniert. IIRC Dies ist nicht möglich, im Terminal (nicht GUI) -Modus von Emacs anzupassen.

  • «Symbole werden hervorgehoben, wenn der Cursor über» »/ SPC t h a eingeschaltet werden. Sie können es zur Startzeit aktivieren, indem Sie (spacemacs/toggle-automatic-symbol-highlight-on) von user-config aufrufen. Beachten Sie, dass das Paket mit dieser Funktionalität einige Probleme aufweist und nicht mit einigen anderen Paketen kompatibel ist ( Ссылка , Ссылка ).

  • «my" home page "zeigt eine Liste von Projekten an und ich kann die neueste laden, die sich an die Pufferkonfiguration vom letzten Mal erinnert» : Die Liste der letzten Projekte sollte sichtbar sein, wenn Sie Habe projects in der dotspacemacs-startup-lists Variable. Das letzte Speichern der Windows-Layouts kann durch Festlegen von dotspacemacs-auto-resume-layouts auf t erfolgen. Sie müssen etwas über layouts erfahren, wenn Sie möchten pro-Projekt-Layouts verwenden können. Zum Beispiel:

    • SPC p l , um ein Projekt in einer neuen Perspektive zu öffnen
    • Ändern Sie Ihre Fensterkonfiguration für dieses Projekt
    • Mit SPC p l können Sie eine neue Perspektive für ein Projekt öffnen
    • Ändern Sie die Fensterkonfiguration für dieses Projekt
    • Verwenden Sie SPC l n , um zwischen den Projekten
    • zu wechseln
    • Beenden Sie Spacemacs
    • Starten Sie Spacemacs und kehren Sie zu Ihren Projekten mit ihrer Perspektive mit SPC l n zurück (funktioniert nur, wenn dotspacemacs-auto-resume-layouts auf t gesetzt ist).
  • «TODO Whitespaces anzeigen» : Kann mit SPC t w für einen Puffer oder SPC t C-w für alle Puffer umgeschaltet werden. Sie können (spacemacs/toggle-whitespace-globally-on) in user-config verwenden, um es beim Start zu aktivieren.

  • «;; Rost »: Am develop wird dies nicht benötigt, solange Sie die rust Ebene verwenden.Es ist vielleicht nicht auf master für jetzt.

Einige zusätzliche Informationen

  • Es gibt major-mode und minor-mode . Diese beziehen sich nicht auf die Tatsache, dass sie nur für einen oder alle Puffer gelten. Stattdessen hat jeder Puffer einen und nur einen , major-mode (wie python-mode , ruby-mode usw.). Jeder Puffer kann mehrere minor-mode haben (wie linum-mode ). Einige minor-mode sind global in dem Sinne, dass sie sich auf alle Puffer auswirken, wie global-centered-cursor-mode .

  • Emacs-Lisp-Variablen können global oder buffer-local sein. Das Ändern einer global -Variable wirkt sich auf alle Puffer aus. Das Ändern einer buffer-local -Variable mit (setq … wirkt sich nur auf den aktuellen Puffer aus. Es ist möglich, den Standardwert einer buffer-local -Variablen mit (setq-default … zu ändern. Dies wird den Wert für alle neu erstellten Puffer ändern.

    buffer-local Variablen haben Standardwerte, aber sie können von hooks überschrieben werden, wenn sie in einen gegebenen Modus eintreten. Zum Ändern solcher Werte für eine Art von Puffern sollte eine Funktion dem Hook hinzugefügt werden, zum Beispiel:

    %Vor%
  • Spacemacs bietet tatsächlich einige Toggle-Funktionen für einige Funktionen. Sie heißen (spacemacs/toggle-…) und am Ende fügen Sie -on oder -off hinzu oder deaktivieren sie.

  • (custom-set-variables) ist Teil des customize -Teils von Emacs, und dies sollte mit Spacemacs vorerst vermieden werden, da ihr Verhalten nicht gut definiert ist ( Ссылка kann dies lösen.

  • «Ich möchte die Fragen beantworten können:" Oh, ich möchte dieses Verhalten anpassen, wo muss ich programmieren? Was sind die Methoden, die ich aufrufen sollte? Welche Methoden sollte ich nicht nennen? Welche Variable? kann ich ändern / erstellen? Was wird tatsächlich ausgeführt, wenn ich meinen Code hier ablege? ... etc "»:

    Spacemacs, wie Emacs oder vim, ist ein mächtiges Werkzeug. Wie jedes mächtige Werkzeug braucht es einige Zeit, um sich daran zu gewöhnen, sich damit wohl zu fühlen. Wenn Sie mit dem Steuern eines Flugzeugs beginnen möchten, wissen Sie nicht intuitiv, welche Taste Sie drücken müssen, um dies oder das zu tun. Wenn du etwas erreichen willst, musst du ein wirklich langes Handbuch durchgehen oder einen Lehrer bekommen. Das Gleiche gilt für Spacemacs. Es gibt eine Dokumentation , eine Schnellstart und eine Migration von vim Dokumenten. Sie sind ziemlich lang, aber weil die Möglichkeiten so lang sind wie die Dokumente. Die andere Möglichkeit besteht darin, Hilfe von einem "Ausbilder" zu erhalten, d.h. Spacemacs regelmäßigen Mitwirkenden. Ich würde dir empfehlen, zum Gitterzimmer zu kommen, das sehr aktiv und hoffentlich hilfreich ist.

StreakyCobra 07.05.2016, 11:16
quelle

Tags und Links