]> git.eshelyaron.com Git - emacs.git/commitdiff
(calcAlg-blank-matching-open): Temporarily adjust the syntax of both
authorJay Belanger <jay.p.belanger@gmail.com>
Sun, 19 Dec 2004 06:59:33 +0000 (06:59 +0000)
committerJay Belanger <jay.p.belanger@gmail.com>
Sun, 19 Dec 2004 06:59:33 +0000 (06:59 +0000)
delimiters of half-open intervals.

lisp/calc/calc-aent.el

index c062a822e89e037e70fc09c2f1208fcb8e68c27f..2210435036cffefe622502b7b046eeea4485363c 100644 (file)
@@ -410,32 +410,40 @@ T means abort and give an error message.")
       (exit-minibuffer))))
 
 (defun calcAlg-blink-matching-open ()
-  (let ((oldpos (point))
-       (blinkpos nil))
+  (let ((rightpt (point))
+       (leftpt nil)
+        (rightchar (preceding-char))
+        leftchar
+        rightsyntax
+        leftsyntax)
     (save-excursion
       (condition-case ()
-         (setq blinkpos (scan-sexps oldpos -1))
-       (error nil)))
-    (if (and blinkpos
-            (> oldpos (1+ (point-min)))
-            (or (and (= (char-after (1- oldpos)) ?\))
-                     (= (char-after blinkpos) ?\[))
-                (and (= (char-after (1- oldpos)) ?\])
-                     (= (char-after blinkpos) ?\()))
-            (save-excursion
-              (goto-char blinkpos)
-              (looking-at ".+\\(\\.\\.\\|\\\\dots\\|\\\\ldots\\)")))
-       (let ((saved (aref (syntax-table) (char-after blinkpos))))
-         (unwind-protect
-             (progn
-               (aset (syntax-table) (char-after blinkpos)
-                     (+ (logand saved 255)
-                        (lsh (char-after (1- oldpos)) 8)))
-               (blink-matching-open))
-           (aset (syntax-table) (char-after blinkpos) saved)))
+         (setq leftpt (scan-sexps rightpt -1)
+                leftchar (char-after leftpt))
+       (error nil)))
+    (if (and leftpt
+            (or (and (= rightchar ?\))
+                     (= leftchar ?\[))
+                (and (= rightchar ?\])
+                     (= leftchar ?\()))
+            (save-excursion
+              (goto-char leftpt)
+              (looking-at ".+\\(\\.\\.\\|\\\\dots\\|\\\\ldots\\)")))
+       (let ((leftsaved (aref (syntax-table) leftchar))
+              (rightsaved (aref (syntax-table) rightchar)))
+         (unwind-protect
+             (progn
+                (cond ((= leftchar ?\[)
+                       (aset (syntax-table) leftchar (cons 4 ?\)))
+                       (aset (syntax-table) rightchar (cons 5 ?\[)))
+                      (t
+                       (aset (syntax-table) leftchar (cons 4 ?\]))
+                       (aset (syntax-table) rightchar (cons 5 ?\())))
+               (blink-matching-open))
+            (aset (syntax-table) leftchar leftsaved)
+            (aset (syntax-table) rightchar rightsaved)))
       (blink-matching-open))))
 
-
 (defun calc-alg-digit-entry ()
   (calc-alg-entry
    (cond ((eq last-command-char ?e)