]> git.eshelyaron.com Git - emacs.git/commitdiff
* admin/grammars/bovine-grammar.el: Avoid using old-style backquotes.
authorDavid Engster <deng@randomsample.de>
Mon, 31 Oct 2011 01:00:32 +0000 (09:00 +0800)
committerChong Yidong <cyd@gnu.org>
Mon, 31 Oct 2011 01:00:32 +0000 (09:00 +0800)
admin/ChangeLog
admin/grammars/bovine-grammar.el

index 7c2f1a743b2c1b6820c3457cdf238f0f5396d18a..f91d53194ceb312f504081829a65995eb3e40508 100644 (file)
@@ -1,3 +1,7 @@
+2011-10-31  David Engster  <deng@randomsample.de>
+
+       * grammars/bovine-grammar.el: Avoid using old-style backquotes.
+
 2011-10-28  Eli Zaretskii  <eliz@gnu.org>
 
        * nt/README-ftp-server: Mention UNICOWS.DLL as prerequisite for
index 5a948608671ab11c9a0dd6668fcea40abecbc425..0e8756e1c5b4dcb1aaf6f9a2f56d1c24e723a00d 100644 (file)
@@ -109,6 +109,14 @@ NAME, ALIASCLASS, DEFINITION and ATTRIBUTES."
 ;; Cache of macro definitions currently in use.
 (defvar bovine--grammar-macros nil)
 
+;; Detect if we have an Emacs with newstyle unquotes allowed outside
+;; of backquote.
+;; This should probably be changed to a test to (= emacs-major-version 24)
+;; when it is released, but at the moment it might be possible that people
+;; are using an older snapshot.
+(defvar bovine--grammar-newstyle-unquote
+  (equal '(, test) (read ",test")))
+
 (defun bovine-grammar-expand-form (form quotemode &optional inplace)
   "Expand FORM into a new one suitable to the bovine parser.
 FORM is a list in which we are substituting.
@@ -142,6 +150,17 @@ expanded from elsewhere."
       (while form
         (setq first (car form)
               form  (cdr form))
+       ;; Hack for dealing with new reading of unquotes outside of
+       ;; backquote (introduced in rev. 102591 in emacs-bzr).
+       (when (and bovine--grammar-newstyle-unquote
+                  (listp first)
+                  (or (equal (car first) '\,)
+                      (equal (car first) '\,@)))
+         (if (listp (cadr first))
+             (setq form (append (cdr first) form)
+                   first (car first))
+           (setq first (intern (concat (symbol-name (car first))
+                                       (symbol-name (cadr first)))))))
         (cond
          ((eq first nil)
           (when (and (not inlist) (not inplace))