Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
(defun wn-window-list ()
"Return a list of ordered windows on the current frame"
(window-list (selected-frame) 0 (minibuffer-window)))
(defun wn-select-nth (n)
"Select window number N in current frame"
(interactive "P")
(let (window)
(or (and (or (integerp n)
(setq n (read-number "Window number: ")))
(setq window (nth n (wn-window-list)))
(select-window window))
(error "No such window."))))
(defun wn-selected-window-number ()
"Return the number of the selected window"
(length (memq (selected-window) (reverse (wn-window-list)))))
;(defun wn-selected-window-modeline ()
; "Return the string for the current window modeline"
; (propertize (format " #%s" (wn-selected-window-number))
; 'face 'wn-modeline-face))
(defun wn-selected-window-modeline ()
(format " #%s" (wn-selected-window-number)))
(defvar wn-mode-map nil
"Keymap.")
(unless wn-mode-map
(setq wn-mode-map (make-sparse-keymap))
(define-key wn-mode-map (kbd "M-1")
(lambda nil (interactive)
(wn-select-nth 0)))
(define-key wn-mode-map (kbd "M-2")
(lambda nil (interactive)
(wn-select-nth 1)))
(define-key wn-mode-map (kbd "M-3")
(lambda nil (interactive)
(wn-select-nth 2)))
(define-key wn-mode-map (kbd "M-4")
(lambda nil (interactive)
(wn-select-nth 3)))
(define-key wn-mode-map (kbd "M-5")
(lambda nil (interactive)
(wn-select-nth 4)))
(define-key wn-mode-map (kbd "M-6")
(lambda nil (interactive)
(wn-select-nth 5)))
(define-key wn-mode-map (kbd "M-7")
(lambda nil (interactive)
(wn-select-nth 6)))
(define-key wn-mode-map (kbd "M-8")
(lambda nil (interactive)
(wn-select-nth 7)))
(define-key wn-mode-map (kbd "M-9")
(lambda nil (interactive)
(wn-select-nth 8)))
(define-key wn-mode-map (kbd "M-0")
(lambda nil (interactive)
(wn-select-nth 9))))
(define-minor-mode wn-mode
"A minor mode that enables selection of windows according to
numbers with the C-c number"
:group 'windows
:global t
:init-value nil
:lighter (:eval (wn-selected-window-modeline)))
;(defface wn-modeline-face
; '((t (:inherit mode-line)))
; "wn-mode modeline face")