2

在 Emacs 中,有没有办法控制光标/点在缩写模式扩展中的位置?

你知道,像这样的东西?

("orgfootnote" "[fn:: %?]" nil 0)
4

3 回答 3

4

Abbrev 本身不提供此功能,但它们提供了足够的钩子以在外部完成此功能。例如

(define-skeleton my-orgfootnote "Docstring." nil
  "fn::" _ "]")

然后使用像这样的缩写

("orgfootnote" "" my-orgfootnote)
于 2013-03-13T18:19:29.203 回答
2

如果您的意思是内置的缩写功能,那么这就是我对这个问题的看法。如果您有一个包含字符串@@ 的缩写词,那么在此情况下,光标将被放置在扩展文本中@@ 出现的那个位置。

 (defadvice expand-abbrev (after my-expand-abbrev activate)
   ;; if there was an expansion
   (if ad-return-value
       ;; start idle timer to ensure insertion of abbrev activator
       ;; character (e.g. space) is finished
       (run-with-idle-timer 0 nil
                            (lambda ()
                              ;; if there is the string "@@" in the
                              ;; expansion then move cursor there and
                              ;; delete the string
                              (let ((cursor "@@"))
                                (if (search-backward cursor last-abbrev-location t)
                                    (delete-char (length cursor))))))))
于 2013-03-13T15:31:47.570 回答
1

如果你需要填写一个模板,那abbrev就是错误的设施。我强烈推荐yasnippetabbrev不过,对于纠正频繁的拼写错误非常有用。

于 2013-03-13T16:12:10.303 回答