emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 0d79e69 30/36: Extra measures to prevent premature yas-min


From: Noam Postavsky
Subject: [elpa] master 0d79e69 30/36: Extra measures to prevent premature yas-minor-mode
Date: Sat, 11 Jun 2016 19:21:11 +0000 (UTC)

branch: master
commit 0d79e6988ec371279fc1c23733c7371bd21927ee
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>

    Extra measures to prevent premature yas-minor-mode
    
    The user's hooks may try to enable yas-minor-mode before yasnippet.el
    has finished loading.  In [1], we catch and ignore the errors arising
    from this, but it's better if we can avoid hitting the error in the
    first place.
    
    This means we have 3 separate measures to avoid the problem, but since
    this bug can leave Emacs unusable due to a failing post-command-hook,
    a bit of redundant safety is not a bad thing.
    
    * yasnippet.el (yas-minor-mode): Only turn on if yasnippet is fully
    loaded.
    (yas--font-lock-keywords): Disable user hooks.
    
    [1]: "Avoid potential problems with user's hooks"
    4c6064ce1aff07fe4481b5e2d987c8a7f044c207
---
 yasnippet.el |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/yasnippet.el b/yasnippet.el
index 4514f1b..aa28c1e 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -776,7 +776,7 @@ Key bindings:
   ;; The indicator for the mode line.
   " yas"
   :group 'yasnippet
-  (cond (yas-minor-mode
+  (cond ((and yas-minor-mode (featurep 'yasnippet))
          ;; Install the direct keymaps in `emulation-mode-map-alists'
          ;; (we use `add-hook' even though it's not technically a hook,
          ;; but it works). Then define variables named after modes to
@@ -884,7 +884,9 @@ Honour `yas-dont-activate-functions', which see."
 (defvar yas--font-lock-keywords
   (append '(("^#.*$" . font-lock-comment-face))
           (with-temp-buffer
-            (ignore-errors (emacs-lisp-mode))
+            (let ((prog-mode-hook nil)
+                  (emacs-lisp-mode-hook nil))
+              (ignore-errors (emacs-lisp-mode)))
             (font-lock-set-defaults)
             (if (eq t (car-safe font-lock-keywords))
                 ;; They're "compiled", so extract the source.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]