1

空の html ファイルを作成する Lisp スクリプトがあります。

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

  (funcall (intern mode)))

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

次に、yasnippet を使用して基本的な html ファイルを生成しています。「base」という名前のスニペットがあります (TAB キーを押して展開します)。

私の Lisp スクリプトでこのスニペットを使用する方法はありますか?

試してみましたが、うまくいきませんでした (yas/expand-snippet 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 を使用して現在のディレクトリを適切な場所に設定するだけです。バッファ内のファイルを開かずに、おそらくより効果的な解決策があります。しかし、これはすでにかなりクールです。ありがとうアボアボ

4

1 に答える 1

0

これはうまくいくはずです:

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

そして、ぜひ elisp のマニュアルを読んでみてください。これはとてもいいです。

UPD

機能を更新しました。私はあなたが新しいことを参照してください。良い答えを得るには、何をしたいのかを明確に述べる必要があります。この回答が役立つ場合は、賛成票を投じて受け入れることを忘れないでください。

また、コードに関するいくつかのコメント: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)))
于 2013-08-09T15:09:41.330 に答える