forked from hayamiz/twittering-mode
-
Notifications
You must be signed in to change notification settings - Fork 3
/
offline.patch
119 lines (117 loc) · 4.69 KB
/
offline.patch
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Index: twittering-mode.el
===================================================================
--- twittering-mode.el (revision 138)
+++ twittering-mode.el (working copy)
@@ -296,8 +296,9 @@
(define-key km "H" 'beginning-of-buffer)
(define-key km "i" 'twittering-icon-mode)
(define-key km "s" 'twittering-scroll-mode)
- (define-key km "t" 'twittering-toggle-proxy)
+ (define-key km "t" 'twittering-toggle-offline)
(define-key km "\C-c\C-p" 'twittering-toggle-proxy)
+ (define-key km "q" 'twittering-mode-exit)
nil))
(defvar twittering-mode-syntax-table nil "")
@@ -363,8 +364,102 @@
(set-syntax-table twittering-mode-syntax-table)
(run-hooks 'twittering-mode-hook)
(font-lock-mode -1)
- (twittering-start))
+ (twittering-start)
+ (twittering-offline-init-icons)
+ (twittering-set-mode-line-identification))
+(defvar twittering-mode-line-identification nil)
+
+(defmacro twittering-display-image-p ()
+ '(and (display-images-p)
+ (image-type-available-p 'xpm)))
+
+(defvar twittering-online-image nil)
+(defvar twittering-offline-image nil)
+
+(defvar twittering-online-indicator "[ON] ")
+(defvar twittering-offline-indicator "[--] ")
+(defvar twittering-modeline-online twittering-online-indicator)
+(defvar twittering-modeline-offline twittering-offline-indicator)
+(put 'twittering-modeline-online 'risky-local-variable t)
+(put 'twittering-modeline-offline 'risky-local-variable t)
+
+(defvar twittering-icon-directory
+ (expand-file-name "icons/"
+ (file-name-directory
+ (locate-library "twittering-mode")))
+ "* アイコンファイルが置かれたディレクトリ。nil ならアイコンを使わない。")
+
+;; folder icons. filename relative to twittering-icon-directory
+(defvar twittering-online-icon "plugged.xpm"
+ "*Icon file for online state.")
+(defvar twittering-offline-icon "unplugged.xpm"
+ "*Icon file for offline state.")
+
+(defun twittering-offline-init-icons ()
+ (let ((props (when (display-mouse-p)
+ (list 'local-map (purecopy (make-mode-line-mouse-map
+ 'mouse-2 #'twittering-toggle-offline))
+ 'help-echo "mouse-2 toggles offline mode"))))
+ (if (twittering-display-image-p)
+ (progn
+ (unless twittering-online-image
+ (let ((load-path (cons twittering-icon-directory load-path)))
+ (setq twittering-online-image (find-image
+ `((:type xpm
+ :file ,twittering-online-icon
+ :ascent center)))
+ twittering-offline-image (find-image
+ `((:type xpm
+ :file ,twittering-offline-icon
+ :ascent center))))))
+ (setq twittering-modeline-online
+ (apply 'propertize twittering-online-indicator
+ `(display ,twittering-online-image ,@props))
+ twittering-modeline-offline
+ (apply 'propertize twittering-offline-indicator
+ `(display ,twittering-offline-image ,@props))))
+ (when props
+ (setq twittering-modeline-online
+ (apply 'propertize twittering-online-indicator props)
+ twittering-modeline-offline
+ (apply 'propertize twittering-offline-indicator props))))))
+
+(defun twittering-set-mode-line-identification ()
+ (let ((offline
+ '(twittering-timer twittering-modeline-online twittering-modeline-offline)))
+ (unless twittering-mode-line-identification
+ (setq twittering-mode-line-identification
+ (default-value 'mode-line-buffer-identification)))
+ (setq mode-line-buffer-identification
+ (list offline
+ 'twittering-mode-line-identification)))
+ (force-mode-line-update t))
+
+(defun twittering-toggle-offline ()
+ "twittering-mode の接続をトグルする。"
+ (interactive)
+ (cond
+ (twittering-timer
+ (twittering-stop)
+ (message "Now offline"))
+ (t
+ (twittering-start)
+ (message "Now online")))
+ (twittering-set-mode-line-identification))
+
+(defun twittering-mode-exit ()
+ "twittering-mode を終了する。"
+ (interactive)
+ (when (y-or-n-p "Really exit twittering-mode? ")
+ (if twittering-timer
+ (twittering-stop))
+ (dolist (buf (list twittering-http-buffer
+ twittering-wget-buffer
+ twittering-buffer))
+ (if (get-buffer buf)
+ (kill-buffer buf)))))
+
;;;
;;; Basic HTTP functions
;;;