- Timestamp:
- May 20, 2007, 9:05:25 AM (18 years ago)
- File:
-
- 1 edited
-
branches/ide-1.0/ccl/hemlock/src/syntax.lisp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ide-1.0/ccl/hemlock/src/syntax.lisp
r6571 r6581 455 455 chars ,start (strlen chars) ,vector ,mask)))) 456 456 ;;; 457 (defmacro cache-find-attribute (buffer start result vector mask) 458 `(let ((gap (- (buffer-right-open-pos buffer) 459 (buffer-left-open-pos buffer)))) 457 (defmacro cache-find-attribute (start result vector mask) 458 `(let ((gap (- *right-open-pos* *left-open-pos*))) 460 459 (declare (fixnum gap)) 461 460 (cond 462 ((>= ,start (buffer-left-open-pos buffer))461 ((>= ,start *left-open-pos*) 463 462 (setq ,result 464 463 (%sp-find-character-with-attribute 465 (buffer-open-chars buffer) (+ ,start gap) (buffer-line-cache-length buffer),vector ,mask))464 *open-chars* (+ ,start gap) *line-cache-length* ,vector ,mask)) 466 465 (when ,result (decf ,result gap))) 467 466 ((setq ,result (%sp-find-character-with-attribute 468 (buffer-open-chars buffer) ,start (buffer-left-open-pos buffer),vector ,mask)))467 *open-chars* ,start *left-open-pos* ,vector ,mask))) 469 468 (t 470 469 (setq ,result 471 470 (%sp-find-character-with-attribute 472 (buffer-open-chars buffer) (buffer-right-open-pos buffer) (buffer-line-cache-length buffer),vector ,mask))471 *open-chars* *right-open-pos* *line-cache-length* ,vector ,mask)) 473 472 (when ,result (decf ,result gap)))))) 474 473 ); eval-when (:compile-toplevel :execute) … … 476 475 (defun find-attribute (mark attribute &optional (test #'not-zerop)) 477 476 "Find the next character whose attribute value satisfies test." 478 (let *((charpos (mark-charpos mark))477 (let ((charpos (mark-charpos mark)) 479 478 (line (mark-line mark)) 480 (buffer (line-%buffer line))481 479 (mask 0) 482 480 vector end-wins) … … 486 484 (cond 487 485 ((cond 488 ((eq line (buffer-open-line buffer))489 (when (cache-find-attribute buffercharpos charpos vector mask)486 ((eq line *open-line*) 487 (when (cache-find-attribute charpos charpos vector mask) 490 488 (setf (mark-charpos mark) charpos) mark)) 491 489 (t … … 506 504 (return (line-end mark prev)) 507 505 (return nil))) 508 ((eq line (buffer-open-line buffer))509 (when (cache-find-attribute buffer0 charpos vector mask)506 ((eq line *open-line*) 507 (when (cache-find-attribute 0 charpos vector mask) 510 508 (return (move-to-position mark charpos line)))) 511 509 (t … … 525 523 chars 0 ,(or start '(strlen chars)) ,vector ,mask)))) 526 524 ;;; 527 (defmacro rev-cache-find-attribute ( bufferstart result vector mask)528 `(let ((gap (- (buffer-right-open-pos buffer) (buffer-left-open-pos buffer))))525 (defmacro rev-cache-find-attribute (start result vector mask) 526 `(let ((gap (- *right-open-pos* *left-open-pos*))) 529 527 (declare (fixnum gap)) 530 528 (cond 531 529 ,@(when start 532 `(((<= ,start (buffer-left-open-pos buffer))530 `(((<= ,start *left-open-pos*) 533 531 (setq ,result 534 532 (%sp-reverse-find-character-with-attribute 535 (buffer-open-chars buffer)0 ,start ,vector ,mask)))))533 *open-chars* 0 ,start ,vector ,mask))))) 536 534 ((setq ,result (%sp-reverse-find-character-with-attribute 537 (buffer-open-chars buffer) (buffer-right-open-pos buffer)538 ,(if start `(+ ,start gap) ' (buffer-line-cache-length buffer))535 *open-chars* *right-open-pos* 536 ,(if start `(+ ,start gap) '*line-cache-length*) 539 537 ,vector ,mask)) 540 538 (decf ,result gap)) … … 542 540 (setq ,result 543 541 (%sp-reverse-find-character-with-attribute 544 (buffer-open-chars buffer) 0 (buffer-left-open-pos buffer),vector ,mask))))))542 *open-chars* 0 *left-open-pos* ,vector ,mask)))))) 545 543 546 544 ); eval-when (:compile-toplevel :execute) … … 549 547 "Find the previous character whose attribute value satisfies test." 550 548 (let* ((charpos (mark-charpos mark)) 551 (line (mark-line mark)) 552 (buffer (line-%buffer line)) 553 vector mask end-wins) 549 (line (mark-line mark)) vector mask end-wins) 554 550 (declare (type (or (simple-array (mod 256)) null) vector) 555 551 (type (or fixnum null) charpos)) … … 557 553 (cond 558 554 ((cond 559 ((eq line (buffer-open-line buffer))560 (when (rev-cache-find-attribute buffercharpos charpos vector mask)555 ((eq line *open-line*) 556 (when (rev-cache-find-attribute charpos charpos vector mask) 561 557 (setf (mark-charpos mark) (1+ charpos)) mark)) 562 558 (t … … 576 572 (return (line-start mark next)) 577 573 (return nil))) 578 ((eq line (buffer-open-line buffer))579 (when (rev-cache-find-attribute buffernil charpos vector mask)574 ((eq line *open-line*) 575 (when (rev-cache-find-attribute nil charpos vector mask) 580 576 (return (move-to-position mark (1+ charpos) line)))) 581 577 (t
Note:
See TracChangeset
for help on using the changeset viewer.
