Emacs lisp で、自分なりに機能追加、みたいな真似事。三つ目。
予定管理に使っている khal(github) への登録を、emacs の org-mode からやれるようにしてみた。
terminal へ移動してコマンド入力とか、ミニバッファでコマンドを打つとか、 pet(github) に shell を登録したり、 shell-pop(github) とか使ってみたが、 やはり、打ち間違いの予防にはなりそうになかった。 で、org-mode を使っているなら、その恩恵をと考えた次第。
というか、打ち間違いで日付を間違えて入力してしまったのが引き金。
以下が、作ってみたやつ。 org-mode のスケジュール入力のインターフェースを使っている。 しかし、引用元が多すぎて困ってしまう。
;;; khalentry - khal new ;; ;;; code: (defun khalentry () "khal new entry." (interactive) (let* ((default-directory (expand-file-name "~")) (arg_0 "khal") (arg_1 "new") (arg_2 "-a") (categ (format "%s" (read-from-minibuffer "> select category (work/pubs/private/bikes) " nil nil t))) ;; (b_date (org-read-date 'org-whit-time nil nil "start datetime #1: " nil "0:00" nil)) (e_date (org-read-date 'org-whit-time nil nil "end datetime #2: " nil "0:00" nil)) ;; (fb_date (format-time-string "%Y%m%d %H:%M" (date-to-time b_date))) (fe_date (format-time-string "%Y%m%d %H:%M" (date-to-time e_date))) ;; (event (read-from-minibuffer "> event name : " "")) (descr (format ":: %s" (read-from-minibuffer "> description : " ""))) (kcommand (format "%s" (list arg_0 arg_1 arg_2 categ fb_date fe_date event descr))) ) ;; (shell-command-to-string (mapconcat #'shell-quote-argument (list arg_0 arg_1 arg_2 categ fb_date fe_date event descr) " ")) (message "%s" kcommand) ) ;; )
コピペの産物は時間だけが過ぎてゆく作業で、身にならない。マニュアルから造れるようになれといつもの反省だけが残る。
入力の自由度とか欲しいけど、まあ、なんとなく使えそうなんで、一区切りにして様子見とした。
[20200519]
スケジュールを記述した場所なら、日時とタイトルをデフォルト値として表示するようにしてみた。以下に置き換え。 スケジュールの有無の判定とか私には無理。
(s_date (org-entry-get nil "SCHEDULED")) ;; (b_date (org-read-date 'org-whit-time nil nil "start datetime #1: " nil s_date nil)) (e_date (org-read-date 'org-whit-time nil nil "end datetime #2: " nil s_date nil)) ;; (fb_date (format-time-string "%Y%m%d %H:%M" (date-to-time b_date))) (fe_date (format-time-string "%Y%m%d %H:%M" (date-to-time e_date))) ;; (event (read-from-minibuffer "> event name : " (org-entry-get nil "ITEM")))
0 件のコメント:
コメントを投稿