diff options
| author | UJ | 2014-12-06 20:56:56 +0100 |
|---|---|---|
| committer | UJ | 2014-12-06 20:56:56 +0100 |
| commit | a1cf6ec16b6f4471fa3e508e808adf22733d5f12 (patch) | |
| tree | 41b125c45142156cde024fd5a3305a62c519376d | |
| parent | 952c6c8f00b481cf27aa4d24d86d7a17613cb984 (diff) | |
| download | emacs-a1cf6ec16b6f4471fa3e508e808adf22733d5f12.tar.gz emacs-a1cf6ec16b6f4471fa3e508e808adf22733d5f12.zip | |
newsticker: Context menu in treeview's tree.
* net/newst-treeview.el (newsticker--treeview-list-add-item)
(newsticker--treeview-propertize-tag): Bind tree menu to mouse-3.
(newsticker--treeview-create-groups-menu)
(newsticker--treeview-create-tree-menu): Removed.
(newsticker--treeview-tree-open-menu): New.
(newsticker-treeview-tree-click): Pass event to
`newsticker-treeview-tree-do-click'.
(newsticker-treeview-tree-do-click): Open treemenu on mouse-3.
| -rw-r--r-- | lisp/ChangeLog | 11 | ||||
| -rw-r--r-- | lisp/net/newst-treeview.el | 55 |
2 files changed, 34 insertions, 32 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b3cb2fa3168..f695e1c3180 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,14 @@ | |||
| 1 | 2014-12-06 Ulf Jasper <ulf.jasper@web.de> | ||
| 2 | |||
| 3 | * net/newst-treeview.el (newsticker--treeview-list-add-item) | ||
| 4 | (newsticker--treeview-propertize-tag): Bind tree menu to mouse-3. | ||
| 5 | (newsticker--treeview-create-groups-menu) | ||
| 6 | (newsticker--treeview-create-tree-menu): Removed. | ||
| 7 | (newsticker--treeview-tree-open-menu): New. | ||
| 8 | (newsticker-treeview-tree-click): Pass event to | ||
| 9 | `newsticker-treeview-tree-do-click'. | ||
| 10 | (newsticker-treeview-tree-do-click): Open treemenu on mouse-3. | ||
| 11 | |||
| 1 | 2014-12-05 Juri Linkov <juri@linkov.net> | 12 | 2014-12-05 Juri Linkov <juri@linkov.net> |
| 2 | 13 | ||
| 3 | * comint.el (comint-history-isearch-search) | 14 | * comint.el (comint-history-isearch-search) |
diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el index 0b159234dfa..2470d1ba613 100644 --- a/lisp/net/newst-treeview.el +++ b/lisp/net/newst-treeview.el | |||
| @@ -328,7 +328,8 @@ If string SHOW-FEED is non-nil it is shown in the item string." | |||
| 328 | (while (search-forward "\n" nil t) | 328 | (while (search-forward "\n" nil t) |
| 329 | (replace-match " ")) | 329 | (replace-match " ")) |
| 330 | (let ((map (make-sparse-keymap))) | 330 | (let ((map (make-sparse-keymap))) |
| 331 | (define-key map [mouse-1] 'newsticker-treeview-tree-click) | 331 | (dolist (key'([mouse-1] [mouse-3])) |
| 332 | (define-key map key 'newsticker-treeview-tree-click)) | ||
| 332 | (define-key map "\n" 'newsticker-treeview-show-item) | 333 | (define-key map "\n" 'newsticker-treeview-show-item) |
| 333 | (define-key map "\C-m" 'newsticker-treeview-show-item) | 334 | (define-key map "\C-m" 'newsticker-treeview-show-item) |
| 334 | (add-text-properties pos1 (point-max) | 335 | (add-text-properties pos1 (point-max) |
| @@ -945,7 +946,8 @@ arguments NT-ID, FEED, and VFEED are added as properties." | |||
| 945 | (map (make-sparse-keymap))) | 946 | (map (make-sparse-keymap))) |
| 946 | (if (and num-new (> num-new 0)) | 947 | (if (and num-new (> num-new 0)) |
| 947 | (setq face 'newsticker-treeview-new-face)) | 948 | (setq face 'newsticker-treeview-new-face)) |
| 948 | (define-key map [mouse-1] 'newsticker-treeview-tree-click) | 949 | (dolist (key '([mouse-1] [mouse-3])) |
| 950 | (define-key map key 'newsticker-treeview-tree-click)) | ||
| 949 | (define-key map "\n" 'newsticker-treeview-tree-do-click) | 951 | (define-key map "\n" 'newsticker-treeview-tree-do-click) |
| 950 | (define-key map "\C-m" 'newsticker-treeview-tree-do-click) | 952 | (define-key map "\C-m" 'newsticker-treeview-tree-do-click) |
| 951 | (propertize tag 'face face 'keymap map | 953 | (propertize tag 'face face 'keymap map |
| @@ -1960,37 +1962,22 @@ Return t if groups have changed, nil otherwise." | |||
| 1960 | ;; ====================================================================== | 1962 | ;; ====================================================================== |
| 1961 | ;;; Modes | 1963 | ;;; Modes |
| 1962 | ;; ====================================================================== | 1964 | ;; ====================================================================== |
| 1963 | (defun newsticker--treeview-create-groups-menu (group-list | 1965 | (defun newsticker--treeview-tree-open-menu (event) |
| 1964 | excluded-group) | 1966 | "Open tree menu at position of EVENT." |
| 1965 | "Create menu for GROUP-LIST omitting EXCLUDED-GROUP." | 1967 | (let* ((feed-name newsticker--treeview-current-feed) |
| 1966 | (let ((menu (make-sparse-keymap (if (stringp (car group-list)) | 1968 | (menu (make-sparse-keymap feed-name))) |
| 1967 | (car group-list) | ||
| 1968 | "Move to group...")))) | ||
| 1969 | (mapc (lambda (g) | ||
| 1970 | (when (listp g) | ||
| 1971 | (let ((title (if (stringp (car g)) | ||
| 1972 | (car g) | ||
| 1973 | "Move to group..."))) | ||
| 1974 | (unless (eq g excluded-group) | ||
| 1975 | (define-key menu (vector (intern title)) | ||
| 1976 | (list 'menu-item title | ||
| 1977 | (newsticker--treeview-create-groups-menu | ||
| 1978 | (cdr g) excluded-group))))))) | ||
| 1979 | (reverse group-list)) | ||
| 1980 | menu)) | ||
| 1981 | |||
| 1982 | (defun newsticker--treeview-create-tree-menu (feed-name) | ||
| 1983 | "Create tree menu for FEED-NAME." | ||
| 1984 | (let ((menu (make-sparse-keymap feed-name))) | ||
| 1985 | (define-key menu [newsticker-treeview-mark-list-items-old] | 1969 | (define-key menu [newsticker-treeview-mark-list-items-old] |
| 1986 | (list 'menu-item "Mark all items old" | 1970 | (list 'menu-item "Mark all items old" |
| 1987 | 'newsticker-treeview-mark-list-items-old)) | 1971 | 'newsticker-treeview-mark-list-items-old)) |
| 1988 | (define-key menu [move] | 1972 | (define-key menu [newsticker-treeview-get-news] |
| 1989 | (list 'menu-item "Move to group..." | 1973 | (list 'menu-item (concat "Get news for " feed-name) |
| 1990 | (newsticker--treeview-create-groups-menu | 1974 | 'newsticker-treeview-get-news)) |
| 1991 | newsticker-groups | 1975 | (define-key menu [newsticker-get-all-news] |
| 1992 | (newsticker--group-get-group feed-name)))) | 1976 | (list 'menu-item "Get news for all feeds" |
| 1993 | menu)) | 1977 | 'newsticker-get-all-news)) |
| 1978 | (let ((choice (x-popup-menu event menu))) | ||
| 1979 | (when choice | ||
| 1980 | (funcall (car choice)))))) | ||
| 1994 | 1981 | ||
| 1995 | (defvar newsticker-treeview-list-menu | 1982 | (defvar newsticker-treeview-list-menu |
| 1996 | (let ((menu (make-sparse-keymap "Newsticker List"))) | 1983 | (let ((menu (make-sparse-keymap "Newsticker List"))) |
| @@ -2099,7 +2086,7 @@ Return t if groups have changed, nil otherwise." | |||
| 2099 | (newsticker--treeview-restore-layout) | 2086 | (newsticker--treeview-restore-layout) |
| 2100 | (save-excursion | 2087 | (save-excursion |
| 2101 | (switch-to-buffer (window-buffer (posn-window (event-end event)))) | 2088 | (switch-to-buffer (window-buffer (posn-window (event-end event)))) |
| 2102 | (newsticker-treeview-tree-do-click (posn-point (event-end event))))) | 2089 | (newsticker-treeview-tree-do-click (posn-point (event-end event)) event))) |
| 2103 | 2090 | ||
| 2104 | (defun newsticker-treeview-tree-do-click (&optional pos event) | 2091 | (defun newsticker-treeview-tree-do-click (&optional pos event) |
| 2105 | "Actually handle click event. | 2092 | "Actually handle click event. |
| @@ -2119,7 +2106,11 @@ POS gives the position where EVENT occurred." | |||
| 2119 | (setq w (newsticker--treeview-get-node-by-id nt-id)) | 2106 | (setq w (newsticker--treeview-get-node-by-id nt-id)) |
| 2120 | (widget-put w :nt-selected t) | 2107 | (widget-put w :nt-selected t) |
| 2121 | (widget-apply w :action event) | 2108 | (widget-apply w :action event) |
| 2122 | (newsticker--treeview-set-current-node w)))))) | 2109 | (newsticker--treeview-set-current-node w) |
| 2110 | (and event | ||
| 2111 | (eq 'mouse-3 (car event)) | ||
| 2112 | (sit-for 0) | ||
| 2113 | (newsticker--treeview-tree-open-menu event))))))) | ||
| 2123 | (newsticker--treeview-tree-update-highlight)) | 2114 | (newsticker--treeview-tree-update-highlight)) |
| 2124 | 2115 | ||
| 2125 | (defun newsticker--treeview-restore-layout () | 2116 | (defun newsticker--treeview-restore-layout () |