Emacs ставит новую строку после закрывающей скобки - PullRequest
2 голосов
/ 28 января 2012

Пока это все, что у меня есть в моем .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 ()
             [)]

Как я могу предотвратить это от paredit?

Ответы [ 2 ]

2 голосов
/ 28 января 2012

Обновление до последней версии 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.

1 голос
/ 30 января 2012

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

...