|
149 | 149 | (super-save-mode +1) |
150 | 150 | (diminish 'super-save-mode) |
151 | 151 |
|
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) |
153 | 153 | "Set buffer major mode according to `auto-mode-alist'." |
154 | 154 | (let* ((name (buffer-name buffer)) |
155 | 155 | (mode (assoc-default name auto-mode-alist 'string-match))) |
|
266 | 266 | (browse-kill-ring-default-keybindings) |
267 | 267 | (global-set-key (kbd "s-y") 'browse-kill-ring) |
268 | 268 |
|
269 | | -(defadvice exchange-point-and-mark (before deactivate-mark activate compile) |
| 269 | +(define-advice exchange-point-and-mark (:before (&rest _) prelude-deactivate-mark) |
270 | 270 | "When called with no active region, do not activate mark." |
271 | 271 | (interactive |
272 | 272 | (list (not (region-active-p))))) |
273 | 273 |
|
274 | 274 | (require 'tabify) |
275 | 275 | (defmacro with-region-or-buffer (func) |
276 | 276 | "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) |
278 | 278 | (interactive |
279 | 279 | (if mark-active |
280 | 280 | (list (region-beginning) (region-end)) |
|
289 | 289 | (if (<= (- end beg) prelude-yank-indent-threshold) |
290 | 290 | (indent-region beg end nil))) |
291 | 291 |
|
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) |
311 | 303 |
|
312 | 304 | ;; abbrev config |
313 | 305 | (add-hook 'text-mode-hook 'abbrev-mode) |
@@ -404,24 +396,30 @@ indent yanked text (with prefix arg don't indent)." |
404 | 396 | ("%" . apply-operation-to-number-at-point) |
405 | 397 | ("'" . operate-on-number-at-point))) |
406 | 398 |
|
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: |
412 | 404 |
|
413 | 405 | emacsclient filename:linenumber |
414 | 406 |
|
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) |
425 | 423 |
|
426 | 424 | ;; use settings from .editorconfig file when present |
427 | 425 | (require 'editorconfig) |
|
0 commit comments