;; Maintainer: emacs-devel@gnu.org
;; Keywords: c, matching, tools
-;; Copyright (C) 1994-1995, 2001-2015 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 2001-2016 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
A typical format is
- '(\".\" \"/usr/include\" \"$PROJECT/*/include\")
+ (\".\" \"/usr/include\" \"$PROJECT/*/include\")
Environment variables can be inserted between slashes (`/').
They will be replaced by their definition. If a variable does
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Support functions
+(defun ff-buffer-file-name (&optional buf)
+ "Like `buffer-file-name' but works with indirect buffers as well.
+If BUF is nil, uses the current buffer."
+ (unless buf
+ (setq buf (current-buffer)))
+ (or (buffer-file-name buf)
+ (when (buffer-base-buffer buf)
+ (buffer-file-name (buffer-base-buffer buf)))))
+
(defun ff-find-the-other-file (&optional in-other-window)
"Find the header or source file corresponding to the current file.
Being on a `#include' line pulls in that file, but see the help on
(setq alist (if (symbolp ff-other-file-alist)
(symbol-value ff-other-file-alist)
ff-other-file-alist)
- pathname (if (buffer-file-name)
- (buffer-file-name)
- "/none.none"))
+ pathname (or (ff-buffer-file-name) "/none.none"))
(setq fname (file-name-nondirectory pathname)
no-match nil
;; invoke it with the name of the current file
(if (and (atom action) (fboundp action))
(progn
- (setq suffixes (funcall action (buffer-file-name))
+ (setq suffixes (funcall action (ff-buffer-file-name))
match (cons (car match) (list suffixes))
stub nil
default-name (car suffixes)))
(setq alist (if (symbolp ff-other-file-alist)
(symbol-value ff-other-file-alist)
ff-other-file-alist)
- pathname (if (buffer-file-name)
- (buffer-file-name)
- "/none.none"))
+ pathname (or (ff-buffer-file-name) "/none.none"))
(setq fname (file-name-nondirectory pathname)
match (car alist))
;; invoke it with the name of the current file
(if (and (atom action) (fboundp action))
(progn
- (setq suffixes (funcall action (buffer-file-name))
+ (setq suffixes (funcall action (ff-buffer-file-name))
match (cons (car match) (list suffixes))
stub nil))
(message "Finding buffer %s..." filename))
(if (bufferp (get-file-buffer filename))
- (setq found (buffer-file-name (get-file-buffer filename))))
+ (setq found (ff-buffer-file-name (get-file-buffer filename))))
(setq blist (buffer-list))
(setq buf (buffer-name (car blist)))
(while (and blist (not found))
(if (string-match-p (concat filename "<[0-9]+>") buf)
- (setq found (buffer-file-name (car blist))))
+ (setq found (ff-buffer-file-name (car blist))))
(setq blist (cdr blist))
(setq buf (buffer-name (car blist))))