You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 09:18:14