Function: ffap-menu-rescan
ffap-menu-rescan is an interactive and byte-compiled function defined
in ffap.el.gz.
Signature
(ffap-menu-rescan)
Documentation
Search buffer for ffap-menu-regexp to build ffap-menu-alist.
Applies ffap-menu-text-plist text properties at all matches.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/ffap.el.gz
(defun ffap-menu-rescan ()
"Search buffer for `ffap-menu-regexp' to build `ffap-menu-alist'.
Applies `ffap-menu-text-plist' text properties at all matches."
(interactive)
(let ((ffap-next-regexp (or ffap-menu-regexp ffap-next-regexp))
(range (- (point-max) (point-min)))
(mod (buffer-modified-p)) ; was buffer modified?
;; inhibit-read-only works on read-only text properties
;; as well as read-only buffers.
(inhibit-read-only t) ; to set text-properties
item
;; Avoid repeated searches of the *mode-alist:
(major-mode (if (assq major-mode ffap-string-at-point-mode-alist)
major-mode
'file)))
(setq ffap-menu-alist nil)
(unwind-protect
(save-excursion
(goto-char (point-min))
(while (setq item (ffap-next-guess))
(setq ffap-menu-alist (cons (cons item (point)) ffap-menu-alist))
(add-text-properties (car ffap-string-at-point-region) (point)
ffap-menu-text-plist)
(message "Scanning...%2d%% <%s>"
(floor (* 100.0 (- (point) (point-min))) range) item)))
(or mod (restore-buffer-modified-p nil))))
(message "Scanning...done")
;; Remove duplicates.
(setq ffap-menu-alist ; sort by item
(sort ffap-menu-alist
(lambda (a b) (string-lessp (car a) (car b)))))
(let ((ptr ffap-menu-alist)) ; remove duplicates
(while (cdr ptr)
(if (equal (car (car ptr)) (car (car (cdr ptr))))
(setcdr ptr (cdr (cdr ptr)))
(setq ptr (cdr ptr)))))
(setq ffap-menu-alist ; sort by position
(sort ffap-menu-alist
(lambda (a b) (< (cdr a) (cdr b))))))