FUEL: New option fuel-xref-follow-link-method (current buffer, new window or frame).
parent
fc658411fa
commit
4a5d8f5344
|
@ -22,17 +22,26 @@
|
||||||
|
|
||||||
;;; Customization
|
;;; Customization
|
||||||
|
|
||||||
(defcustom fuel-edit-word-method nil
|
(defmacro fuel-edit--define-custom-visit (var group doc)
|
||||||
"How the new buffer is opened when invoking
|
`(defcustom ,var nil
|
||||||
\\[fuel-edit-word-at-point]."
|
,doc
|
||||||
:group 'fuel
|
:group ',group
|
||||||
:type '(choice (const :tag "Other window" window)
|
:type '(choice (const :tag "Other window" window)
|
||||||
(const :tag "Other frame" frame)
|
(const :tag "Other frame" frame)
|
||||||
(const :tag "Current window" nil)))
|
(const :tag "Current window" nil))))
|
||||||
|
|
||||||
|
(fuel-edit--define-custom-visit
|
||||||
|
fuel-edit-word-method fuel
|
||||||
|
"How the new buffer is opened when invoking \\[fuel-edit-word-at-point]")
|
||||||
|
|
||||||
|
|
||||||
;;; Auxiliar functions:
|
;;; Auxiliar functions:
|
||||||
|
|
||||||
|
(defun fuel-edit--visit-file (file method)
|
||||||
|
(cond ((eq method 'window) (find-file-other-window file))
|
||||||
|
((eq method 'frame) (find-file-other-frame file))
|
||||||
|
(t (find-file file))))
|
||||||
|
|
||||||
(defun fuel-edit--looking-at-vocab ()
|
(defun fuel-edit--looking-at-vocab ()
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(fuel-syntax--beginning-of-defun)
|
(fuel-syntax--beginning-of-defun)
|
||||||
|
@ -45,9 +54,7 @@
|
||||||
(error "Couldn't find edit location"))
|
(error "Couldn't find edit location"))
|
||||||
(unless (file-readable-p (car loc))
|
(unless (file-readable-p (car loc))
|
||||||
(error "Couldn't open '%s' for read" (car loc)))
|
(error "Couldn't open '%s' for read" (car loc)))
|
||||||
(cond ((eq fuel-edit-word-method 'window) (find-file-other-window (car loc)))
|
(fuel-edit--visit-file (car loc) fuel-edit-word-method)
|
||||||
((eq fuel-edit-word-method 'frame) (find-file-other-frame (car loc)))
|
|
||||||
(t (find-file (car loc))))
|
|
||||||
(goto-line (if (numberp (cadr loc)) (cadr loc) 1))))
|
(goto-line (if (numberp (cadr loc)) (cadr loc) 1))))
|
||||||
|
|
||||||
(defun fuel-edit--read-vocabulary-name (refresh)
|
(defun fuel-edit--read-vocabulary-name (refresh)
|
||||||
|
|
|
@ -37,6 +37,11 @@ cursor at the first ocurrence of the used word."
|
||||||
:group 'fuel-xref
|
:group 'fuel-xref
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
|
(fuel-edit--define-custom-visit
|
||||||
|
fuel-xref-follow-link-method
|
||||||
|
fuel-xref
|
||||||
|
"How new buffers are opened when following a crossref link.")
|
||||||
|
|
||||||
(fuel-font-lock--defface fuel-font-lock-xref-link
|
(fuel-font-lock--defface fuel-font-lock-xref-link
|
||||||
'link fuel-xref "highlighting links in cross-reference buffers")
|
'link fuel-xref "highlighting links in cross-reference buffers")
|
||||||
|
|
||||||
|
@ -59,12 +64,12 @@ cursor at the first ocurrence of the used word."
|
||||||
(when (not (file-readable-p file))
|
(when (not (file-readable-p file))
|
||||||
(error "File '%s' is not readable" file))
|
(error "File '%s' is not readable" file))
|
||||||
(let ((word fuel-xref--word))
|
(let ((word fuel-xref--word))
|
||||||
(find-file-other-window file)
|
(fuel-edit--visit-file file fuel-xref-follow-link-method)
|
||||||
(when (numberp line) (goto-line line))
|
(when (numberp line) (goto-line line))
|
||||||
(when (and word fuel-xref-follow-link-to-word-p)
|
(when (and word fuel-xref-follow-link-to-word-p)
|
||||||
(and (search-forward word
|
(and (re-search-forward (format "\\_<%s\\_>" word)
|
||||||
(fuel-syntax--end-of-defun-pos)
|
(fuel-syntax--end-of-defun-pos)
|
||||||
t)
|
t)
|
||||||
(goto-char (match-beginning 0)))))))
|
(goto-char (match-beginning 0)))))))
|
||||||
|
|
||||||
|
|
||||||
|
@ -126,21 +131,25 @@ cursor at the first ocurrence of the used word."
|
||||||
(defun fuel-xref--show-callers (word)
|
(defun fuel-xref--show-callers (word)
|
||||||
(let* ((cmd `(:fuel* (((:quote ,word) fuel-callers-xref))))
|
(let* ((cmd `(:fuel* (((:quote ,word) fuel-callers-xref))))
|
||||||
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
||||||
|
(with-current-buffer (fuel-xref--buffer) (setq fuel-xref--word word))
|
||||||
(fuel-xref--fill-and-display word "using" res)))
|
(fuel-xref--fill-and-display word "using" res)))
|
||||||
|
|
||||||
(defun fuel-xref--show-callees (word)
|
(defun fuel-xref--show-callees (word)
|
||||||
(let* ((cmd `(:fuel* (((:quote ,word) fuel-callees-xref))))
|
(let* ((cmd `(:fuel* (((:quote ,word) fuel-callees-xref))))
|
||||||
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
||||||
|
(with-current-buffer (fuel-xref--buffer) (setq fuel-xref--word nil))
|
||||||
(fuel-xref--fill-and-display word "used by" res)))
|
(fuel-xref--fill-and-display word "used by" res)))
|
||||||
|
|
||||||
(defun fuel-xref--apropos (str)
|
(defun fuel-xref--apropos (str)
|
||||||
(let* ((cmd `(:fuel* ((,str fuel-apropos-xref))))
|
(let* ((cmd `(:fuel* ((,str fuel-apropos-xref))))
|
||||||
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
||||||
|
(with-current-buffer (fuel-xref--buffer) (setq fuel-xref--word nil))
|
||||||
(fuel-xref--fill-and-display str "containing" res)))
|
(fuel-xref--fill-and-display str "containing" res)))
|
||||||
|
|
||||||
(defun fuel-xref--show-vocab (vocab &optional app)
|
(defun fuel-xref--show-vocab (vocab &optional app)
|
||||||
(let* ((cmd `(:fuel* ((,vocab fuel-vocab-xref)) ,vocab))
|
(let* ((cmd `(:fuel* ((,vocab fuel-vocab-xref)) ,vocab))
|
||||||
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
(res (fuel-eval--retort-result (fuel-eval--send/wait cmd))))
|
||||||
|
(with-current-buffer (fuel-xref--buffer) (setq fuel-xref--word nil))
|
||||||
(fuel-xref--fill-buffer vocab "in vocabulary" res t app)))
|
(fuel-xref--fill-buffer vocab "in vocabulary" res t app)))
|
||||||
|
|
||||||
(defun fuel-xref--show-vocab-words (vocab &optional private)
|
(defun fuel-xref--show-vocab-words (vocab &optional private)
|
||||||
|
|
Loading…
Reference in New Issue