aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/calc/calc-aent.el
diff options
context:
space:
mode:
authorJay Belanger <[email protected]>2004-12-19 06:59:33 +0000
committerJay Belanger <[email protected]>2004-12-19 06:59:33 +0000
commita1a6b4285004e53f826a89fd618799669ecad84c (patch)
tree12a8da8f1d20317f092ab075aac9ecf4ea354c01 /lisp/calc/calc-aent.el
parent787e24c303f452b32c40f20e66d290f02e1e6fe1 (diff)
(calcAlg-blank-matching-open): Temporarily adjust the syntax of both
delimiters of half-open intervals.
Diffstat (limited to 'lisp/calc/calc-aent.el')
-rw-r--r--lisp/calc/calc-aent.el52
1 files changed, 30 insertions, 22 deletions
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el
index c062a822e8..2210435036 100644
--- a/lisp/calc/calc-aent.el
+++ b/lisp/calc/calc-aent.el
@@ -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)