« iOS等のブラウザにJavaScriptを送信して実行できるXiangpian(CUIモード編) | メイン | ブラウザで開いているタブが最前面かどうかを判断する »

Emacsでの見た目そのままにソースコードをブラウザで開くコマンドを作った

せっかくなのでコマンド化してみた。
openコマンドを使っているのでMac OS X専用。
以下のコードを「.emacs」等に追記してEmacsを再起動。
(defun htmlize-and-browse ()
  (interactive)
  (defcustom
    htmlize-and-browse-directory-path temporary-file-directory
    "htmlize-and-browse-temporary-file-directory"
    :type 'string
    :group 'htmlize-and-browse)
  (setq htmlize-and-browse-buffer-file-name (concat "htmlize-and-browse-" (format-time-string "%Y%m%d%H%M%S" (current-time)) ".html"))
  (setq htmlize-and-browse-buffer-file-path (concat htmlize-and-browse-directory-path htmlize-and-browse-buffer-file-name))
  (with-current-buffer (htmlize-buffer)
    (write-file htmlize-and-browse-buffer-file-path)
    (set-buffer-modified-p nil)
    (kill-buffer htmlize-and-browse-buffer-file-name)
    (shell-command (concat "open " htmlize-and-browse-buffer-file-path))
  )
)

(defun htmlize-and-browse-by-safari ()
  (interactive)
  (defcustom
    htmlize-and-browse-directory-path temporary-file-directory
    "htmlize-and-browse-temporary-file-directory"
    :type 'string
    :group 'htmlize-and-browse)
  (setq htmlize-and-browse-buffer-file-name (concat "htmlize-and-browse-" (format-time-string "%Y%m%d%H%M%S" (current-time)) ".html"))
  (setq htmlize-and-browse-buffer-file-path (concat htmlize-and-browse-directory-path htmlize-and-browse-buffer-file-name))
  (with-current-buffer (htmlize-buffer)
    (write-file htmlize-and-browse-buffer-file-path)
    (set-buffer-modified-p nil)
    (kill-buffer htmlize-and-browse-buffer-file-name)
    (shell-command (concat "open -a safari " htmlize-and-browse-buffer-file-path))
  )
)
標準ブラウザで開くなら「M-x htmlize-and-browse」で、今回はSafariで開く必要があるので「M-x htmlize-and-browse-by-safari」を使う。

保存場所を変更したい場合は「.emacs」に以下のようなコードを追記する。
(setq htmlize-and-browse-directory-path "~/htmlize/")
Lisp初心者なのであまり綺麗なコードではないと思う。
聡明なLisperが綺麗に書き直してくれると良いなぁ...。
というか、自分で書いておいてなんだけど、これ便利だな。
参考URL
以下、参考にしたページ。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google

タグ クラウド