elispは1ミリも分からないけど、以下の自作関数をinit.elに入れて使っていた。
F9を押下するとfoo.shというシェルスクリプトが動くというだけのもの。
init.el
(defun bar ()
(shell-command "/シェルスクリプトが入っているフォルダの絶対パス/foo.sh"))
(define-key global-map [f9] 'bar)
これがある日、急に動かなくなった。
F9を押下すると、以下のメッセージがミニバッファに表示されて、スクリプトは動かない。
Wrong type argument: commandp, bar
なぜかは分からないけど、他の人が書いたelispの関数を参考に、省略していたinteractiveを入れてみた。
init.el
(defun bar ()
(interactive) ;;; ここだけが変更点
(shell-command "/シェルスクリプトが入っているフォルダの絶対パス/foo.sh"))
(define-key global-map [f9] 'bar)
これだけで、どういうわけか動くようになった。
なぜ以前はinteractiveなしで動いていたのが、今日急に動かなくなったのか、分からない。
いちおう今日の日付は 2022-07-15、M-x emacs-version は
GNU Emacs 26.5 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.14) of 2020-03-26, modified by Debian
WSL2でUbuntuを使っていて cat lsb_release の結果は
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"
である。何かご存知の方はコメント欄で教えてください。ひどくてスミマセン。
他の方で同じことで悩んでいる方があれば。
(この項終わり)