<Emacs-Lisp>org-modeからmapae記事の自動作成コマンド
ずいぶん久しぶりにEmacs-Lispのプログラミングに取り組んでみましたが、忘れていることも多くて大変でした。一応、目標としていた機能は実現できたみたいですが、ソースコードの可読性もよくなく、手直しの必要もありそうです。
同じものをもう一度作るとなると大変なので、保管をかねてソースコードをアップしておきます。環境依存で読み書きするファイルも決めうちしてありますので、そのままでは使い物にもならないと思いますが、よろしければ、参考程度にしてください。作るは時間も掛かりますが、一度作ってしまえば、作業が大幅に自動化できるので、とても便利です。
本当にコマンド一つで動くようにしたのですが、前置引数を指定することで、事前にTexファイルのコンパイルをするようにしました。
;;2009-03-31
(defun h-cocolog-0rg2send (&optional arg)
"cocolog blog"
(interactive "P")
(unless (null arg)
(save-excursion
(let* ((workbuf
(buffer-name
(or
(get-buffer "kokuso-tex.org")
(find-file-noselect
"~/saisinn/kokuso-tex.org"))))
(create-file
(progn
(string-match "\\(.+\\)\\..+" workbuf)
(replace-match "\\1.tex" nil nil workbuf))))
(switch-to-buffer workbuf)
(save-excursion
(call-interactively 'org-export-as-latex-to-buffer))
(switch-to-buffer "*Org LaTeX Export*")
(save-excursion
(beginning-of-buffer)
(h-gtlt2escape)
(h-tex-preamble))
(write-file create-file)
(kill-buffer workbuf))))
(let* ((mblst nil) (mbf nil)
sp ep tmpbuf fn startp mapaelst
(buflist-search (lambda () (setq mblst (mapcar '(lambda (x) (buffer-name x)) (buffer-list)))))
(mapae-search
(lambda ()
(while (not (null mblst))
(if (string-match "\\+mapae:.*" (car mblst))
(add-to-list 'mapaelst (car mblst))
())
(setq mblst (cdr mblst))))))
(funcall buflist-search)
(funcall mapae-search)
(when (null mapaelst)
(progn (mapae-new-post)
(funcall buflist-search)
(funcall mapae-search)
(message "新規にmapae記事投稿のバッファを作成しました。\n%s"
mapaelst)))
(setq mbuf (car mapaelst))
(message "select mapae バッファ OK ")
(switch-to-buffer mbuf)
(let (sp ep)
(beginning-of-buffer)
(search-forward "DESCRIPTION:" nil t)
(next-line)
(beginning-of-line)
(setq sp (point))
(search-forward "EXTENDED:" nil t)
(previous-line 2)
(end-of-line)
(setq ep (point))
(if (>= sp ep)
(goto-char sp)
(progn (kill-region sp ep)
(setq startp (point)))))
(message "ここまで来ました。")
(save-excursion
(if (setq fn (get-buffer "kokuso-tex.org"))
(progn
(message "Change buffer %s" fn)
(switch-to-buffer fn))
(progn
(message "Create file buffer")
(setq fn (switch-to-buffer
(find-file-noselect
"~/saisinn/kokuso-tex.org")))))
(call-interactively 'org-export-as-html)
(setq tmpbuf (get-buffer-create "***tmp***"))
(setq sp (beginning-of-buffer))
(setq ep (end-of-buffer))
(call-process-region
sp ep "sed" nil tmpbuf nil
"-f" "/home/u8w/saisinn/cocolog-css")
(switch-to-buffer tmpbuf)
(let ((beg (beginning-of-buffer))
(end (end-of-buffer)))
(append-to-buffer mbuf beg end)
(message "change %s" mbuf))
(switch-to-buffer mbuf))
(kill-buffer tmpbuf)
(goto-char startp)))
追記:
今になって気がついたのですが、Texのコンパイルは全く無関係の作業でした。関係あるのはHTMLエクスポートでした。
4月1日になったところです。これで18年目を迎えたことになります。これを節目に気持ちも行動も切り替えていきたいと考えています。
| 固定リンク
| コメント (0)
| トラックバック (0)
最近のコメント