aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorPaul Eggert2014-12-13 23:40:04 -0800
committerPaul Eggert2014-12-13 23:41:33 -0800
commit3de474e4ac7418d06b9f37489f939a16d9bde1c2 (patch)
treecbcba843251af8de054f3a1166f30fb3434e635e /lisp
parent2e7f6d53f3831bdf8c96a630abca2f926fc45aae (diff)
downloademacs-3de474e4ac7418d06b9f37489f939a16d9bde1c2.tar.gz
emacs-3de474e4ac7418d06b9f37489f939a16d9bde1c2.zip
Spelling fixes
All uses changed. * lib-src/etags.c (analyze_regex): Rename from analyse_regex. * lisp/cedet/semantic/lex-spp.el: (semantic-lex-spp-analyzer-do-replace): Rename from semantic-lex-spp-anlyzer-do-replace. * lisp/emacs-lisp/cconv.el (cconv--analyze-use): Rename from cconv--analyse-use. (cconv--analyze-function): Rename from cconv--analyse-function. (cconv-analyze-form): Rename from cconv-analyse-form. * src/regex.c (analyze_first): Rename from analyze_first.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/cedet/semantic/lex-spp.el5
-rw-r--r--lisp/emacs-lisp/bytecomp.el2
-rw-r--r--lisp/emacs-lisp/cconv.el57
-rw-r--r--lisp/gnus/gnus-bookmark.el2
-rw-r--r--lisp/org/org-table.el2
-rw-r--r--lisp/org/org.el4
-rw-r--r--lisp/progmodes/idlwave.el2
7 files changed, 39 insertions, 35 deletions
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index 67f944a09ae..164454c481c 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -823,7 +823,7 @@ ARGVALUES are values for any arg list, or nil."
823;; An analyzer that will push tokens from a macro in place 823;; An analyzer that will push tokens from a macro in place
824;; of the macro symbol. 824;; of the macro symbol.
825;; 825;;
826(defun semantic-lex-spp-anlyzer-do-replace (sym val beg end) 826(defun semantic-lex-spp-analyzer-do-replace (sym val beg end)
827 "Do the lexical replacement for SYM with VAL. 827 "Do the lexical replacement for SYM with VAL.
828Argument BEG and END specify the bounds of SYM in the buffer." 828Argument BEG and END specify the bounds of SYM in the buffer."
829 (if (not val) 829 (if (not val)
@@ -863,6 +863,9 @@ Argument BEG and END specify the bounds of SYM in the buffer."
863 (setq semantic-lex-end-point end) 863 (setq semantic-lex-end-point end)
864 ) 864 )
865 )) 865 ))
866(define-obsolete-function-alias
867 'semantic-lex-spp-anlyzer-do-replace
868 'semantic-lex-spp-analyzer-do-replace "25.1")
866 869
867(defvar semantic-lex-spp-replacements-enabled t 870(defvar semantic-lex-spp-replacements-enabled t
868 "Non-nil means do replacements when finding keywords. 871 "Non-nil means do replacements when finding keywords.
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index e0cdd33c13d..13b9f937249 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -417,7 +417,7 @@ specify different fields to sort on."
417This list lives partly on the stack.") 417This list lives partly on the stack.")
418(defvar byte-compile-lexical-variables nil 418(defvar byte-compile-lexical-variables nil
419 "List of variables that have been treated as lexical. 419 "List of variables that have been treated as lexical.
420Filled in `cconv-analyse-form' but initialized and consulted here.") 420Filled in `cconv-analyze-form' but initialized and consulted here.")
421(defvar byte-compile-const-variables nil 421(defvar byte-compile-const-variables nil
422 "List of variables declared as constants during compilation of this file.") 422 "List of variables declared as constants during compilation of this file.")
423(defvar byte-compile-free-references) 423(defvar byte-compile-free-references)
diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el
index 98eef11a658..3e17e38fe39 100644
--- a/lisp/emacs-lisp/cconv.el
+++ b/lisp/emacs-lisp/cconv.el
@@ -30,13 +30,13 @@
30;; All macros should be expanded beforehand. 30;; All macros should be expanded beforehand.
31;; 31;;
32;; Here is a brief explanation how this code works. 32;; Here is a brief explanation how this code works.
33;; Firstly, we analyze the tree by calling cconv-analyse-form. 33;; Firstly, we analyze the tree by calling cconv-analyze-form.
34;; This function finds all mutated variables, all functions that are suitable 34;; This function finds all mutated variables, all functions that are suitable
35;; for lambda lifting and all variables captured by closure. It passes the tree 35;; for lambda lifting and all variables captured by closure. It passes the tree
36;; once, returning a list of three lists. 36;; once, returning a list of three lists.
37;; 37;;
38;; Then we calculate the intersection of the first and third lists returned by 38;; Then we calculate the intersection of the first and third lists returned by
39;; cconv-analyse form to find all mutated variables that are captured by 39;; cconv-analyze form to find all mutated variables that are captured by
40;; closure. 40;; closure.
41 41
42;; Armed with this data, we call cconv-closure-convert-rec, that rewrites the 42;; Armed with this data, we call cconv-closure-convert-rec, that rewrites the
@@ -140,7 +140,7 @@ Returns a form where all lambdas don't have any free variables."
140 (cconv-lambda-candidates '()) 140 (cconv-lambda-candidates '())
141 (cconv-captured+mutated '())) 141 (cconv-captured+mutated '()))
142 ;; Analyze form - fill these variables with new information. 142 ;; Analyze form - fill these variables with new information.
143 (cconv-analyse-form form '()) 143 (cconv-analyze-form form '())
144 (setq cconv-freevars-alist (nreverse cconv-freevars-alist)) 144 (setq cconv-freevars-alist (nreverse cconv-freevars-alist))
145 (prog1 (cconv-convert form nil nil) ; Env initially empty. 145 (prog1 (cconv-convert form nil nil) ; Env initially empty.
146 (cl-assert (null cconv-freevars-alist))))) 146 (cl-assert (null cconv-freevars-alist)))))
@@ -152,7 +152,7 @@ Returns a form where all lambdas don't have any free variables."
152 (cconv-lambda-candidates '()) 152 (cconv-lambda-candidates '())
153 (cconv-captured+mutated '())) 153 (cconv-captured+mutated '()))
154 ;; Analyze form - fill these variables with new information. 154 ;; Analyze form - fill these variables with new information.
155 (cconv-analyse-form form '()) 155 (cconv-analyze-form form '())
156 ;; But don't perform the closure conversion. 156 ;; But don't perform the closure conversion.
157 form)) 157 form))
158 158
@@ -525,7 +525,7 @@ places where they originally did not directly appear."
525 (defalias 'byte-compile-not-lexical-var-p 'boundp)) 525 (defalias 'byte-compile-not-lexical-var-p 'boundp))
526(defvar byte-compile-lexical-variables) 526(defvar byte-compile-lexical-variables)
527 527
528(defun cconv--analyse-use (vardata form varkind) 528(defun cconv--analyze-use (vardata form varkind)
529 "Analyze the use of a variable. 529 "Analyze the use of a variable.
530VARDATA should be (BINDER READ MUTATED CAPTURED CALLED). 530VARDATA should be (BINDER READ MUTATED CAPTURED CALLED).
531VARKIND is the name of the kind of variable. 531VARKIND is the name of the kind of variable.
@@ -557,7 +557,7 @@ FORM is the parent form that binds this var."
557 (`(,(and binder `(,_ (function (lambda . ,_)))) nil nil nil t) 557 (`(,(and binder `(,_ (function (lambda . ,_)))) nil nil nil t)
558 (push (cons binder form) cconv-lambda-candidates)))) 558 (push (cons binder form) cconv-lambda-candidates))))
559 559
560(defun cconv--analyse-function (args body env parentform) 560(defun cconv--analyze-function (args body env parentform)
561 (let* ((newvars nil) 561 (let* ((newvars nil)
562 (freevars (list body)) 562 (freevars (list body))
563 ;; We analyze the body within a new environment where all uses are 563 ;; We analyze the body within a new environment where all uses are
@@ -582,10 +582,10 @@ FORM is the parent form that binds this var."
582 (push (cons (list arg) (cdr varstruct)) newvars) 582 (push (cons (list arg) (cdr varstruct)) newvars)
583 (push varstruct newenv))))) 583 (push varstruct newenv)))))
584 (dolist (form body) ;Analyze body forms. 584 (dolist (form body) ;Analyze body forms.
585 (cconv-analyse-form form newenv)) 585 (cconv-analyze-form form newenv))
586 ;; Summarize resulting data about arguments. 586 ;; Summarize resulting data about arguments.
587 (dolist (vardata newvars) 587 (dolist (vardata newvars)
588 (cconv--analyse-use vardata parentform "argument")) 588 (cconv--analyze-use vardata parentform "argument"))
589 ;; Transfer uses collected in `envcopy' (via `newenv') back to `env'; 589 ;; Transfer uses collected in `envcopy' (via `newenv') back to `env';
590 ;; and compute free variables. 590 ;; and compute free variables.
591 (while env 591 (while env
@@ -601,7 +601,7 @@ FORM is the parent form that binds this var."
601 (setf (nth 3 (car env)) t)) 601 (setf (nth 3 (car env)) t))
602 (setq env (cdr env) envcopy (cdr envcopy)))))) 602 (setq env (cdr env) envcopy (cdr envcopy))))))
603 603
604(defun cconv-analyse-form (form env) 604(defun cconv-analyze-form (form env)
605 "Find mutated variables and variables captured by closure. 605 "Find mutated variables and variables captured by closure.
606Analyze lambdas if they are suitable for lambda lifting. 606Analyze lambdas if they are suitable for lambda lifting.
607- FORM is a piece of Elisp code after macroexpansion. 607- FORM is a piece of Elisp code after macroexpansion.
@@ -628,7 +628,7 @@ and updates the data stored in ENV."
628 (setq var (car binder)) 628 (setq var (car binder))
629 (setq value (cadr binder)) 629 (setq value (cadr binder))
630 630
631 (cconv-analyse-form value (if (eq letsym 'let*) env orig-env))) 631 (cconv-analyze-form value (if (eq letsym 'let*) env orig-env)))
632 632
633 (unless (byte-compile-not-lexical-var-p var) 633 (unless (byte-compile-not-lexical-var-p var)
634 (cl-pushnew var byte-compile-lexical-variables) 634 (cl-pushnew var byte-compile-lexical-variables)
@@ -637,13 +637,13 @@ and updates the data stored in ENV."
637 (push varstruct env)))) 637 (push varstruct env))))
638 638
639 (dolist (form body-forms) ; Analyze body forms. 639 (dolist (form body-forms) ; Analyze body forms.
640 (cconv-analyse-form form env)) 640 (cconv-analyze-form form env))
641 641
642 (dolist (vardata newvars) 642 (dolist (vardata newvars)
643 (cconv--analyse-use vardata form "variable")))) 643 (cconv--analyze-use vardata form "variable"))))
644 644
645 (`(function (lambda ,vrs . ,body-forms)) 645 (`(function (lambda ,vrs . ,body-forms))
646 (cconv--analyse-function vrs body-forms env form)) 646 (cconv--analyze-function vrs body-forms env form))
647 647
648 (`(setq . ,forms) 648 (`(setq . ,forms)
649 ;; If a local variable (member of env) is modified by setq then 649 ;; If a local variable (member of env) is modified by setq then
@@ -651,7 +651,7 @@ and updates the data stored in ENV."
651 (while forms 651 (while forms
652 (let ((v (assq (car forms) env))) ; v = non nil if visible 652 (let ((v (assq (car forms) env))) ; v = non nil if visible
653 (when v (setf (nth 2 v) t))) 653 (when v (setf (nth 2 v) t)))
654 (cconv-analyse-form (cadr forms) env) 654 (cconv-analyze-form (cadr forms) env)
655 (setq forms (cddr forms)))) 655 (setq forms (cddr forms))))
656 656
657 (`((lambda . ,_) . ,_) ; First element is lambda expression. 657 (`((lambda . ,_) . ,_) ; First element is lambda expression.
@@ -659,11 +659,11 @@ and updates the data stored in ENV."
659 (format "Use of deprecated ((lambda %s ...) ...) form" (nth 1 (car form))) 659 (format "Use of deprecated ((lambda %s ...) ...) form" (nth 1 (car form)))
660 t :warning) 660 t :warning)
661 (dolist (exp `((function ,(car form)) . ,(cdr form))) 661 (dolist (exp `((function ,(car form)) . ,(cdr form)))
662 (cconv-analyse-form exp env))) 662 (cconv-analyze-form exp env)))
663 663
664 (`(cond . ,cond-forms) ; cond special form 664 (`(cond . ,cond-forms) ; cond special form
665 (dolist (forms cond-forms) 665 (dolist (forms cond-forms)
666 (dolist (form forms) (cconv-analyse-form form env)))) 666 (dolist (form forms) (cconv-analyze-form form env))))
667 667
668 (`(quote . ,_) nil) ; quote form 668 (`(quote . ,_) nil) ; quote form
669 (`(function . ,_) nil) ; same as quote 669 (`(function . ,_) nil) ; same as quote
@@ -672,13 +672,13 @@ and updates the data stored in ENV."
672 (guard byte-compile--use-old-handlers)) 672 (guard byte-compile--use-old-handlers))
673 ;; FIXME: The bytecode for condition-case forces us to wrap the 673 ;; FIXME: The bytecode for condition-case forces us to wrap the
674 ;; form and handlers in closures. 674 ;; form and handlers in closures.
675 (cconv--analyse-function () (list protected-form) env form) 675 (cconv--analyze-function () (list protected-form) env form)
676 (dolist (handler handlers) 676 (dolist (handler handlers)
677 (cconv--analyse-function (if var (list var)) (cdr handler) 677 (cconv--analyze-function (if var (list var)) (cdr handler)
678 env form))) 678 env form)))
679 679
680 (`(condition-case ,var ,protected-form . ,handlers) 680 (`(condition-case ,var ,protected-form . ,handlers)
681 (cconv-analyse-form protected-form env) 681 (cconv-analyze-form protected-form env)
682 (when (and var (symbolp var) (byte-compile-not-lexical-var-p var)) 682 (when (and var (symbolp var) (byte-compile-not-lexical-var-p var))
683 (byte-compile-log-warning 683 (byte-compile-log-warning
684 (format "Lexical variable shadows the dynamic variable %S" var))) 684 (format "Lexical variable shadows the dynamic variable %S" var)))
@@ -686,21 +686,21 @@ and updates the data stored in ENV."
686 (if var (push varstruct env)) 686 (if var (push varstruct env))
687 (dolist (handler handlers) 687 (dolist (handler handlers)
688 (dolist (form (cdr handler)) 688 (dolist (form (cdr handler))
689 (cconv-analyse-form form env))) 689 (cconv-analyze-form form env)))
690 (if var (cconv--analyse-use (cons (list var) (cdr varstruct)) 690 (if var (cconv--analyze-use (cons (list var) (cdr varstruct))
691 form "variable")))) 691 form "variable"))))
692 692
693 ;; FIXME: The bytecode for unwind-protect forces us to wrap the unwind. 693 ;; FIXME: The bytecode for unwind-protect forces us to wrap the unwind.
694 (`(,(or (and `catch (guard byte-compile--use-old-handlers)) 694 (`(,(or (and `catch (guard byte-compile--use-old-handlers))
695 `unwind-protect) 695 `unwind-protect)
696 ,form . ,body) 696 ,form . ,body)
697 (cconv-analyse-form form env) 697 (cconv-analyze-form form env)
698 (cconv--analyse-function () body env form)) 698 (cconv--analyze-function () body env form))
699 699
700 (`(defvar ,var) (push var byte-compile-bound-variables)) 700 (`(defvar ,var) (push var byte-compile-bound-variables))
701 (`(,(or `defconst `defvar) ,var ,value . ,_) 701 (`(,(or `defconst `defvar) ,var ,value . ,_)
702 (push var byte-compile-bound-variables) 702 (push var byte-compile-bound-variables)
703 (cconv-analyse-form value env)) 703 (cconv-analyze-form value env))
704 704
705 (`(,(or `funcall `apply) ,fun . ,args) 705 (`(,(or `funcall `apply) ,fun . ,args)
706 ;; Here we ignore fun because funcall and apply are the only two 706 ;; Here we ignore fun because funcall and apply are the only two
@@ -710,8 +710,8 @@ and updates the data stored in ENV."
710 (let ((fdata (and (symbolp fun) (assq fun env)))) 710 (let ((fdata (and (symbolp fun) (assq fun env))))
711 (if fdata 711 (if fdata
712 (setf (nth 4 fdata) t) 712 (setf (nth 4 fdata) t)
713 (cconv-analyse-form fun env))) 713 (cconv-analyze-form fun env)))
714 (dolist (form args) (cconv-analyse-form form env))) 714 (dolist (form args) (cconv-analyze-form form env)))
715 715
716 (`(interactive . ,forms) 716 (`(interactive . ,forms)
717 ;; These appear within the function body but they don't have access 717 ;; These appear within the function body but they don't have access
@@ -719,19 +719,20 @@ and updates the data stored in ENV."
719 ;; We could extend this to allow interactive specs to refer to 719 ;; We could extend this to allow interactive specs to refer to
720 ;; variables in the function's enclosing environment, but it doesn't 720 ;; variables in the function's enclosing environment, but it doesn't
721 ;; seem worth the trouble. 721 ;; seem worth the trouble.
722 (dolist (form forms) (cconv-analyse-form form nil))) 722 (dolist (form forms) (cconv-analyze-form form nil)))
723 723
724 ;; `declare' should now be macro-expanded away (and if they're not, we're 724 ;; `declare' should now be macro-expanded away (and if they're not, we're
725 ;; in trouble because they *can* contain code nowadays). 725 ;; in trouble because they *can* contain code nowadays).
726 ;; (`(declare . ,_) nil) ;The args don't contain code. 726 ;; (`(declare . ,_) nil) ;The args don't contain code.
727 727
728 (`(,_ . ,body-forms) ; First element is a function or whatever. 728 (`(,_ . ,body-forms) ; First element is a function or whatever.
729 (dolist (form body-forms) (cconv-analyse-form form env))) 729 (dolist (form body-forms) (cconv-analyze-form form env)))
730 730
731 ((pred symbolp) 731 ((pred symbolp)
732 (let ((dv (assq form env))) ; dv = declared and visible 732 (let ((dv (assq form env))) ; dv = declared and visible
733 (when dv 733 (when dv
734 (setf (nth 1 dv) t)))))) 734 (setf (nth 1 dv) t))))))
735(define-obsolete-function-alias 'cconv-analyse-form 'cconv-analyze-form "25.1")
735 736
736(provide 'cconv) 737(provide 'cconv)
737;;; cconv.el ends here 738;;; cconv.el ends here
diff --git a/lisp/gnus/gnus-bookmark.el b/lisp/gnus/gnus-bookmark.el
index 91d5c769e25..e5d218e0393 100644
--- a/lisp/gnus/gnus-bookmark.el
+++ b/lisp/gnus/gnus-bookmark.el
@@ -251,7 +251,7 @@ So the cdr of each bookmark is an alist too.")
251 (interactive) 251 (interactive)
252 (save-excursion 252 (save-excursion
253 (save-window-excursion 253 (save-window-excursion
254 ;; Avoir warnings? 254 ;; Avoid warnings?
255 ;; (message "Saving Gnus bookmarks to file %s..." gnus-bookmark-default-file) 255 ;; (message "Saving Gnus bookmarks to file %s..." gnus-bookmark-default-file)
256 (set-buffer (get-buffer-create " *Gnus bookmarks*")) 256 (set-buffer (get-buffer-create " *Gnus bookmarks*"))
257 (erase-buffer) 257 (erase-buffer)
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index f28e96c694e..8c9a83d8847 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -2351,7 +2351,7 @@ For all numbers larger than LIMIT, shift them by DELTA."
2351 (string-match "^[a-zA-Z][_a-zA-Z0-9]*$" field)) 2351 (string-match "^[a-zA-Z][_a-zA-Z0-9]*$" field))
2352 (push (cons field v) org-table-local-parameters) 2352 (push (cons field v) org-table-local-parameters)
2353 (push (list field line col) org-table-named-field-locations)))) 2353 (push (list field line col) org-table-named-field-locations))))
2354 ;; Analyse the line types 2354 ;; Analyze the line types.
2355 (goto-char beg) 2355 (goto-char beg)
2356 (setq org-table-current-begin-line (org-current-line) 2356 (setq org-table-current-begin-line (org-current-line)
2357 org-table-current-begin-pos (point) 2357 org-table-current-begin-pos (point)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 78536eb4120..2b7c947b446 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -19148,7 +19148,7 @@ BEG and END default to the buffer boundaries."
19148(org-defkey org-mode-map "\C-c\M-f" 'org-next-block) 19148(org-defkey org-mode-map "\C-c\M-f" 'org-next-block)
19149(org-defkey org-mode-map "\C-c\M-b" 'org-previous-block) 19149(org-defkey org-mode-map "\C-c\M-b" 'org-previous-block)
19150(org-defkey org-mode-map "\C-c$" 'org-archive-subtree) 19150(org-defkey org-mode-map "\C-c$" 'org-archive-subtree)
19151(org-defkey org-mode-map "\C-c\C-x\C-s" 'org-advertized-archive-subtree) 19151(org-defkey org-mode-map "\C-c\C-x\C-s" 'org-archive-subtree)
19152(org-defkey org-mode-map "\C-c\C-x\C-a" 'org-archive-subtree-default) 19152(org-defkey org-mode-map "\C-c\C-x\C-a" 'org-archive-subtree-default)
19153(org-defkey org-mode-map "\C-c\C-xd" 'org-insert-drawer) 19153(org-defkey org-mode-map "\C-c\C-xd" 'org-insert-drawer)
19154(org-defkey org-mode-map "\C-c\C-xa" 'org-toggle-archive-tag) 19154(org-defkey org-mode-map "\C-c\C-xa" 'org-toggle-archive-tag)
@@ -20943,7 +20943,7 @@ on context. See the individual commands for more information."
20943 ("Archive" 20943 ("Archive"
20944 ["Archive (default method)" org-archive-subtree-default (org-in-subtree-not-table-p)] 20944 ["Archive (default method)" org-archive-subtree-default (org-in-subtree-not-table-p)]
20945 "--" 20945 "--"
20946 ["Move Subtree to Archive file" org-advertized-archive-subtree (org-in-subtree-not-table-p)] 20946 ["Move Subtree to Archive file" org-archive-subtree (org-in-subtree-not-table-p)]
20947 ["Toggle ARCHIVE tag" org-toggle-archive-tag (org-in-subtree-not-table-p)] 20947 ["Toggle ARCHIVE tag" org-toggle-archive-tag (org-in-subtree-not-table-p)]
20948 ["Move subtree to Archive sibling" org-archive-to-archive-sibling (org-in-subtree-not-table-p)] 20948 ["Move subtree to Archive sibling" org-archive-to-archive-sibling (org-in-subtree-not-table-p)]
20949 ) 20949 )
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index e66c9655df1..7502a491806 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -3713,7 +3713,7 @@ expression to enter.
3713The lines containing S1 and S2 are reindented using `indent-region' 3713The lines containing S1 and S2 are reindented using `indent-region'
3714unless the optional second argument NOINDENT is non-nil." 3714unless the optional second argument NOINDENT is non-nil."
3715 (if (derived-mode-p 'idlwave-shell-mode) 3715 (if (derived-mode-p 'idlwave-shell-mode)
3716 ;; This is a gross hack to avoit template abbrev expansion 3716 ;; This is a gross hack to avoid template abbrev expansion
3717 ;; in the shell. FIXME: This is a dirty hack. 3717 ;; in the shell. FIXME: This is a dirty hack.
3718 (if (and (eq this-command 'self-insert-command) 3718 (if (and (eq this-command 'self-insert-command)
3719 (equal last-abbrev-location (point))) 3719 (equal last-abbrev-location (point)))