mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-14 05:23:04 +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
|
`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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user