Emacs lisp で、自分なり機能追加、みたいな真似事をやってみた。
自分で学んでやったことは、ほんの僅か。インターフェースとかを組み合わただけだが、なんと時間のかかったかこと。
きっかけは、 org-refile の初回起動が遅くて、イラッとするので、少しぐらい改善できたら、と思ったから。
パソコンが遅いのもあるが、 refile先を細かく分けたからだと思う。ちなみに、NAS へ置いてあるファイルを加えると、たまらなく遅い。
[20191015] 例えば、ここなど、かなり よさそう。最初に読んでいれば、違った方法をやったかも。
やったこと。やろうとしていること。
- refile に使うファイルはたいがい決ってるので、事前登録しておく。
- このファイルを指定して、 `other-window` で開く。
- プレビュとかで移動先を確認する。
- カーソルを元に戻して、リファイル(avy-org-refile-as-childを使ってみる)。
NAS上のファイルへのアクセスも選択的になる。当然、全部は無理なので、 avy-org-refile-as-child までの操作を hydra との組み合わせでやってみた。 bookmark をうまく使えばいいじゃない、という思いもあったが一度やってみてもと思った。
プレビュで、 owdrive で other-window 操作しようと思ったが、ターゲットのorgファイルがfoldで開く設定にしているので止めた。その替りに、hydra メニューに outline-minor-mode の項目を追加してみた。
取り敢えず動いたという感じ。
本当にこんなのが必要なのかは、使ってみてからなのだが、今のところ、 `boolmark-jump-other-window` と `avy-org-refile-as-child` を組合せるだけで十分だったかも。ただ、ショートカットでファイル選択は、いいかも、という印象。できれば、 開き直しに対応させたいが、ハードル高そう。
hydra を含めた全体は以下。実際のターゲットファイルは18個と多い。絞り込めるか。
(setq tflist '("captured.org" ;; 0 "todo.org" ;; 1 "bike_memo.org" ;; 2 "cuekoma.org" ;; 3 "emacs_memo.org" ;; 4 "linux_memo.org" ;; 5 "python.org" ;; 6 "memos.org" ;; 7 "raspi_memo.org" ;; 8 )) ;; (defun my-targetfile-open (n) "open target file other windows" (interactive) (setq targetfile (concat "~/Documents/ownCloud/" (nth n tflist))) (find-file-other-window targetfile) ;; (other-window -1) ;; 直前に戻る (message "open target file : %s" targetfile) ) ;; (defhydra hyd-opentartget (:pre (progn (bm-toggle) (hl-line-mode 1) ) :post (progn (bm-toggle) (hl-line-mode -1) (other-window -1) ) :hint nil) "open target file" ("t" (my-targetfile-open 1) "todo.org" :column "agenda" :exit t) ("m" (my-targetfile-open 7) "memos.org" :exit t) ("b" (my-targetfile-open 2) "bike_memo.org" :exit t) ("p" (my-targetfile-open 6) "python.org" :exit t) ;; ("e" (my-targetfile-open 4) "emacs_memo.org" :column "regular") ("r" (my-targetfile-open 8) "raspi_memo.org" :exit t) ("l" (my-targetfile-open 5) "linux_memo.org" :exit t) ;; ("J" (forward-line 1) "next line" :column "OL move cursor") ("K" (forward-line -1) "previous" ) ("U" (scroll-up 5) "sc up 5" ) ("D" (scroll-down 5) "sc dn 5" ) ;; ("N" outline-next-visible-heading "next head") ;; Next ("P" outline-previous-visible-heading "prev head") ;; Previous ;; ("}" outline-forward-same-level "f same") ;; Forward - same level ;; ("{" outline-backward-same-level "b same") ;; Backward - same level ("T" (beginning-of-buffer 0) "top" ) ("G" (end-of-buffer 0) "bottom" ) ;; ("M" outline-show-all "show all" :column "ol show") ("T" outline-show-entry "show this") ("S" outline-show-subtree "show below all") ("X" outline-show-children "show child") ;; ("Z" outline-hide-subtree "hide below" :column "ol hide") ("F" outline-hide-body "hide body") ("C" outline-hide-entry "hide this") ("O" outline-hide-other "hide others") ("H" outline-hide-leaves "hide bellow body") ;; ("q" nil "Exit" :exit t :column "Quit") ("." nil "cancel" :color blue) )
0 件のコメント:
コメントを投稿