/ / Zmień wyrażenie w treści funkcji elisp z poradą - emacs, elisp, defadvice

Zmień wyrażenia w ciele funkcji elisp z poradami - emacs, elisp, defadvice

Jak dopasować konkretny wyraz w ciele do funkcji elisp podczas dodawania porady? W szczególności w poniższym przykładzie chciałbym doradzić funkcję, która ma być używana find-file-noselect zamiast find-file, tj. linia (find-file path) obowiązywałoby (find-file-noselect path).

(defun tst-fun (path line column)
(find-file path)
(goto-char (point-min))
(forward-line (1- line))
(forward-char column))

;; not sure how to structure this
(defadvice tst-fun (around noselect activate)
(find-file-noselect (ad-get-arg 0))
ad-do-it)

Wolałbym to mieć ad-add-function, ale staram się, żeby to działało jako pierwsze.

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz tymczasowo zmienić definicję find-file tak jak find-file-noselect w radzie.

(require "cl)
(defadvice tst-fun (around noselect activate)
(flet ((find-file (&rest args)
(apply "find-file-noselect args)))
ad-do-it))