#| Markdown をプレビューする 前提・必須環境 ・xyzzy 本体 ・xyzzy 用の markdown-mode.l ・xyzzy 用の browserex.l とその動作環境(browser.dllなど) ・外部ライブラリpandoc 使用方法 (load-library "markdown-preview.l") ;markdownをautoloadしている場合は 当キーバインド設定を消すか、hookで読み込む様変更してください。 Copyright TKI License all free (改造・再利用、商用OK,リンクや著作権記載不要) 素材そのものを、販売するのはNG 他者への攻撃や、私へのイメージの悪くなる社会的利用NG 素材そのものを他者へ転送すること・複製することは私のサイトが有る間はNG |# (defvar *markdown-preview-output-folder* (merge-pathnames "markdown" "~/")) (defvar *markdown-preview-output-file* "temp.html") (defvar *markdown-preview-insert-str* "\n \n \n \n ") (defun preview-markdown (&optional (fn (get-buffer-file-name))) (interactive) ;input check (C-uだと聞いてくる) (when *prefix-args* (read-string "file(.md): " :default fn :history *minibuffer-file-name-history*)) ;テンポラリフォルダ作成:初期設定 (let ((fp (concat *markdown-preview-output-folder* "/" *markdown-preview-output-file*))) (unless (file-exist-p *markdown-preview-output-folder*) (create-directory *markdown-preview-output-folder*) (find-file (concat *markdown-preview-output-folder* "/readme.txt")) (insert "markdown-preview.l で使用します。\nフォルダごと消しても再作成するので問題ありません") (save-buffer) (delete-buffer (selected-buffer))) ;utf-8の場合、xyzzyで追加処理したり、iconv外部ツールと組み合わせる (call-process (format nil "pandoc -f markdown -o ~A -t html ~A " fp fn) :show :hide :wait t) ;ブラウザ文字化け対策 (html charset :utf-8) (find-file fp) (goto-char 0) (insert *markdown-preview-insert-str*) (goto-char (point-max)) (insert " \n") (save-buffer *encoding-utf8*) (delete-buffer (selected-buffer)) ;browserex 表示 (bx:navigate fp) (message "show markdown:~A" fn) )) ;キーバインド (define-key md::*markdown-mode-map* #\F5 'preview-markdown) ;ツールバー (defun markdown-preview-tool-bar () (create-tool-bar 'markdown-preview-tool-bar (merge-pathnames "toolbar.bmp" (etc-path)) '(("プレビュー" 51 preview-markdown) ))) (define-command-bar 'markdown-preview-tool-bar "markdown-preview")