Pregunta:
La descripción de Cx Ce
menciona:
… Interactivamente, con un argumento de prefijo que no sea '-', imprime la salida en el búfer actual.
Entiendo que esto significa que esta lógica se activa cuando Cu Cx Ce
, pero ¿cómo vincularía esto a Cc c
? ¿Cómo especifico el prefijo en el enlace?
Lo mismo para C-SPC
:
Con un argumento de prefijo (por ejemplo, Cu C-SPC), salte a la marca y establezca la marca desde la posición que salió del anillo de marca local (esto no afecta el anillo de marca global).
Mi enlace normal se ve así:
(global-set-key (kbd "C-c ,") 'pop-global-mark)
Respuesta:
Cu invoca la función universal-argument
, y desea asegurarse de que eval-last-sexp
se llame como si lo hubiera invocado de forma interactiva, lo que se hace con call-interactively
. Puede simular universal-argument
mediante el enlace let current-prefix-arg
.
Poniendo todo eso junto para Cu Cx Ce
:
(global-set-key (kbd "C-c c") (lambda ()
(interactive)
(let ((current-prefix-arg 1))
(call-interactively #'eval-last-sexp))))
Para Cu C-SPC
:
(global-set-key (kbd "C-c ,") (lambda ()
(interactive)
(let ((current-prefix-arg '(4)))
(call-interactively #'set-mark-command))))
Estrictamente hablando, como señala @NickD, current-prefix-arg
debería estar vinculado a '(4)
para ser exactamente equivalente a Cu
, pero para eval-last-sexp
eso no importa.