Frage

I have opened lots of file in emacs using C-x C-f /path/to/files/*.txt Also I have created and saved a keyboard macro named it as my-macro

Now I want to running this macro on all the opened buffers. How can I do this in emacs?

I would like to mentioned that I am new to emacs and also don't know about emacs lisp code but can code well in C++. So If anyone who suggest or give some lisp code, please favour me by writing the comment also so that I can modified that so any needed.

EDIT 1: I have tried by marking all the opened buffers by m and then E then Eval(form): my-macro But getting the below error

Symbol's value as variable is void: my-macro

War es hilfreich?

Lösung

The error is giving you a clue: "Symbol's value as variable is void"

my-macro is not a variable containing a value. You need to quote the macro like that: 'my-macro (or the equivalent (quote my-macro))

If you really want to execute the macro in all buffers (beware the buffers like *Messages* and so), this would be a programatic alternative

(defun execute-my-macro-in-all-buffers ()
  (interactive)
  (dolist (buffer (buffer-list))
    (with-current-buffer buffer
      (if (and buffer-file-name
               (y-or-n-p (format "Execute macro in %s? " buffer-file-name)))
          (execute-kbd-macro 'my-macro)))))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top