summaryrefslogtreecommitdiff
path: root/lisp/progmodes/ada-mode.el
diff options
context:
space:
mode:
authorThien-Thi Nguyen <ttn@gnuvola.org>2006-07-16 21:12:46 +0000
committerThien-Thi Nguyen <ttn@gnuvola.org>2006-07-16 21:12:46 +0000
commit072cb54a86df049efc2eb6669b1427807a058c2b (patch)
tree1c7ad08383ca7e092e6fa6031f323189b89e2187 /lisp/progmodes/ada-mode.el
parent7365aa8be1aec39f60512f7b84262f5e022f63cf (diff)
downloademacs-072cb54a86df049efc2eb6669b1427807a058c2b.tar.gz
(ada-mode): Rewrite ff-special-constructs init.
Diffstat (limited to 'lisp/progmodes/ada-mode.el')
-rw-r--r--lisp/progmodes/ada-mode.el82
1 files changed, 29 insertions, 53 deletions
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index 9dc74264da8..bc00d859c2d 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -1208,60 +1208,36 @@ If you use ada-xref.el:
ff-file-created-hook 'ada-make-body)
(add-hook 'ff-pre-load-hook 'ada-which-function-are-we-in)
- ;; Some special constructs for find-file.el
- ;; We do not need to add the construction for 'with', which is in the
- ;; standard find-file.el
+ ;; Some special constructs for find-file.el.
(make-local-variable 'ff-special-constructs)
-
- ;; Go to the parent package :
- (add-to-list 'ff-special-constructs
- (cons (eval-when-compile
- (concat "^\\(private[ \t]\\)?[ \t]*package[ \t]+"
- "\\(body[ \t]+\\)?"
- "\\(\\(\\sw\\|[_.]\\)+\\)\\.\\(\\sw\\|_\\)+[ \t\n]+is"))
- (lambda ()
- (if (fboundp 'ff-get-file)
- (if (boundp 'fname)
- (set 'fname (ff-get-file
- ada-search-directories-internal
- (ada-make-filename-from-adaname
- (match-string 3))
- ada-spec-suffixes)))))))
- ;; Another special construct for find-file.el : when in a separate clause,
- ;; go to the correct package.
- (add-to-list 'ff-special-constructs
- (cons "^separate[ \t\n]*(\\(\\(\\sw\\|[_.]\\)+\\))"
- (lambda ()
- (if (fboundp 'ff-get-file)
- (if (boundp 'fname)
- (setq fname (ff-get-file
- ada-search-directories-internal
- (ada-make-filename-from-adaname
- (match-string 1))
- ada-spec-suffixes)))))))
-
- ;; Another special construct, that redefines the one in find-file.el. The
- ;; old one can handle only one possible type of extension for Ada files
- ;; remove from the list the standard "with..." that is put by find-file.el,
- ;; since it uses the old ada-spec-suffix variable
- ;; This one needs to replace the standard one defined in find-file.el (with
- ;; Emacs <= 20.4), since that one uses the old variable ada-spec-suffix
- (let ((old-construct
- (assoc "^with[ \t]+\\([a-zA-Z0-9_\\.]+\\)" ff-special-constructs))
- (new-cdr
- (lambda ()
- (if (fboundp 'ff-get-file)
- (if (boundp 'fname)
- (set 'fname (ff-get-file
- ada-search-directories-internal
- (ada-make-filename-from-adaname
- (match-string 1))
- ada-spec-suffixes)))))))
- (if old-construct
- (setcdr old-construct new-cdr)
- (add-to-list 'ff-special-constructs
- (cons "^with[ \t]+\\([a-zA-Z0-9_\\.]+\\)"
- new-cdr))))
+ (mapc (lambda (pair)
+ (add-to-list 'ff-special-constructs pair))
+ `(
+ ;; Go to the parent package.
+ (,(eval-when-compile
+ (concat "^\\(private[ \t]\\)?[ \t]*package[ \t]+"
+ "\\(body[ \t]+\\)?"
+ "\\(\\(\\sw\\|[_.]\\)+\\)\\.\\(\\sw\\|_\\)+[ \t\n]+is"))
+ . ,(lambda ()
+ (ff-get-file
+ ada-search-directories-internal
+ (ada-make-filename-from-adaname (match-string 3))
+ ada-spec-suffixes)))
+ ;; A "separate" clause.
+ ("^separate[ \t\n]*(\\(\\(\\sw\\|[_.]\\)+\\))"
+ . ,(lambda ()
+ (ff-get-file
+ ada-search-directories-internal
+ (ada-make-filename-from-adaname (match-string 1))
+ ada-spec-suffixes)))
+ ;; A "with" clause.
+ ("^with[ \t]+\\([a-zA-Z0-9_\\.]+\\)"
+ . ,(lambda ()
+ (ff-get-file
+ ada-search-directories-internal
+ (ada-make-filename-from-adaname (match-string 1))
+ ada-spec-suffixes)))
+ ))
;; Support for outline-minor-mode
(set (make-local-variable 'outline-regexp)