我正在使用 qq 函数在Perl中存储我的SQL请求。像这样:
qq{
SELECT
table1.name,
table1.description
FROM
table1
WHERE
table1.id=?
}
但是在Emacs cperl-mode中,不可能在qq中使用 tab ,这会减慢我的工作量。我该如何解决?
答案 0 :(得分: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