3 Stimmen

Emacs - Kommentarzeichen nach Dateierweiterung einstellen

Ich arbeite mit einer bestimmten Gruppe von Dateien (ASCII lesbar), aber mit seltsamen Erweiterungsnamen. Das Kommentarzeichen in all diesen Dateien ist #

Immer wenn ich Zeilen kommentiere, muss ich das Kommentarzeichen für jeden Datei-Öffnen-Schließen-Zyklus festlegen. Gibt es eine Möglichkeit, in der ich die .emacs Datei einrichten kann, um zu wissen, welches Kommentarzeichen verwendet werden soll?

7voto

phils Punkte 68556

Leben alle Dateien innerhalb eines gemeinsamen Verzeichnisbaums?

Wenn ja, könnten Sie einfach eine Datei namens .dir-locals.el auf oberster Ebene dieses Baums platzieren, mit dem Inhalt:

((fundamental-mode . ((comment-start . "#"))))

Weitere Informationen finden Sie unter:
C-hig (emacs) Directory Variables RET

(Dieser Ansatz hat den Bonus, dass auch andere Personen, die Emacs verwenden, um auf diese Dateien zuzugreifen, von der Datei .dir-locals.el profitieren.)

Ansonsten würde ich dazu neigen, einen einfachen abgeleiteten Modus mit diesem Kommentarzeichen zu erstellen und alle diese Dateierweiterungen damit zu verknüpfen. Wenn Sie mit diesen Dateien an vielen verschiedenen Orten arbeiten, wäre das wahrscheinlich der richtige Weg:

(define-derived-mode my-mode fundamental-mode "MyMode"
  "Kommentare beginnen mit `#'."
  (set (make-local-variable 'comment-start) "#"))

(add-to-list 'auto-mode-alist '("\\.\(foo\|bar\)\\'" . my-mode))

Dadurch starten Dateien mit den Erweiterungen .foo und .bar im Modus my-mode mit dem Kommentarzeichen #.

6voto

Chris Barrett Punkte 3313

Fügen Sie die folgende Zeile irgendwo in Ihrer init.el ein:

(setq-default comment-start "# ")

Dadurch wird "# " zur Standardkommentarzeichenfolge im Fundamentalmodus, was sowieso eine vernünftige Voreinstellung ist.

0voto

PascalVKooten Punkte 19311

Was du tun könntest, ist (setq comment-start "#") jedes Mal in einem dieser Puffer auswerten. Dadurch wird sichergestellt, dass wenn du (comment-region) auf einen Bereich ausführst, es funktioniert, sowie mit (comment-dwim).

Du könntest sogar eine Tastenkombination als Funktion dafür binden.

EDIT: Nach Experimenten glaube ich, dass nachdem du es einmal in Emacs ausgewertet hast, es in fundamental mode so bleiben wird. Das sollte sehr praktisch sein, da du es nur einmal auswerten musst.

0voto

Trey Jackson Punkte 72000

Sie können diesen Code-Schnipsel verwenden und die Variable anpassen, um die Paare von regulären Ausdrücken (die Dateinamen (Erweiterungen) entsprechen) und Kommentarzeichen zu enthalten. Und wenn Sie comment-end setzen möchten, machen Sie die Paare zu Triplets und passen Sie die Funktion entsprechend an.

(defvar comment-based-on-extension-alist '((".el$" . "gg") (".txt$" . " >") (".odd$" . "$"))
  "alist von regexps und Kommentarzeichen")

(defun setup-comment-based-on-extension ()
  (let ((alist comment-based-on-extension-alist))
    (while alist
      (when (string-match-p (caar alist) (buffer-file-name))
        (setq comment-start (cdar alist))
        (setq alist nil))
      (setq alist (cdr alist)))))
(add-hook 'find-file-hook 'setup-comment-based-on-extension)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X