Emacs использует <tab> внутри qq в режиме cperl
Я использую функцию qq для хранения моих запросов SQL в Perl. Как это:
qq{
SELECT
table1.name,
table1.description
FROM
table1
WHERE
table1.id=?
}
Но в Emacs cperl-mode невозможно использовать tab внутри qq, что замедляет мою работу. Как я могу это исправить?
1 ответ
Решение
Emacs обладает замечательными возможностями, которые действительно хорошо понимают синтаксис, учитывая, что он не является полным анализатором.
Попробуйте это в вашем файле инициализации.
(defun my-cperl-indent-command ()
"indent as cperl normally
indent relatively inside multi-line strings.
"
(interactive)
(let ((state (syntax-ppss)))
(if (and (nth 3 state) ;string
(and (nth 8 state) ;multi-line?
(< (nth 8 state) (point-at-bol))))
(indent-relative)
(cperl-indent-command))))
(eval-after-load "cperl-mode" '(define-key cperl-mode-map [remap cperl-indent-command] 'my-cperl-indent-command))
Конечно, вам все еще нужно настроить indent-relative
заставить его делать именно то, что вы хотите. увидеть tab-to-tab-stop