Doom-emacs: [HOWTO]カスタムの邪悪な元コマンドを定義する

作成日 2019年09月12日  ·  3コメント  ·  ソース: hlissner/doom-emacs

達成したいこと
私はシフトをリリースするのが不器用なので、大文字のバージョンの「:w」と「:q」を邪悪なexコマンドに追加したいと思います

私はこれまで試しました:

;;doom.d/config.el
(evil-ex-define-cmd "W" #'write)
;;doom.d/config.el
(after! evil 
  (evil-ex-define-cmd "W" #'write)
)

emacsを再起動して:Wと入力した後も、どちらも次のようになります。

不明なコマンド: '' W "

私もafter! evil-exafter! evil-ex-cmd試しましたが、喜びはありません

システムインフォメーション


((emacs
(バージョン。 "26.2")
(機能。
(ビルド。「2019年4月12日」)
(buildopts "--build = x86_64-linux-gnu --prefix = / usr '-includedir = $ {prefix} / include' '-mandir = $ {prefix} / share / man' '-infodir = $ {prefix} / share / info '-sysconfdir = / etc --localstatedir = / var --disable-silent-rules' --libdir = $ {prefix} / lib / x86_64-linux-gnu '' --libexecdir = $ {prefix} / lib / x86_64-linux-gnu '-disable-maintainer-mode --disable-dependency-tracking --prefix = / usr --sharedstatedir = / var / lib --program-suffix = 26- with-modules --with-file-notification = inotify --with-mailutils --with-x = yes --with-x-toolkit = gtk3 --with-xwidgets --with-lcms2'CFLAGS = -g -O2 -fdebug-prefix-map = / build / emacs26-CYbeHB / emacs26-26.2〜1.gitfd1b34b =。-fstack-protector-strong-Wformat-Werror = format-security -no-pie '' CPPFLAGS = -Wdate-time- D_FORTIFY_SOURCE = 2 '' LDFLAGS = -Wl、-Bsymbolic-functions -Wl、-z、relro -no-pie '"))
(ドゥーム
(バージョン。 "2.0.9")
(ビルド。 "HEAD-> development、origin / development、origin / HEAD a16838b7 2019-09-11 23:42:27 -0400"))
(システム
(タイプ.gnu / linux)
(config。 "x86_64-pc-linux-gnu")
(シェル。 "/ bin / bash")
(uname。 "Linux 4.15.0-62-generic#69-Ubuntu SMP Wed Sep 4 20:55:53 UTC 2019 x86_64")
(パス "〜/ .cargo / bin" "〜/ bin" "〜/ .local / bin" "/ usr / local / bin" "〜/ .cargo / bin" "〜/ .local / bin" "〜/ bin "" / usr / local / sbin "" / usr / local / bin "" / usr / sbin "" / usr / bin "" / sbin "" / bin "" / usr / games "" / usr / local /ゲーム "" / snap / bin ""〜/ .fzf / bin "" /usr/lib/x86_64-linux-gnu/emacs/26.2/x86_64-linux-gnu "))
(構成
(envfile。envvar-file)
(elc-files。0)
(モジュール:completion company ivy:ui doom doom-dashboard hl-todo modeline nav-flash ophints(popup + all + defaults)vc-gutter vi-tilde-fringe window-select Workspaces:editor evil file-templates fold multiple-cursorsrotate -テキストスニペット:emacs dired electric vc:tools eval flycheck(lookup + docsets)magit:lang data emacs-lisp markdown(org + dragndrop + ipython + pandoc + present)python rest sh:config default)
(パッケージ "org-caldav" "calfw" "calfw-org" "(ttl-mode:recipe(:host github:repo jeeger / ttl-mode))")
(elpa-パッケージ "n / a")))

question elisp resolved

最も参考になるコメント

ああ、その場合は、 "write"が文字列で、 #'writeが記号であるためです。 evil-ex-define-cmdは、文字列を実行するexコマンドとして扱い、シンボルをelisp関数への参照として扱います。 あなたがしなければならないだろう:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")

全てのコメント3件

最初のスニペットは正しいです:

;;doom.d/config.el
(evil-ex-define-cmd "W" #'write)

ただし、 write関数は存在しません。 あなたが欲しかったのはevil-write

;;doom.d/config.el
(evil-ex-define-cmd "W" #'evil-write)

どうもありがとう! evil-ex-commandsの値を誤解しました:

...
("write" . evil-write)
("w" . "write")
...

ここでは、 w writeているように見えますが、 evil-ex-define-cmd介して実行すると機能しないようです。

ああ、その場合は、 "write"が文字列で、 #'writeが記号であるためです。 evil-ex-define-cmdは、文字列を実行するexコマンドとして扱い、シンボルをelisp関数への参照として扱います。 あなたがしなければならないだろう:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")
このページは役に立ちましたか?
0 / 5 - 0 評価