2020年2月11日火曜日

Emacs lisp で作ってみた、三つ目。khal への登録をemacsからやってみる。

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")))

Emacs の lsp の設定、なう(202310)

前回さらしてから、さらに1年。そう、3年めになる。 が、今回は一段と自信がない。 環境は、 Debian GNU/Linux 12 (bookworm) + emacs(29.1)。consult + company。 embark は未だに使ってない。 用途は、メモ と ...