Skip to content

Commit 82e670d

Browse files
committed
Replace defadvice with define-advice and advice-add
The defadvice API has been deprecated in favor of the nadvice system (define-advice, advice-add) since Emacs 24.4. Convert all 5 instances in prelude-editor.el to use the modern API.
1 parent 8a4301e commit 82e670d

1 file changed

Lines changed: 35 additions & 37 deletions

File tree

core/prelude-editor.el

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
(super-save-mode +1)
150150
(diminish 'super-save-mode)
151151

152-
(defadvice set-buffer-major-mode (after set-major-mode activate compile)
152+
(define-advice set-buffer-major-mode (:after (buffer) prelude-set-major-mode)
153153
"Set buffer major mode according to `auto-mode-alist'."
154154
(let* ((name (buffer-name buffer))
155155
(mode (assoc-default name auto-mode-alist 'string-match)))
@@ -266,15 +266,15 @@
266266
(browse-kill-ring-default-keybindings)
267267
(global-set-key (kbd "s-y") 'browse-kill-ring)
268268

269-
(defadvice exchange-point-and-mark (before deactivate-mark activate compile)
269+
(define-advice exchange-point-and-mark (:before (&rest _) prelude-deactivate-mark)
270270
"When called with no active region, do not activate mark."
271271
(interactive
272272
(list (not (region-active-p)))))
273273

274274
(require 'tabify)
275275
(defmacro with-region-or-buffer (func)
276276
"When called with no active region, call FUNC on current buffer."
277-
`(defadvice ,func (before with-region-or-buffer activate compile)
277+
`(define-advice ,func (:before (&rest _) prelude-region-or-buffer)
278278
(interactive
279279
(if mark-active
280280
(list (region-beginning) (region-end))
@@ -289,25 +289,17 @@
289289
(if (<= (- end beg) prelude-yank-indent-threshold)
290290
(indent-region beg end nil)))
291291

292-
(defmacro advise-commands (advice-name commands class &rest body)
293-
"Apply advice named ADVICE-NAME to multiple COMMANDS.
294-
295-
The body of the advice is in BODY."
296-
`(progn
297-
,@(mapcar (lambda (command)
298-
`(defadvice ,command (,class ,(intern (concat (symbol-name command) "-" advice-name)) activate)
299-
,@body))
300-
commands)))
301-
302-
(advise-commands "indent" (yank yank-pop) after
303-
"If current mode is one of `prelude-yank-indent-modes',
304-
indent yanked text (with prefix arg don't indent)."
305-
(if (and (not (ad-get-arg 0))
306-
(not (member major-mode prelude-indent-sensitive-modes))
307-
(or (derived-mode-p 'prog-mode)
308-
(member major-mode prelude-yank-indent-modes)))
309-
(let ((transient-mark-mode nil))
310-
(yank-advised-indent-function (region-beginning) (region-end)))))
292+
(defun prelude-yank-indent-advice (&rest _args)
293+
"Indent yanked text if in a programming mode.
294+
Does not indent if the mode is in `prelude-indent-sensitive-modes'."
295+
(when (and (not (member major-mode prelude-indent-sensitive-modes))
296+
(or (derived-mode-p 'prog-mode)
297+
(member major-mode prelude-yank-indent-modes)))
298+
(let ((transient-mark-mode nil))
299+
(yank-advised-indent-function (region-beginning) (region-end)))))
300+
301+
(advice-add 'yank :after #'prelude-yank-indent-advice)
302+
(advice-add 'yank-pop :after #'prelude-yank-indent-advice)
311303

312304
;; abbrev config
313305
(add-hook 'text-mode-hook 'abbrev-mode)
@@ -404,24 +396,30 @@ indent yanked text (with prefix arg don't indent)."
404396
("%" . apply-operation-to-number-at-point)
405397
("'" . operate-on-number-at-point)))
406398

407-
(defadvice server-visit-files (before parse-numbers-in-lines (files proc &optional nowait) activate)
408-
"Open file with emacsclient with cursors positioned on requested line.
409-
Most of console-based utilities prints filename in format
410-
'filename:linenumber'. So you may wish to open filename in that format.
411-
Just call:
399+
(defun prelude-server-visit-files-parse-numbers (args)
400+
"Parse line numbers from filenames for emacsclient.
401+
Most console-based utilities print filenames in the format
402+
'filename:linenumber'. So you may wish to open filename in
403+
that format. Just call:
412404
413405
emacsclient filename:linenumber
414406
415-
and file 'filename' will be opened and cursor set on line 'linenumber'"
416-
(ad-set-arg 0
417-
(mapcar (lambda (fn)
418-
(let ((name (car fn)))
419-
(if (string-match "^\\(.*?\\):\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?$" name)
420-
(cons
421-
(match-string 1 name)
422-
(cons (string-to-number (match-string 2 name))
423-
(string-to-number (or (match-string 3 name) ""))))
424-
fn))) files)))
407+
and file 'filename' will be opened and cursor set on line
408+
'linenumber'."
409+
(list
410+
(mapcar (lambda (fn)
411+
(let ((name (car fn)))
412+
(if (string-match "^\\(.*?\\):\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?$" name)
413+
(cons
414+
(match-string 1 name)
415+
(cons (string-to-number (match-string 2 name))
416+
(string-to-number (or (match-string 3 name) ""))))
417+
fn)))
418+
(car args))
419+
(cadr args)
420+
(caddr args)))
421+
422+
(advice-add 'server-visit-files :filter-args #'prelude-server-visit-files-parse-numbers)
425423

426424
;; use settings from .editorconfig file when present
427425
(require 'editorconfig)

0 commit comments

Comments
 (0)