Doom-emacs: [CÓMO] Definir un comando ex malvado personalizado

Creado en 12 sept. 2019  ·  3Comentarios  ·  Fuente: hlissner/doom-emacs

Lo que quiero lograr
Como soy torpe con la liberación de shift, quiero agregar la versión en mayúscula de ': w' y ': q' a los comandos malvados ex

Lo intenté hasta ahora:

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

Después de reiniciar emacs e ingresar :W , ambos todavía dan como resultado

Comando desconocido: "W"

También probé after! evil-ex y after! evil-ex-cmd , sin alegría

Información del sistema


((emacs
(versión. "26.2")
(características. "XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFICAR LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES X2WIDGDMS THREADS LCS")
(compilación "12 de abril de 2019")
(buildopts "--build = x86_64-linux-gnu --prefix = / usr '--includedir = $ {prefix} / include' '--mandir = $ {prefix} / share / man' '--infodir = $ {prefijo} / share / info '--sysconfdir = / etc --localstatedir = / var --disable-silent-rules' --libdir = $ {prefix} / lib / x86_64-linux-gnu '' --libexecdir = $ {prefix} / lib / x86_64-linux-gnu '--disable-maintenance-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 '"))
(condenar
(versión. "2.0.9")
(compilar. "HEAD -> desarrollar, originar / desarrollar, originar / HEAD a16838b7 2019-09-11 23:42:27 -0400"))
(sistema
(tipo. gnu / linux)
(configuración "x86_64-pc-linux-gnu")
(shell. "/ bin / bash")
(uname. "Linux 4.15.0-62-generic # 69-Ubuntu SMP Mié 4 de septiembre 20:55:53 UTC 2019 x86_64")
(ruta "~ / .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 / juegos "" / snap / bin "" ~ / .fzf / bin "" /usr/lib/x86_64-linux-gnu/emacs/26.2/x86_64-linux-gnu "))
(config
(envfile. envvar-archivo)
(archivos elc. 0)
(módulos: empresa de finalización ivy: ui doom doom-dashboard hl-todo modeline nav-flash ophints (ventana emergente + todos + valores predeterminados) vc-gutter vi-tilde-fringe ventana-seleccionar espacios de trabajo: editor plantillas de archivos malvados plegar varios cursores rotar -fragmentos de texto: emacs dired electric vc: herramientas eval flycheck (búsqueda + docsets) magit: lang data emacs-lisp markdown (org + dragndrop + ipython + pandoc + presente) python rest sh: configuración predeterminada)
(paquetes "org-caldav" "calfw" "calfw-org" "(ttl-mode: receta (: host github: repo jeeger / ttl-mode))")
(elpa-paquetes "n / a")))

question elisp resolved

Comentario más útil

Ah, en ese caso fue porque "write" es una cadena y #'write es un símbolo. evil-ex-define-cmd trata las cadenas como comandos ex para ejecutar y los símbolos como referencias a funciones elisp. Tendrías que hacer:

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

Todos 3 comentarios

Tu primer fragmento es correcto:

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

Sin embargo, la función write no existe. Lo que querías era evil-write :

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

¡Muchas gracias! Me engañaron con el valor de evil-ex-commands :

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

Aquí parece que w solo hace referencia a write , que parece no funcionar cuando lo hago a través de evil-ex-define-cmd

Ah, en ese caso fue porque "write" es una cadena y #'write es un símbolo. evil-ex-define-cmd trata las cadenas como comandos ex para ejecutar y los símbolos como referencias a funciones elisp. Tendrías que hacer:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")
¿Fue útil esta página
0 / 5 - 0 calificaciones