Doom-emacs: [COMO FAZER] Definir um comando ex personalizado do mal

Criado em 12 set. 2019  ·  3Comentários  ·  Fonte: hlissner/doom-emacs

O que eu quero alcançar
Como sou desajeitado para liberar o shift, quero adicionar a versão em maiúscula de ': w' e ': q' aos ex comandos malignos

Eu tentei até agora:

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

Depois de reiniciar o emacs e inserir :W , ambos ainda resultam em

Comando desconhecido: '' W "

Eu também tentei after! evil-ex e after! evil-ex-cmd , sem alegria

Informação do sistema


((emacs
(versão. "26,2")
(recursos. "XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOM GPM DBUS GSETTINGS GLIB NOTIFICAR LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES LIBESTEM DE LIBXSTEM LIBXML2 XDBE XIM)
(compilação "12 de abril de 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-keeper-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 '"))
(ruína
(versão. "2.0.9")
(build. "HEAD -> desenvolver, originar / desenvolver, origem / HEAD a16838b7 2019-09-11 23:42:27 -0400"))
(sistema
(digite. gnu / linux)
(config. "x86_64-pc-linux-gnu")
(shell. "/ bin / bash")
(uname. "Linux 4.15.0-62-generic # 69-Ubuntu SMP Quarta-feira 4 de setembro 20:55:53 UTC 2019 x86_64")
(caminho "~ / .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 / jogos "" / snap / bin "" ~ / .fzf / bin "" /usr/lib/x86_64-linux-gnu/emacs/26.2/x86_64-linux-gnu "))
(config
(envfile. envvar-file)
(arquivos elc. 0)
(módulos: completação empresa ivy: ui doom doom-painel hl-todo modeline nav-flash ophints (pop-up + todos + padrões) vc-gutter vi-tilde-fringe janela-selecionar espaços de trabalho: editor arquivos malvados modelos dobrar cursores múltiplos girar -trechos de texto: 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)
(pacotes "org-caldav" "calfw" "calfw-org" "(ttl-mode: recipe (: host github: repo jeeger / ttl-mode))")
(elpa-packages "n / a")))

question elisp resolved

Comentários muito úteis

Ah, nesse caso era porque "write" é uma string e #'write é um símbolo. evil-ex-define-cmd trata strings como comandos ex para executar e símbolos como referências a funções elisp. Você teria que fazer:

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

Todos 3 comentários

Seu primeiro snippet está correto:

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

No entanto, a função write não existe. O que você queria era evil-write :

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

Muito obrigado! Fui enganado sobre o valor de evil-ex-commands :

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

Aqui parece que w apenas faz referência a write , o que parece não funcionar quando faço isso via evil-ex-define-cmd

Ah, nesse caso era porque "write" é uma string e #'write é um símbolo. evil-ex-define-cmd trata strings como comandos ex para executar e símbolos como referências a funções elisp. Você teria que fazer:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")
Esta página foi útil?
0 / 5 - 0 avaliações