Emacs ставит новую строку после закрывающей скобки

Пока это все, что у меня есть в моем.emacs:

(when
    (load
     (expand-file-name "~/.emacs.d/elpa/package.el"))
  (package-initialize))

(require 'paredit)

(add-hook 'c++-mode-hook '(lambda () (paredit-mode 1)))

И так с установкой paredit я начинаю вводить некоторый код в новый файл C++: (где [] представляет курсор)

if (someFunc([)]))

Теперь вместо нажатия клавиши со стрелкой вправо или чего-то подобного, я обычно вхожу в правую часть, так как она расположена рядом с левой и намного удобнее.

Однако, после этого, paredit делает новую строку:

if (someFunc ()
             [)]

Как мне помешать Паредиту сделать это?

2 ответа

Решение

Обновить до последней версии paredit-mode, Из заголовка комментария здесь:

;;; The key bindings are designed so that when typing new code in
;;; Paredit Mode, you can generally use exactly the same keystrokes as
;;; you would have used without Paredit Mode.  Earlier versions of
;;; paredit.el did not conform to this, because Paredit Mode bound `)'
;;; to a command that would insert a newline.  Now `)' is bound to a
;;; command that does not insert a newline, and `M-)' is bound to the
;;; command that inserts a newline.

ELPA может быть устаревшим. Последняя версия - 22, она доступна по http://marmalade-repo.org/.

Также обратите внимание, что paredit-mode предназначен для работы с языками на основе s-exp, такими как lisp или схема. Это может быть не лучшим выбором для режима C++. Если вы используете paredit в основном для вставки совпадающих скобок, а не для ярлыков s-exp и навигации, вам лучше воспользоваться electric-pair-mode,

Возможно, вы также захотите попробовать автопару, доступную по адресу http://autopair.googlecode.com/ которая прекрасно работает с C/C++, где paredit может быть не лучшим выбором.

Другие вопросы по тегам