Emacs php-mode и paredit

Я хотел бы использовать paredit в сочетании с php-mode, но он не добавляет закрывающую фигурную скобку "}". Может быть, это как-то связано с тем фактом, что электрическая скобка связана с "{"? И как я мог перезаписать это?

Благодарю.

3 ответа

Решение

Использование paredit в php-mode - плохая идея - в основном оно подходит для редактирования кода на Лиспе. Тем не менее, есть очень хорошая альтернатива для разработки общего назначения - autopair-mode. Он очень прост в использовании и вставляет фигурные скобки, скобки и кавычки аналогично тому, что присутствует в большинстве IDE.

Некоторое время назад я написал такую ​​вещь для C, но вы можете легко использовать ее и для PHP:

(define-minor-mode c-helpers-minor-mode
  "This mode contains little helpers for C developement"
  nil
  ""
  '(((kbd "{") . insert-c-block-parentheses))
)

(defun insert-c-block-parentheses ()
  (interactive)
  (insert "{")
  (newline)
  (newline)
  (insert "}")
  (indent-for-tab-command)
  (previous-line)
  (indent-for-tab-command)
  )

(add-hook 'php-mode-hook 'c-helpers-minor-mode)

По моему опыту, autopair-mode чувствовал себя крайне вялым, когда было открыто большое количество буферов (плюс, paredit-mode гарантирует, что разделители никогда не будут разбалансированы, в отличие от autopair-mode). Так что, если, как и я, вы абсолютно хотите использовать paredit-mode и больше ничего не поделаешь, взгляни на этот ответ. В приведенном там фрагменте elisp просто замените slime-repl-mode-map а также slime-repl-mode-hook с соответствующими переменными для php (скорее всего php-mode-map а также php-mode-hook)

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