mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 13:13:03 +00:00
Fix issue 169
This commit is contained in:
parent
9cdcd3e218
commit
0a22a2bb63
95
yasnippet.el
95
yasnippet.el
@ -826,7 +826,7 @@ Key bindings:
|
||||
|
||||
`yas/minor-mode-on' is usually called by `yas/global-mode' so
|
||||
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)
|
||||
|
||||
(defun yas/minor-mode-on ()
|
||||
@ -837,7 +837,7 @@ Do this unless `yas/dont-activate' is t "
|
||||
(unless (or (minibufferp)
|
||||
(and (functionp yas/dont-activate)
|
||||
(funcall yas/dont-activate))
|
||||
(and (not (functionp yas/dont-activate))
|
||||
(and (boundp yas/dont-activate)
|
||||
yas/dont-activate))
|
||||
;; Load all snippets definitions unless we still don't have a
|
||||
;; root-directory or some snippets have already been loaded.
|
||||
@ -4237,12 +4237,19 @@ Remaining args as in `yas/expand-snippet'."
|
||||
|
||||
|
||||
;;; Some hacks:
|
||||
;; `locate-dominating-file' is added for compatibility in emacs < 23
|
||||
(unless (or (eq emacs-major-version 23)
|
||||
(fboundp 'locate-dominating-file))
|
||||
(defvar locate-dominating-stop-dir-regexp
|
||||
"\\`\\(?:[\\/][\\/][^\\/]+[\\/]\\|/\\(?:net\\|afs\\|\\.\\.\\.\\)/\\)\\'"
|
||||
"Regexp of directory names which stop the search in `locate-dominating-file'.
|
||||
;;;
|
||||
;; `locate-dominating-file'
|
||||
;; `region-active-p'
|
||||
;;
|
||||
;; added for compatibility in emacs < 23
|
||||
(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
|
||||
a kind of root directory by `locate-dominating-file' which will stop its search
|
||||
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,
|
||||
or mount points potentially requiring authentication as a different user.")
|
||||
|
||||
(defun locate-dominating-file (file name)
|
||||
"Look up the directory hierarchy from FILE for a file named NAME.
|
||||
(defun locate-dominating-file (file name)
|
||||
"Look up the directory hierarchy from FILE for a file named NAME.
|
||||
Stop at the first parent directory containing a file NAME,
|
||||
and return the directory. Return nil if not found."
|
||||
;; 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
|
||||
;; multiple calls using the code in here.
|
||||
;;
|
||||
;; Represent /home/luser/foo as ~/foo so that we don't try to look for
|
||||
;; `name' in /home or in /.
|
||||
(setq file (abbreviate-file-name file))
|
||||
(let ((root nil)
|
||||
(prev-file file)
|
||||
;; `user' is not initialized outside the loop because
|
||||
;; `file' may not exist, so we may have to walk up part of the
|
||||
;; hierarchy before we find the "initial UUID".
|
||||
(user nil)
|
||||
try)
|
||||
(while (not (or root
|
||||
(null file)
|
||||
;; FIXME: Disabled this heuristic because it is sometimes
|
||||
;; inappropriate.
|
||||
;; As a heuristic, we stop looking up the hierarchy of
|
||||
;; directories as soon as we find a directory belonging
|
||||
;; to another user. This should save us from looking in
|
||||
;; things like /net and /afs. This assumes that all the
|
||||
;; files inside a project belong to the same user.
|
||||
;; (let ((prev-user user))
|
||||
;; (setq user (nth 2 (file-attributes file)))
|
||||
;; (and prev-user (not (equal user prev-user))))
|
||||
(string-match locate-dominating-stop-dir-regexp file)))
|
||||
(setq try (file-exists-p (expand-file-name name file)))
|
||||
(cond (try (setq root file))
|
||||
((equal file (setq prev-file file
|
||||
file (file-name-directory
|
||||
(directory-file-name file))))
|
||||
(setq file nil))))
|
||||
root)))
|
||||
;; 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
|
||||
;; multiple calls using the code in here.
|
||||
;;
|
||||
;; Represent /home/luser/foo as ~/foo so that we don't try to look for
|
||||
;; `name' in /home or in /.
|
||||
(setq file (abbreviate-file-name file))
|
||||
(let ((root nil)
|
||||
(prev-file file)
|
||||
;; `user' is not initialized outside the loop because
|
||||
;; `file' may not exist, so we may have to walk up part of the
|
||||
;; hierarchy before we find the "initial UUID".
|
||||
(user nil)
|
||||
try)
|
||||
(while (not (or root
|
||||
(null file)
|
||||
;; FIXME: Disabled this heuristic because it is sometimes
|
||||
;; inappropriate.
|
||||
;; As a heuristic, we stop looking up the hierarchy of
|
||||
;; directories as soon as we find a directory belonging
|
||||
;; to another user. This should save us from looking in
|
||||
;; things like /net and /afs. This assumes that all the
|
||||
;; files inside a project belong to the same user.
|
||||
;; (let ((prev-user user))
|
||||
;; (setq user (nth 2 (file-attributes file)))
|
||||
;; (and prev-user (not (equal user prev-user))))
|
||||
(string-match locate-dominating-stop-dir-regexp file)))
|
||||
(setq try (file-exists-p (expand-file-name name file)))
|
||||
(cond (try (setq root file))
|
||||
((equal file (setq prev-file file
|
||||
file (file-name-directory
|
||||
(directory-file-name file))))
|
||||
(setq file nil))))
|
||||
root))))
|
||||
|
||||
;; `c-neutralize-syntax-in-CPP` sometimes fires "End of Buffer" error
|
||||
;; (when it execute forward-char) and interrupt the after change
|
||||
|
Loading…
x
Reference in New Issue
Block a user