如何在yas-selected-text无换行结尾时自动插入换行?
解决YASnippet模板中选中文本换行自动处理问题
环境设置
现有Lisp代码片段:
; indentation guides (setq highlight-indent-guides-method 'character)
以及YASnippet模板:
#+BEGIN_SRC ${1:elisp} :tangled `yas-selected-text`#+END_SRC $0
问题现象
选中包含末尾换行符的整行文本时,生成结果正常,#+END_SRC单独占一行;但如果选中的文本不含末尾换行符,#+END_SRC会和Lisp代码挤在同一行。
解决方案
修改YASnippet模板,通过Elisp表达式自动处理选中文本的换行:
#+BEGIN_SRC ${1:elisp} :tangled `(let ((text (yas-selected-text))) (if (string-suffix-p "\n" text) text (concat text "\n")))`#+END_SRC $0
说明
- 用
string-suffix-p检查选中文本是否以换行符\n结尾 - 若已包含换行,直接使用原文本,避免生成多余空行
- 若未包含换行,自动拼接一个换行符,确保
#+END_SRC始终单独占一行
内容的提问来源于stack exchange,提问作者masukomi
相关产品推荐
相关产品推荐

