#emacs #clojure
#emacs #clojure
Вопрос:
Я только начал использовать emacs starter kit amp; clojure-mode. Теперь, когда я набираю или вставляю ‘ (fn
‘ в буфер в режиме clojure, символы ‘ fn
‘ заменяются в окне слегка фигурным символом f в нижнем регистре. Буфер сохранен правильно, но это крайне раздражает, особенно после того, как я обнаружил эту функцию нелегким путем — ломая голову над чьим-то «невозможным» фрагментом кода и редактируя его до однострочного, прежде чем забрезжил свет. Есть идеи, почему он это делает, или, что более важно, как его отключить?
Комментарии:
1. Черт возьми — он делает это с помощью lambda и в режиме common-lisp. Итак, я предполагаю, что это emacs starter kit, а не clojure-mode.
2. Лично мне это действительно нравится! Это бросается в глаза визуально и делает более очевидным, что это лямбда. Я бы задал другой вопрос: как можно легко добавить эту функцию во все мои emacse?
3. @Markc: Я с тобой. Мне это нравится.
4. Лямбда, смысл которого я вижу. Отправка ‘fn’ почти, но не совсем ‘f’, не так сильно.
5. Я тоже только что обнаружил это на собственном горьком опыте. Есть ли какое-нибудь место, где мы могли бы отредактировать символ? Например, использовать вместо этого лямбда?
Ответ №1:
Это можно отключить, добавив следующую строку в свой init.el
после загрузки starter-kit-lisp.
(remove-hook 'clojure-mode-hook 'esk-pretty-fn)
Затем повторно загрузите Emacs, чтобы это вступило в силу.
Ответ №2:
Извините, что отвечаю на свой собственный вопрос. Это есть в starter-kit-lisp.el. Найдите строку, начинающуюся (eval-after-load 'clojure-mode
.
Комментарии:
1. Мне пришлось закомментировать строки, содержащие функцию,
esk-pretty-fn
а также(add-hook 'clojure-mode-hook 'esk-pretty-fn)
в обоихstarter-kit-lisp.el
иstarter-kit-lisp-autoloads.el
Ответ №3:
В emacs live вы можете отключить это поведение следующим образом:
В ~/.emacs.d/packs/live/clojure-pack/config/clojure-conf.el
прокомментируйте эти строки:
;;(eval-after-load 'clojure-mode
;; '(font-lock-add-keywords
;; 'clojure-mode `(("(\(fn\)[[[:space:]]"
;; (0 (progn (compose-region (match-beginning 1)
;; (match-end 1) "λ")
;; nil))))))
;;
;;(eval-after-load 'clojure-mode
;; '(font-lock-add-keywords
;; 'clojure-mode `(("\(#\)("
;; (0 (progn (compose-region (match-beginning 1)
;; (match-end 1) "ƒ")
;; nil))))))
;;
;;(eval-after-load 'clojure-mode
;; '(font-lock-add-keywords
;; 'clojure-mode `(("\(#\){"
;; (0 (progn (compose-region (match-beginning 1)
;; (match-end 1) "∈")
;; nil))))))
Перезапустите emacs, и больше никаких причудливых символов не будет.