diff options
Diffstat (limited to 'common.el')
-rw-r--r-- | common.el | 104 |
1 files changed, 104 insertions, 0 deletions
@@ -55,6 +55,110 @@ (t (other-window 1))))) +;;;###autoload +(defun durand-embark-scroll-down-or-go-to-completions (&optional arg) + "Scroll down; if this is not feasible, go to the completions buffer. +ARG means do this command ARG times." + (interactive "p") + (let ((original-point (point)) + (left (abs (forward-line arg))) + (completion-windows + (delq nil + (mapcar + (lambda (w) + (and (consp + (delq nil + (mapcar (lambda (name) + (string-match-p + name + (buffer-name (window-buffer w)))) + durand-completion-buffer-names))) + w)) + (window-list nil 'nomini)))) + (in-completion-p (consp + (delq nil + (mapcar + (lambda (name) + (string-match-p name (buffer-name))) + durand-completion-buffer-names))))) + (cond ((= (point) (point-max)) + (setq left (1+ left))) + ((get-text-property (point) 'field) + (goto-char original-point))) + (cond ((and (> left 0) + (consp completion-windows) + (not in-completion-p)) + (select-window (car completion-windows)) + (cond + ((> arg 0) + (goto-char (point-min)) + (cond + ((derived-mode-p 'completion-list-mode) + (next-completion 1)))) + ((< arg 0) + (goto-char (point-max)) + (cond + ((derived-mode-p 'completion-list-mode) + (next-completion -1))))))))) + +;;;###autoload +(defun durand-embark-scroll-up-or-go-to-completions (&optional arg) + "Scroll up; if this is not feasible, go to the completions buffer. +ARG means do this command ARG times." + (interactive "p") + (durand-embark-scroll-down-or-go-to-completions (- arg))) + +;;;###autoload +(defun durand-completion-scroll-down-or-go-to-minibuffer (&optional arg) + "Scroll down; if this is not feasible, go to the mini-buffer. +ARG means do this command ARG times." + (interactive "p") + (let ((original-point (point)) + (left (abs (forward-line arg))) + (minibuffer-active-p (active-minibuffer-window)) + (in-minibuffer-p (minibuffer-window-active-p (selected-window)))) + (cond ((= (point) (point-max)) + (setq left (1+ left))) + ((get-text-property (point) 'field) + (goto-char original-point))) + (cond ((and (> left 0) + minibuffer-active-p + (not in-minibuffer-p)) + (select-window (active-minibuffer-window)) + (cond + ((> arg 0) + (goto-char (point-min))) + ((< arg 0) + (goto-char (point-max)))))))) + +;;;###autoload +(defun durand-completion-scroll-up-or-go-to-minibuffer (&optional arg) + "Scroll up; if this is not feasible, go to the mini-buffer. +ARG means do this command ARG times." + (interactive "p") + (durand-completion-scroll-down-or-go-to-minibuffer (- arg))) + +;;; Don't ask me if I want to visit the file again. + +(require 'register) + +;;;###autoload +(cl-defmethod register-val-jump-to ((val cons) delete) + (cond + ((frame-configuration-p (car val)) + (set-frame-configuration (car val) (not delete)) + (goto-char (cadr val))) + ((window-configuration-p (car val)) + (set-window-configuration (car val)) + (goto-char (cadr val))) + ((eq (car val) 'file) + (find-file (cdr val))) + ((eq (car val) 'file-query) + (find-buffer-visiting (nth 1 val)) + (find-file (nth 1 val)) + (goto-char (nth 2 val))) + (t (cl-call-next-method val delete)))) + ;;; Intentionally disable some key-bindings. ;;;###autoload |