Mercurial > emacs
comparison lisp/net/newst-treeview.el @ 106083:df266edf1b2b
(newsticker--treeview-list-update-faces):
Preserve point in the list buffer. (Bug#4939)
Use point-at-eol.
(newsticker--treeview-list-update-highlight)
(newsticker--treeview-tree-update-highlight): Use point-at-bol/eol.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Tue, 17 Nov 2009 04:41:15 +0000 |
parents | df4934f25eef |
children | 2a70bc301f41 |
comparison
equal
deleted
inserted
replaced
106082:2df31b09d293 | 106083:df266edf1b2b |
---|---|
546 | 546 |
547 (defun newsticker--treeview-list-update-faces () | 547 (defun newsticker--treeview-list-update-faces () |
548 "Update faces in the treeview list buffer." | 548 "Update faces in the treeview list buffer." |
549 (let (pos-sel) | 549 (let (pos-sel) |
550 (with-current-buffer (newsticker--treeview-list-buffer) | 550 (with-current-buffer (newsticker--treeview-list-buffer) |
551 (let ((inhibit-read-only t)) | 551 (save-excursion |
552 (goto-char (point-min)) | 552 (let ((inhibit-read-only t)) |
553 (while (not (eobp)) | 553 (goto-char (point-min)) |
554 (let* ((pos (save-excursion (end-of-line) (point))) | 554 (while (not (eobp)) |
555 (item (get-text-property (point) :nt-item)) | 555 (let* ((pos (point-at-eol)) |
556 (age (newsticker--age item)) | 556 (item (get-text-property (point) :nt-item)) |
557 (selected (get-text-property (point) :nt-selected)) | 557 (age (newsticker--age item)) |
558 (face (cond ((eq age 'new) | 558 (selected (get-text-property (point) :nt-selected)) |
559 'newsticker-treeview-new-face) | 559 (face (cond ((eq age 'new) |
560 ((eq age 'old) | 560 'newsticker-treeview-new-face) |
561 'newsticker-treeview-old-face) | 561 ((eq age 'old) |
562 ((eq age 'immortal) | 562 'newsticker-treeview-old-face) |
563 'newsticker-treeview-immortal-face) | 563 ((eq age 'immortal) |
564 ((eq age 'obsolete) | 564 'newsticker-treeview-immortal-face) |
565 'newsticker-treeview-obsolete-face) | 565 ((eq age 'obsolete) |
566 (t | 566 'newsticker-treeview-obsolete-face) |
567 'bold)))) | 567 (t |
568 (put-text-property (point) pos 'face face) | 568 'bold)))) |
569 (if selected | 569 (put-text-property (point) pos 'face face) |
570 (move-overlay newsticker--selection-overlay (point) | 570 (if selected |
571 (1+ pos) ;include newline | 571 (move-overlay newsticker--selection-overlay (point) |
572 (current-buffer))) | 572 (1+ pos) ;include newline |
573 (if selected (setq pos-sel (point))) | 573 (current-buffer))) |
574 (forward-line 1) | 574 (if selected (setq pos-sel (point))) |
575 (beginning-of-line))))) ;; FIXME!? | 575 (forward-line 1) |
576 (beginning-of-line)))))) ;; FIXME!? | |
576 (when pos-sel | 577 (when pos-sel |
577 (if (window-live-p (newsticker--treeview-list-window)) | 578 (if (window-live-p (newsticker--treeview-list-window)) |
578 (set-window-point (newsticker--treeview-list-window) pos-sel))))) | 579 (set-window-point (newsticker--treeview-list-window) pos-sel))))) |
579 | 580 |
580 (defun newsticker--treeview-list-clear-highlight () | 581 (defun newsticker--treeview-list-clear-highlight () |
588 "Update the highlight in the treeview list buffer." | 589 "Update the highlight in the treeview list buffer." |
589 (newsticker--treeview-list-clear-highlight) | 590 (newsticker--treeview-list-clear-highlight) |
590 (let (pos num-lines) | 591 (let (pos num-lines) |
591 (with-current-buffer (newsticker--treeview-list-buffer) | 592 (with-current-buffer (newsticker--treeview-list-buffer) |
592 (let ((inhibit-read-only t)) | 593 (let ((inhibit-read-only t)) |
593 (put-text-property (save-excursion (beginning-of-line) (point)) | 594 (put-text-property (point-at-bol) (point-at-eol) :nt-selected t)) |
594 (save-excursion (end-of-line) (point)) | |
595 :nt-selected t)) | |
596 (newsticker--treeview-list-update-faces)))) | 595 (newsticker--treeview-list-update-faces)))) |
597 | 596 |
598 (defun newsticker--treeview-list-highlight-start () | 597 (defun newsticker--treeview-list-highlight-start () |
599 "Return position of selection in treeview list buffer." | 598 "Return position of selection in treeview list buffer." |
600 (with-current-buffer (newsticker--treeview-list-buffer) | 599 (with-current-buffer (newsticker--treeview-list-buffer) |
1037 :parent) :from))) | 1036 :parent) :from))) |
1038 (when (or (integerp pos) (and (markerp pos) (marker-position pos))) | 1037 (when (or (integerp pos) (and (markerp pos) (marker-position pos))) |
1039 (with-current-buffer (newsticker--treeview-tree-buffer) | 1038 (with-current-buffer (newsticker--treeview-tree-buffer) |
1040 (goto-char pos) | 1039 (goto-char pos) |
1041 (move-overlay newsticker--tree-selection-overlay | 1040 (move-overlay newsticker--tree-selection-overlay |
1042 (save-excursion (beginning-of-line) (point)) | 1041 (point-at-bol) (1+ (point-at-eol)) |
1043 (save-excursion (end-of-line) (1+ (point))) | |
1044 (current-buffer))) | 1042 (current-buffer))) |
1045 (if (window-live-p (newsticker--treeview-tree-window)) | 1043 (if (window-live-p (newsticker--treeview-tree-window)) |
1046 (set-window-point (newsticker--treeview-tree-window) pos))))) | 1044 (set-window-point (newsticker--treeview-tree-window) pos))))) |
1047 | 1045 |
1048 ;; ====================================================================== | 1046 ;; ====================================================================== |