Fix issue 169

This commit is contained in:
capitaomorte 2011-05-07 20:40:40 +00:00
parent 9cdcd3e218
commit 0a22a2bb63

View File

@ -826,7 +826,7 @@ Key bindings:
`yas/minor-mode-on' is usually called by `yas/global-mode' so `yas/minor-mode-on' is usually called by `yas/global-mode' so
this effectively lets you define exceptions to the \"global\" this effectively lets you define exceptions to the \"global\"
behaviour.") behaviour. Can also be a function of zero arguments.")
(make-variable-buffer-local 'yas/dont-activate) (make-variable-buffer-local 'yas/dont-activate)
(defun yas/minor-mode-on () (defun yas/minor-mode-on ()
@ -837,7 +837,7 @@ Do this unless `yas/dont-activate' is t "
(unless (or (minibufferp) (unless (or (minibufferp)
(and (functionp yas/dont-activate) (and (functionp yas/dont-activate)
(funcall yas/dont-activate)) (funcall yas/dont-activate))
(and (not (functionp yas/dont-activate)) (and (boundp yas/dont-activate)
yas/dont-activate)) yas/dont-activate))
;; Load all snippets definitions unless we still don't have a ;; Load all snippets definitions unless we still don't have a
;; root-directory or some snippets have already been loaded. ;; root-directory or some snippets have already been loaded.
@ -4237,12 +4237,19 @@ Remaining args as in `yas/expand-snippet'."
;;; Some hacks: ;;; Some hacks:
;; `locate-dominating-file' is added for compatibility in emacs < 23 ;;;
(unless (or (eq emacs-major-version 23) ;; `locate-dominating-file'
(fboundp 'locate-dominating-file)) ;; `region-active-p'
(defvar locate-dominating-stop-dir-regexp ;;
"\\`\\(?:[\\/][\\/][^\\/]+[\\/]\\|/\\(?:net\\|afs\\|\\.\\.\\.\\)/\\)\\'" ;; added for compatibility in emacs < 23
"Regexp of directory names which stop the search in `locate-dominating-file'. (unless (>= emacs-major-version 23)
(unless (fboundp 'region-active-p)
(defun region-active-p () (and transient-mark-mode mark-active)))
(unless (fboundp 'locate-dominating-file)
(defvar locate-dominating-stop-dir-regexp
"\\`\\(?:[\\/][\\/][^\\/]+[\\/]\\|/\\(?:net\\|afs\\|\\.\\.\\.\\)/\\)\\'"
"Regexp of directory names which stop the search in `locate-dominating-file'.
Any directory whose name matches this regexp will be treated like Any directory whose name matches this regexp will be treated like
a kind of root directory by `locate-dominating-file' which will stop its search a kind of root directory by `locate-dominating-file' which will stop its search
when it bumps into it. when it bumps into it.
@ -4250,44 +4257,44 @@ The default regexp prevents fruitless and time-consuming attempts to find
special files in directories in which filenames are interpreted as hostnames, special files in directories in which filenames are interpreted as hostnames,
or mount points potentially requiring authentication as a different user.") or mount points potentially requiring authentication as a different user.")
(defun locate-dominating-file (file name) (defun locate-dominating-file (file name)
"Look up the directory hierarchy from FILE for a file named NAME. "Look up the directory hierarchy from FILE for a file named NAME.
Stop at the first parent directory containing a file NAME, Stop at the first parent directory containing a file NAME,
and return the directory. Return nil if not found." and return the directory. Return nil if not found."
;; We used to use the above locate-dominating-files code, but the ;; We used to use the above locate-dominating-files code, but the
;; directory-files call is very costly, so we're much better off doing ;; directory-files call is very costly, so we're much better off doing
;; multiple calls using the code in here. ;; multiple calls using the code in here.
;; ;;
;; Represent /home/luser/foo as ~/foo so that we don't try to look for ;; Represent /home/luser/foo as ~/foo so that we don't try to look for
;; `name' in /home or in /. ;; `name' in /home or in /.
(setq file (abbreviate-file-name file)) (setq file (abbreviate-file-name file))
(let ((root nil) (let ((root nil)
(prev-file file) (prev-file file)
;; `user' is not initialized outside the loop because ;; `user' is not initialized outside the loop because
;; `file' may not exist, so we may have to walk up part of the ;; `file' may not exist, so we may have to walk up part of the
;; hierarchy before we find the "initial UUID". ;; hierarchy before we find the "initial UUID".
(user nil) (user nil)
try) try)
(while (not (or root (while (not (or root
(null file) (null file)
;; FIXME: Disabled this heuristic because it is sometimes ;; FIXME: Disabled this heuristic because it is sometimes
;; inappropriate. ;; inappropriate.
;; As a heuristic, we stop looking up the hierarchy of ;; As a heuristic, we stop looking up the hierarchy of
;; directories as soon as we find a directory belonging ;; directories as soon as we find a directory belonging
;; to another user. This should save us from looking in ;; to another user. This should save us from looking in
;; things like /net and /afs. This assumes that all the ;; things like /net and /afs. This assumes that all the
;; files inside a project belong to the same user. ;; files inside a project belong to the same user.
;; (let ((prev-user user)) ;; (let ((prev-user user))
;; (setq user (nth 2 (file-attributes file))) ;; (setq user (nth 2 (file-attributes file)))
;; (and prev-user (not (equal user prev-user)))) ;; (and prev-user (not (equal user prev-user))))
(string-match locate-dominating-stop-dir-regexp file))) (string-match locate-dominating-stop-dir-regexp file)))
(setq try (file-exists-p (expand-file-name name file))) (setq try (file-exists-p (expand-file-name name file)))
(cond (try (setq root file)) (cond (try (setq root file))
((equal file (setq prev-file file ((equal file (setq prev-file file
file (file-name-directory file (file-name-directory
(directory-file-name file)))) (directory-file-name file))))
(setq file nil)))) (setq file nil))))
root))) root))))
;; `c-neutralize-syntax-in-CPP` sometimes fires "End of Buffer" error ;; `c-neutralize-syntax-in-CPP` sometimes fires "End of Buffer" error
;; (when it execute forward-char) and interrupt the after change ;; (when it execute forward-char) and interrupt the after change