eldoc 連携できないか
tkita opened this issue · 3 comments
tkita commented
h をタイプすることで calendar-cursor-holidays
が起動してエコーエリアに表示されますが、
eldoc から calendar-cursor-holidays
を起動できれば h のタイプを省略できるようになります。
ソースを見ていますが、私にとってはちょっとハードル高そうです。
どなたか実装できませんか?
syohex commented
(defun my/eldoc-function (&rest _args)
(if (= (mod (point) 2) 0)
"point is even"
"point is odd"))
(add-hook 'ruby-mode-hook 'eldoc-mode)
(add-hook 'ruby-mode-hook
(lambda ()
(add-hook 'eldoc-documentation-functions #'my/eldoc-function nil t)))
簡単すぎる例ですが, こんな感じにやれば普通は使えるはずなのですが, calendar-mode
に適用しようとしても期待通りの挙動になりませんでした. 頑張れば実装はできるのでしょうけど, 手っ取り早く実装するなら calendar-move-hook
に calendar-cursor-holidays
をセットするか, 祝日だけ表示したいのであれば下記のような関数をセットする方が良さそうです.
(defun my/japanese-holiday-show (&rest _args)
(let* ((date (calendar-cursor-to-date t))
(date-string (calendar-date-string date))
(holiday-list (calendar-check-holidays date)))
(when holiday-list
(message "%s: %s" date-string (mapconcat #'identity holiday-list "; ")))))
conao3 commented
org-eldocからの抜粋ですが、Emacs-27はアドバイスにより制御するみたいです。
;;;###autoload
(defun org-eldoc-load ()
"Set up org-eldoc documentation function."
(interactive)
;; This approach is taken from python.el.
(with-no-warnings
(cond
((null eldoc-documentation-function) ; Emacs<25
(setq-local eldoc-documentation-function
#'org-eldoc-documentation-function))
((boundp 'eldoc-documentation-functions) ; Emacs>=28
(add-hook 'eldoc-documentation-functions
#'org-eldoc-documentation-function nil t))
(t
(add-function :before-until (local 'eldoc-documentation-function)
#'org-eldoc-documentation-function)))))
Emacs-28でのカスタマイズがスマートですね。