【问题标题】:How to expand yasnippet snippet inside html file如何在 html 文件中扩展 yasnippet 片段
【发布时间】:2013-08-10 17:15:30
【问题描述】:

我有一个创建空 html 文件的 lisp 脚本:

(let ((mode "html-mode"))

  (funcall (intern mode)))

(write-region "" nil "index.html")

然后我使用 yasn-p 生成基本的 html 文件: 我有一个名为“base”的 sn-p(我按 TAB 键来展开它)

有没有办法在我的 lisp 脚本中使用这个 sn-p?

我尝试了,但没有成功使用(yas/expand-sn-p base)

谢谢。

古尔文。

编辑

使用 abo-abo 的代码,我得到了一些运行良好的东西:

(defun create-web-site-test()
  (interactive)
  (setq msg (concatenate 'string "Create web site in : " default-directory))
  (if (y-or-n-p msg)
    (progn  
     (write-region "" nil "./index.html")
     (find-file "./index.html")
     (html-mode)    
     (insert "\nbase")
     (yas/expand)
     (save-buffer)
     (kill-buffer))
    (progn
      ;; Give up
      (message "Ok, nothing will be donne, bybye...")
      )))

我只需要使用 Mx cd 将当前目录设置到正确的位置。 可能有一个更有效的解决方案,无需在缓冲区中打开文件。但是这个已经很酷了。 谢谢阿布阿布

【问题讨论】:

    标签: emacs elisp yasnippet


    【解决方案1】:

    这应该可行:

    (progn
      (html-mode)
      (insert-file-contents "~/index.html")
      (insert "\nbase")
      (yas/expand))
    

    请尝试阅读 elisp 手册。 非常好。

    更新

    我已经更新了功能。我看你是新人。 为了得到一个好的答案,你需要清楚地说明你的 想要做。如果这个答案有用,请不要忘记 投票并接受。

    此外,您的代码中应使用一些 cmets:concat 对于字符串,而不是 concatenate。最好不要 使用y-or-n-p - 做你想做的事,然后 如果要中止,请使用 C-g

    (defun create-test (directory)
      (interactive "D")
      (with-current-buffer (find-file-noselect 
                            (concat directory "index.html"))
        (delete-region (point-min) (point-max))
        (html-mode)
        (insert "base")
        (yas/expand)
        (save-buffer)
        (kill-buffer)))
    

    【讨论】:

    • 感谢您的回答 abo-abo。我认为它会帮助我做我想做的事。您的代码不能完美运行,因为 sn-p 在暂存缓冲区中展开,而不是在 index.html 文件中。我将在 Emacs Lisp 手册中查看如何正确操作文件和缓冲区。
    • 我会记住您的建议,对于表述不够清晰深表歉意。我会尽快查看您的代码。再次感谢您。
    • 事实上,我使用 y-or-n-p 是因为我没有找到一种方法来导航我的文件系统以选择文件夹。也谢谢你!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多