As of May 31, 2023, we have updated our Code of Conduct.

Questions tagged [advice]

is for the Elisp advice feature that changes an existing definition of a function in a way that lets you undo the change easily. This tag applies to both old and new advice features. The old advice feature uses `defadvice`. The new advice feature uses functions and macros such as `advice-add` and `add-function`.

Filter by
Sorted by
Tagged with
0 votes
2 answers
42 views

How do you handle an error in the scope of current-buffer with condition-case?

I would like to create headings and subheadings with org-capture if they don't exist with file+olp in my templates. The problem is that I get this message Heading not found on level 1. I'm not sure ...
Rick's user avatar
  • 15
1 vote
1 answer
72 views

How to override a function in a function only in that function?

I used (advice-add 'yas-new-snippet :override 'my/yas-new-snippet ) but I was wondering if there was something like this which would allow me to override a function in a function only in that function:...
ritchie's user avatar
  • 141
0 votes
0 answers
14 views

Can the display of describe-function, describe-variable be advised or tracked in some way?

I want to link additional topics to the search terms by adding links to the answer if the item is linked with other related terms. For instance if I do a search for the function symbol, I want intern, ...
vfclists's user avatar
  • 1,317
0 votes
2 answers
18 views

Save before running tests? (Prepend function?)

How can I prepend a function call in Elisp? E.g. I have a key binding (C-c C-c C-t) that runs some tests (command rustic-cargo-test) and it always asks me if I want to save - I'd like to run (save-...
John Graham's user avatar
3 votes
0 answers
36 views

How to advise a CL method?

I am familiar with setting advice on a function: (advice-add 'some-tag :before 'function-being-advised (lambda (arg) (message "In advice with arg: %s" arg))) How do you advise a ...
Troy Daniels's user avatar
0 votes
0 answers
33 views

How can I advise a cl-defgeneric method?

There's a bug in eglot.el where initialisation options aren't handled, so I can't set the initialisation parameters for a given server; that is causing me problems because the language server I'm ...
cl-defgeneric's user avatar
0 votes
1 answer
27 views

`ido-find-file` always trigger `ido-reread-directory`

Tried following this answer, but did not work on Emacs27 (defadvice ido-find-file (before auto-refresh-ido nil activate) (setq ido-rescan t)) Also tried but did not work because when ido-reread-...
phoxd's user avatar
  • 231
6 votes
1 answer
854 views

Is there a "switch to buffer" hook?

I'm running emacs 26.3. I want to run a hook every time I switch to a buffer. However, I have not been able to find any kind of "buffer switch hook". If I want to always run a function when ...
HippoMan's user avatar
  • 582
1 vote
2 answers
206 views

Using defadvice to add an interactive argument to a non-interactive function?

Is there a way to wrap a non-interactive function within defadvice so that the new function can accept an interactive argument which can alter the way that the wrapped function gets called? In other ...
HippoMan's user avatar
  • 582
1 vote
1 answer
154 views

redefine a function as wrapper for the old definition

I am trying to modify a package by redefining a function in it. However, I would like to call the original definition in the new definition. (kind of like extending a constructor in a subclass now ...
Alex028502's user avatar
4 votes
1 answer
71 views

Adding a function call after a builtin runs

I always want to run reposition-window after c-beginning-of-defun. I've tried this: (advice-add 'c-beginning-of-defun :after #'reposition-window) it results in this at execution: Variable binding ...
Gauthier's user avatar
  • 489
5 votes
1 answer
121 views

How to suppress `Wrote /home/user/.emacs.d/recentf` message in minibuffer

In the minibuffer I keep seeing: Wrote /home/user/.emacs.d/recentf Would it be possible to suppress this message? (Only for file name recentf file) my minimal.el: (setq recentf-max-saved-items 50) (...
alper's user avatar
  • 1,164
0 votes
1 answer
36 views

How to prevent copy-directory from choking on Unix socket files?

I need to copy a directory tree that holds Unix socket files somewhere inside. As Unix sockets cannot be copied, when I use copy-directory, the copy-file function used by copy-directory throws an ...
PRouleau's user avatar
  • 724
0 votes
1 answer
76 views

ESS: start R in current directory conflicts with ivy-mode

I use ivy-mode for completion. I don't usually want to see the dot files ("./" and "../") when selecting files/directories, so I've set (setq ivy-extra-directories nil). I also ...
Tyler's user avatar
  • 21.5k
0 votes
0 answers
61 views

How to properly advise macros used by functions if earlier byte-compilation is present?

I am trying to customize the looks of org-agenda and, in order to do so, I would like to advice the macro org-agenda--insert-overriding-header; this macro appears to be used in several functions. ...
Wilder's user avatar
  • 95
4 votes
2 answers
155 views

How do I use an advice to change the definition of goto-char within a function?

Suppose a third-party plugin contains the following function: (defun example-function () (interactive) ;; ... do many things ... (goto-char (point-max)) ;; ... do many things ... (goto-char (...
Flux's user avatar
  • 583
0 votes
1 answer
138 views

What does "Making browse-url-browser-function local to *eww* while let-bound!" mean?

I am using SLIME (which includes hyperspec.el). I wanted to view the HyperSpec using Emacs' EWW instead of the desktop web browser (e.g. Firefox, Chromium, etc.). To do this, I added an advice to set ...
Flux's user avatar
  • 583
0 votes
1 answer
306 views

does advice :around always have to pass a list of args?

I'm new to elisp, and I'm struggling to figure out how to do advice. I got my code working, but I'm not sure why. This is from a real problem that I had digging into markdown mode to add an extra ...
Paul Gowder's user avatar
3 votes
1 answer
77 views

Why advice won't work if the function is called from another compiled function?

Let's consider a minimal example, I take org-narrow-to-subtree as a compiled function, under the hood it calls narrow-to-region, I add simple advice to it: (defun bark (START END) (message "Bark!&...
Daniel Vartanov's user avatar
1 vote
1 answer
60 views

Prevent dired recenter buffer when reverting buffer

When a directory contains many files, more than the visible lines of the window, use end-of-buffer to go to end of buffer, then press g to revert-buffer, one can see the last line is recentered to the ...
Saddle Point's user avatar
0 votes
0 answers
38 views

How do I stop checkdoc from flagging header/footer in org-src-edit buffers?

When editing Emacs Lisp source blocks in org-mode via org-src-edit, if flycheck is enabled (which I'd like to keep that way) checkdoc rather annoyingly remarks that I'm missing headers and footers and ...
Aleksandar Dimitrov's user avatar
0 votes
2 answers
461 views

Add-advice :before org-edit-special

I want to advise org-edit-special so that a function runs before Emacs enters org-src-mode. I am not particularly tied to org-edit-special. If there is a hook like org-src-mode-hook (but that triggers ...
Adam's user avatar
  • 1,847
1 vote
2 answers
211 views

Help with function advice: Unknown add-function location ‘asm-calculate-indentation’

I'm trying to modify how asm-mode does its automatic indentation. I thought I would use the following: (defun yasm-calculate-indentation (oldfun) "Add the formatting for a few other keywords I like....
GreenLlama's user avatar
1 vote
1 answer
414 views

Creating a local advice for a function

I want to slightly modify the behaviour of a function, old-function whose source I cannot modify. I can do that simply by (defun my-new-function (old-fn a b c) (if (evaluate-my-condition) (...
Tohiko's user avatar
  • 1,569
0 votes
3 answers
75 views

Convert old advise ad-set-arg to new advice

How would I convert the following old style advice to a new style advice? (setq python--pdb-breakpoint-string "import pdb; pdb.set_trace()") (defadvice compile (before ad-compile-smart activate) "...
Lorem Ipsum's user avatar
  • 4,267
1 vote
0 answers
51 views

Get time since last keystroke

I would like to know how many seconds have passed since the last keystroke (or character that showed up in the screen, whatever is easier). Is there a timer that is associated to self-insert-command? ...
scaramouche's user avatar
  • 1,760
1 vote
1 answer
74 views

Byte compilation still happening when `no-byte-compile` is t on adding advice

In org-mode, I have the following: #+BEGIN_SRC emacs-lisp :results scalar (setq no-byte-compile t) (defun f ()) (defun g ()) (add-function :before (symbol-function 'f) 'g) (symbol-function 'f) #+...
extremeaxe5's user avatar
3 votes
1 answer
232 views

How to add a locally override the message function?

I would like to add a suffix to a message reported by a function called in some source I don't maintain. Is there a way to locally override the message function so I can manipulate it before it's ...
ideasman42's user avatar
  • 8,207
3 votes
1 answer
142 views

How does one "extend" an existing function?

What I want to do: have the function evil-delete do one more task after its usual code. (I'm presuming that evil-delete is the underlying workhorse that is called by evil-delete-line and about five ...
not-just-yeti's user avatar
2 votes
1 answer
343 views

Can "advice-add ... :filter-args" detect if the advised function was called interactively?

Using advice-add from nadvice.el, I am trying to add a :filter-args advice to an interactive function. Is it somehow possible for it to detect, whether the advised function has been called ...
kdb's user avatar
  • 1,541
0 votes
2 answers
168 views

Unusual behavior when overriding `calculate-lisp-indent'

I've modified calculate-lisp-indent as a better solution to the indentation questions here, here and here. By "modified" I mean I overrode the function with advice. After doing this when I restarted ...
Aquaactress's user avatar
  • 1,383
1 vote
0 answers
37 views

Why doesn't the window begin and end update after `outline-show-all`?

I'm using this test code. (defun +outline~show-all (orig-fn &rest args) "Show all." (let ((beg1 (window-start)) (end1 (window-end)) (beg2) (end2)) (apply orig-fn args) ...
Aquaactress's user avatar
  • 1,383
5 votes
2 answers
2k views

define-advice vs advice-add vs other (?)

Can someone explain and show the right/preferred way of advising functions in Emacs these days. Official documentation says to use advice-add, but I've seen people using define-advice and I checked, ...
iLemming's user avatar
  • 1,193
6 votes
1 answer
662 views

How to automatically kill a shell buffer when the shell process exits

In shell-mode when you exit the shell process (e.g. by typing exit) the buffer still hangs around (with the message "Process shell<1> finished"). How can I automatically kill the shell buffer when ...
halloleo's user avatar
  • 1,195
3 votes
1 answer
373 views

Rewriting `defadvice' as `advice-add' makes advice ineffective

I am trying to make undo-tree auto compress the history save file. The document suggests adding the following advice (defadvice undo-tree-make-history-save-file-name (after undo-tree activate) (...
nalzok's user avatar
  • 665
2 votes
1 answer
171 views

"void-variable" error when adding advice to `kill-ring-save`

I am trying to add an advice to kill-ring-save and kill-region, so that when I call them with no active regions, instead of throwing an error, the line the point is currently on would be marked ...
nalzok's user avatar
  • 665
1 vote
2 answers
95 views

advice-add FOR function dired-do-copy

I got a problem for an advice-add inside Dired's copy function (dired-do-copy). My object is it to filter all marked files/directories in Dired, which should be copied to an other location within ...
FalkH.'s user avatar
  • 11
0 votes
1 answer
62 views

Hooking on to abbreviation expansion

I don't know exactly how abbrev-mode works, but I suppose certain keys --spaces and stops-- cause an examination of the word before point, and a replacement of it in some cases. My question is how ...
Toothrot's user avatar
  • 3,114
0 votes
2 answers
523 views

Adding advice to interactive functions

I want to add advice to `describe-function'. However, when I try to do so, I get an error due to wrong number of arguments. Function: (defun describe-function-advice (function) ...
Realraptor's user avatar
  • 1,243
1 vote
1 answer
95 views

Using an advice to set default parameters in a interactive function

I'm not sure if this is possible or if there's a workaround for it, but I want M-x erc to set the password after I try to call it, but before I input the actual parameters. What I originally had in ...
YuriAlbuquerque's user avatar
2 votes
1 answer
166 views

Using advice to run function before tag symbol lookup

I use xref-find-definition to look up the definition of a symbol name. When I call xref-find-definition, I want to Emacs to automatically find and load an appropriately named etags file. For this ...
std_answ's user avatar
  • 171
0 votes
1 answer
145 views

How to write this advice for inject code into let-binding?

I want to write an advice on original code. But don't know how to write it in my case. I just did some modification, and do an diff. Hope the you can understand what I need. Here is the diff ...
stardiviner's user avatar
  • 1,848
1 vote
0 answers
91 views

advise around org-add-note behaves differnt in Windows and macOS

I have the following in my init.el file: (defun my::with-no-drawer (func &rest args) (interactive "P") (let ((org-log-into-drawer (car args))) (funcall-interactively func args))) ...
SamanGh's user avatar
  • 51
9 votes
2 answers
1k views

List advice for functions

I had a look over the weekend, and I cannot see an easy way to check whether a function is advised. I must be missing something. HELP! :)
Realraptor's user avatar
  • 1,243
1 vote
2 answers
396 views

Adding advice to an autoloaded function

I want to add advice to an alias to a function in an internal elisp package at work, gating the logic on a variable. Both the function and the alias is marked autoload. Conceptually: ;;;###autoload ...
Realraptor's user avatar
  • 1,243
3 votes
1 answer
773 views

buffer-local advice

I am trying to create a buffer local advice to run some code when a minor mode is disabled. I looked through the documentation for add-function and saw this If PLACE is a symbol, its `default-value' ...
Prgrm.celeritas's user avatar
3 votes
1 answer
96 views

Should the sharp quote should be used for the first argument of advice-add?

... when a symbol referencing a function is actually used? Documentation states: Like ‘add-function’ but for the function named SYMBOL. Contrary to ‘add-function’, this will properly handle the ...
cYrus's user avatar
  • 222
0 votes
1 answer
271 views

Error when trying to advice python-shell-send-string

I'm trying to write advice such that each time I eval a python snippet, it automatically output the exception time in the emacs python shell (defun python-send-with-time-record (orig-func string &...
Saddle Point's user avatar
1 vote
1 answer
48 views

Creating a new function based off exisiting one

I apologize if this is a duplicate, but the essence of the question is whether it is possible to create "around" advice for an existing function and bind that to a new one. In my case, I'm trying to ...
Your Fin's user avatar
3 votes
0 answers
416 views

How to set the colors for pdf-tools annotations individually?

I would like to be able to set the annotation colors to be different (e.g. strike-out "black" while keeping highlight "yellow"). I asked about this as an issue at the github page for pdftools and was ...
brittAnderson's user avatar