aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUJ2014-12-06 20:56:56 +0100
committerUJ2014-12-06 20:56:56 +0100
commita1cf6ec16b6f4471fa3e508e808adf22733d5f12 (patch)
tree41b125c45142156cde024fd5a3305a62c519376d
parent952c6c8f00b481cf27aa4d24d86d7a17613cb984 (diff)
downloademacs-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/ChangeLog11
-rw-r--r--lisp/net/newst-treeview.el55
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 @@
12014-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
12014-12-05 Juri Linkov <juri@linkov.net> 122014-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 ()