在Emacs中,是否有一种方法控制光标/点在缩放模式扩展中的位置?
你知道吗,这样的事情?
("orgfootnote" "[fn:: %?]" nil 0)
答案 0 :(得分:3)
Abbrev本身不提供此功能,但它们提供了足够的钩子来进行外部操作。 E.g。
(define-skeleton my-orgfootnote "Docstring." nil
"fn::" _ "]")
然后使用像
这样的缩写("orgfootnote" "" my-orgfootnote)
答案 1 :(得分:1)
如果您需要填写模板,那么abbrev
是错误的工具。我强烈推荐yasnippet
。 abbrev
对于纠正频繁的拼写错误非常有用。
答案 2 :(得分:0)
如果你的意思是内置的缩写功能,那么这就是我对这个问题的看法。如果您有一个包含字符串@@的缩写词,那么在使用该词时,光标将被放置在扩展文本中@@出现的位置。
(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))))))))