Doom-emacs: [HOWTO] Définissez une commande evil ex personnalisée

Créé le 12 sept. 2019  ·  3Commentaires  ·  Source: hlissner/doom-emacs

Ce que je veux réaliser
Comme je suis maladroit avec la libération de shift, je veux ajouter la version en majuscule de ': w' et ': q' aux commandes evil ex

J'ai essayé jusqu'à présent:

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

Après avoir redémarré emacs et entré :W , les deux résultats

Commande inconnue: «W»

J'ai aussi essayé after! evil-ex et after! evil-ex-cmd , pas de joie

Informations système


((emacs
(version. "26.2")
(caractéristiques. "XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM XIM MODULES THREDMS2)
(build. "12 avril 2019")
(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-mainter-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 '"))
(perte
(version. "2.0.9")
(build. "HEAD -> develop, origin / develop, origin / HEAD a16838b7 2019-09-11 23:42:27 -0400"))
(système
(tapez. gnu / linux)
(config. "x86_64-pc-linux-gnu")
(shell. "/ bin / bash")
(uname. "Linux 4.15.0-62-generic # 69-Ubuntu SMP Wed Sep 4 20:55:53 UTC 2019 x86_64")
(chemin "~ / .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 / jeux "" / snap / bin "" ~ / .fzf / bin "" /usr/lib/x86_64-linux-gnu/emacs/26.2/x86_64-linux-gnu "))
(config
(envfile. envvar-file)
(fichiers elc. 0)
(modules: société d'achèvement ivy: ui doom doom-dashboard hl-todo modeline nav-flash ophints (popup + all + defaults) vc-gutter vi-tilde-fringe window-select workspaces: éditeur de fichiers maléfiques plier plusieurs curseurs tourner -extraits de texte: 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)
(packages "org-caldav" "calfw" "calfw-org" "(ttl-mode: recette (: hôte github: repo jeeger / ttl-mode))")
(paquets elpa "n / a")))

question elisp resolved

Commentaire le plus utile

Ah, dans ce cas, c'était parce que "write" est une chaîne et #'write est un symbole. evil-ex-define-cmd traite les chaînes comme des commandes ex à exécuter et les symboles comme des références aux fonctions elisp. Vous auriez à faire:

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

Tous les 3 commentaires

Votre premier extrait de code est correct:

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

Cependant, la fonction write n'existe pas. Ce que vous vouliez était evil-write :

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

Merci beaucoup! J'ai été induit en erreur par la valeur de evil-ex-commands :

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

Ici, il semble que w simplement référence à write , ce qui semble ne pas fonctionner lorsque je le fais via evil-ex-define-cmd

Ah, dans ce cas, c'était parce que "write" est une chaîne et #'write est un symbole. evil-ex-define-cmd traite les chaînes comme des commandes ex à exécuter et les symboles comme des références aux fonctions elisp. Vous auriez à faire:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")
Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

ashiklom picture ashiklom  ·  3Commentaires

driftcrow picture driftcrow  ·  3Commentaires

governorgoat picture governorgoat  ·  3Commentaires

luisenrike picture luisenrike  ·  3Commentaires

waymondo picture waymondo  ·  3Commentaires