Emacs: Befehl im Haskell-Modus neu definiert (hakell-mode-hook)

8

in Emacs im Haskell-Modus, ich wollte den Befehl

ändern
  • "C-x C-s"

bis

    "C-x C-s" gefolgt von "C-c C-1".

Ein Stichwort: Haskell.org: Emacs / Tastenbelegung und einfache Bedienung Ich habe versucht, die folgenden Varianten einzufügen in die .emacs-Datei, aber sie haben nicht funktioniert. Irgendwelche Vorschläge, wie ich die obige Funktionalität implementieren könnte, wären sehr willkommen! Danke.

Variante 1

%Vor%

Variante 2

%Vor%

[EDIT 1] @Tichon Jelvis: Das war definitiv eine gute Lernübung! Vielen Dank. Mit den in Ihrem Beitrag beschriebenen Methoden habe ich Ihre Funktion folgendermaßen geändert:

%Vor%

wobei die letzte Zeile den Cursor programmatisch zum interaktiven Fenster schaltet. Danke.

[EDIT2] Weitere Varianten sind:

%Vor%

und:

%Vor%     
artella 11.08.2012, 18:19
quelle

1 Antwort

6

Was Sie tun möchten, ist die Funktion C-x C-s auszuführen, gefolgt von der Funktion C-c C-l does. Sie können herausfinden, welche Funktion von einer Tastenbindung über C-h k ausgeführt wird. Das heißt, geben Sie zuerst C-h k und dann den Schlüsselbefehl ein, an dem Sie interessiert sind.

Dies gibt uns (save-buffer &optional ARGS) für C-x C-s und (inferior-haskell-load-file &optional RELOAD) für C-c C-l . % Co_de% bedeutet genau das, was du denkst - dieses Argument ist optional, also interessiert uns das nicht.

Schreiben Sie nun die Funktion, die beide Funktionen erfüllt:

%Vor%

Jetzt können Sie diese Funktion im Haskell-Modus an &optional binden, genau wie Sie es gemacht haben:

%Vor%

BEARBEITEN: Es scheint, dass C-x C-s Ihre Datei standardmäßig vor dem Laden speichert. Dies bedeutet, dass Sie einfach

schreiben können %Vor%

und haben genau den gleichen Effekt, ohne eine eigene Funktion zu schreiben. Ich denke jedoch, es ist eine gute Übung, es auf meine Art zu schreiben: P. Dieser Ansatz funktioniert immer dann, wenn Sie mehrere verschiedene Tastenkombinationen zu einem kombinieren möchten.

    
Tikhon Jelvis 11.08.2012, 20:38
quelle