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
)