У меня в настоящее время есть это в моем .emacs, который прекрасно работал в Linux:
;; paredit
;; this is from somewhere else on Stackoverflow
;; deals with curly brackets matching and stuff
;; I edited the answer a little bit
(defmacro setup-paredit (func-name mode-map)
`(defun ,func-name ()
(define-key ,mode-map
(kbd "DEL") 'paredit-backward-delete)
(define-key ,mode-map
(kbd "{") 'paredit-open-curly)
(define-key ,mode-map
(kbd "}") 'paredit-close-curly)
(modify-syntax-entry ?\{ "(}")
(modify-syntax-entry ?\} "){")
(modify-syntax-entry ?\[ "(]")
(modify-syntax-entry ?\] ")[")
(modify-syntax-entry ?~ "' ")
(modify-syntax-entry ?, " ")
(modify-syntax-entry ?^ "'")
(modify-syntax-entry ?= "'")))
(defmacro setup-paredit-mode (func-name mode-map mode-hook)
`(progn (setup-paredit ,func-name ,mode-map)
(add-hook ',mode-hook ',func-name)
(add-hook ',mode-hook 'enable-paredit-mode)))
;; probably doing lots of things wrong but at least this seems to work well
(setup-paredit-mode setup-c++-paredit c++-mode-map c++-mode-hook)
(setup-paredit-mode setup-slime-repl-paredit slime-repl-mode-map slime-repl-mod\
e-hook)
(setup-paredit-mode setup-slime-paredit slime-mode-map slime-mode-hook)
(setup-paredit-mode setup-clojure-paredit clojure-mode-map clojure-mode-hook)
(setup-paredit-mode setup-emacs-paredit emacs-lisp-mode-map emacs-lisp-mode-hoo\
k)
(setup-paredit-mode setup-css-paredit css-mode-map css-mode-hook)
Но последний бит в Mac OS X заставляет клавиши со стрелками производить следующий вывод:
[C [A [D [A [B [D [C [B [D [B [D]]]]]]]]]]]
Еще одна странная вещь при нажатии C-x C-c
:
Symbol's function definition is void: switch-to-buffer-in-tab
Я, наконец, убил его с помощью C-x C-z
.
Этого не произойдет, если я закомментирую последнюю часть после ;; probably...
так что проблема, вероятно, лежит там.Как мне решить проблему?
РЕДАКТИРОВАТЬ :
Я нашел this .Просто скопировать код там не сработало.Нажатие клавиш со стрелками дало мне следующее:
# ESC [ ⇧A ESC [ ⇧B ESC [ ⇧C ESC [ ⇧D #
Будучи новичком, я не уверен, как "корректировать приведенный выше код соответствующим образом", хотя.(И что делает эта стрелка вверх?)
EDIT 2 :
Проблема C-c C-x
, по крайней мере, кажется, как-то решена с помощью этого .emacsкод:
;; Fix Mac arrow keys
(if (not window-system);; Only use in tty-sessions.
(progn
(defvar arrow-keys-map (make-sparse-keymap) "Keymap for arrow keys")
(define-key esc-map "[" arrow-keys-map)
(define-key arrow-keys-map "⇧A" 'previous-line)
(define-key arrow-keys-map "⇧B" 'next-line)
(define-key arrow-keys-map "⇧C" 'forward-char)
(define-key arrow-keys-map "⇧D" 'backward-char)))
Клавиши со стрелками все еще не работают, когда paredit активен.
EDIT 3 :
Я должен добавить, что все это происходитвнутри терминалаЯ не уверен, что это все еще происходит с графическим интерфейсом, потому что мой .emacs почему-то заставляет Aquamacs не отображать никаких окон.
Клавиши со стрелками работают нормально в Emacs GUI, но не в режиме -nw
.