]> code.delx.au - gnu-emacs/commitdiff
* src/eval.c (Fdefvaralias): Also mark the target as variable-special-p.
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 15 Jun 2011 18:36:00 +0000 (14:36 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 15 Jun 2011 18:36:00 +0000 (14:36 -0400)
lisp/emacs-lisp/smie.el
src/ChangeLog
src/eval.c

index 2701d6b940b665f6f30237c9650ff9da47020466..17cc5668b5f9716ef040dc4babc4322eb97dd562 100644 (file)
 ;; - Maybe accept two juxtaposed non-terminals in the BNF under the condition
 ;;   that the first always ends with a terminal, or that the second always
 ;;   starts with a terminal.
+;; - Permit EBNF-style notation.
+;; - If the grammar has conflicts, the only way is to make the lexer return
+;;   different tokens for the different cases.  This extra work performed by
+;;   the lexer can be costly and unnecessary: we perform this extra work every
+;;   time we find the conflicting token, regardless of whether or not the
+;;   difference between the various situations is relevant to the current
+;;   situation.  E.g. we may try to determine whether a ";" is a ";-operator"
+;;   or a ";-separator" in a case where we're skipping over a "begin..end" pair
+;;   where the difference doesn't matter.  For frequently occurring tokens and
+;;   rarely occurring conflicts, this can be a significant performance problem.
+;;   We could try and let the lexer return a "set of possible tokens
+;;   plus a refinement function" and then let parser call the refinement
+;;   function if needed.
+;; - Make it possible to better specify the behavior in the face of
+;;   syntax errors.  IOW provide some control over the choice of precedence
+;;   levels within the limits of the constraints.  E.g. make it possible for
+;;   the grammar to specify that "begin..end" has lower precedence than
+;;   "Module..EndModule", so that if a "begin" is missing, scanning from the
+;;   "end" will stop at "Module" rather than going past it (and similarly,
+;;   scanning from "Module" should not stop at a spurious "end").
 
 ;;; Code:
 
index c72311c305fe212a00aa731b7900ef740fb86625..821e4090cfd8eb265c12068af7a3a1507cce7950 100644 (file)
@@ -1,3 +1,7 @@
+2011-06-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (Fdefvaralias): Also mark the target as variable-special-p.
+
 2011-06-14  Jan Djärv  <jan.h.d@swipnet.se>
 
        * xfns.c (x_set_scroll_bar_default_width): Remove argument to
index ef5abac17aee2763c737c5cd43aeb735a527575b..d6f9a9ede815f384afee541952a76371faa0216a 100644 (file)
@@ -772,6 +772,7 @@ The return value is BASE-VARIABLE.  */)
   }
 
   sym->declared_special = 1;
+  XSYMBOL (base_variable)->declared_special = 1;
   sym->redirect = SYMBOL_VARALIAS;
   SET_SYMBOL_ALIAS (sym, XSYMBOL (base_variable));
   sym->constant = SYMBOL_CONSTANT_P (base_variable);