twterm 1.1.0.beta1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/twterm/filter_query_window.rb +53 -5
- data/lib/twterm/tab/key_assignments_cheatsheet.rb +13 -12
- data/lib/twterm/tab/scrollable.rb +6 -6
- data/lib/twterm/tab/statuses/base.rb +2 -0
- data/lib/twterm/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6899ab95b0be06317c390cbb3a0a8638f73b1ead
|
4
|
+
data.tar.gz: 5414fbb91b92079b03f2f4f001ac49e9379357ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0b7bfcaa4aea696889614b2c7e804fb873c5abd25ab288093005dfcbd8e1037a05b2bb0137c26bda64fcefa60cb647c38ab6f9276e172a755345025ee9a8be7
|
7
|
+
data.tar.gz: b47ef4cb13b9c371d15287e328e7c5b1701dc10446ffd9e054af8aa8d90878d8e5b33506f7abc465d8458ba92128d16e0f24ce03b9fb100d420591e20203c75b
|
@@ -9,15 +9,63 @@ module Twterm
|
|
9
9
|
|
10
10
|
def input
|
11
11
|
clear
|
12
|
-
|
13
|
-
echo
|
14
12
|
stdscr.setpos(stdscr.maxy - 1, 0)
|
15
13
|
stdscr.addch '/'
|
16
14
|
|
17
|
-
|
18
|
-
|
15
|
+
Curses.timeout = 10
|
16
|
+
raw
|
17
|
+
|
18
|
+
chars = []
|
19
|
+
str = ''
|
20
|
+
|
21
|
+
loop do
|
22
|
+
char = getch
|
23
|
+
|
24
|
+
if char.nil?
|
25
|
+
case chars.first
|
26
|
+
when 3, 27 # cancel with <C-c> / Esc
|
27
|
+
str = ''
|
28
|
+
clear
|
29
|
+
break
|
30
|
+
when 4 # cancel with <C-d> when query is empty
|
31
|
+
if str.empty?
|
32
|
+
clear
|
33
|
+
break
|
34
|
+
end
|
35
|
+
when 10 # submit with <C-j>
|
36
|
+
break
|
37
|
+
when 127 # backspace
|
38
|
+
if str.empty?
|
39
|
+
clear
|
40
|
+
break
|
41
|
+
end
|
42
|
+
|
43
|
+
str.chop!
|
44
|
+
chars = []
|
45
|
+
clear
|
46
|
+
stdscr.setpos(stdscr.maxy - 1, 0)
|
47
|
+
stdscr.addstr("/#{str}")
|
48
|
+
when 0..31
|
49
|
+
# ignore control codes (\x00 - \x1f)
|
50
|
+
else
|
51
|
+
str << chars
|
52
|
+
.map { |x| x.is_a?(String) ? x.ord : x }
|
53
|
+
.pack('c*')
|
54
|
+
.force_encoding('utf-8')
|
55
|
+
chars = []
|
56
|
+
end
|
57
|
+
else
|
58
|
+
chars << char
|
59
|
+
end
|
60
|
+
|
61
|
+
stdscr.setpos(stdscr.maxy - 1, 1)
|
62
|
+
stdscr.addstr(str)
|
63
|
+
end
|
64
|
+
|
65
|
+
Curses.timeout = 0
|
66
|
+
cbreak
|
19
67
|
|
20
|
-
|
68
|
+
str
|
21
69
|
end
|
22
70
|
|
23
71
|
def clear
|
@@ -19,26 +19,27 @@ module Twterm
|
|
19
19
|
'[Q]' => 'Quit twterm'
|
20
20
|
},
|
21
21
|
'Tabs' => {
|
22
|
-
'[h] [C-b] [LEFT]' => '
|
23
|
-
'[l] [C-f] [RIGHT]' => '
|
24
|
-
'[N]' => '
|
22
|
+
'[h] [C-b] [LEFT]' => 'Previous tab',
|
23
|
+
'[l] [C-f] [RIGHT]' => 'Next tab',
|
24
|
+
'[N]' => 'New tab',
|
25
25
|
'[C-R]' => 'Reload',
|
26
26
|
'[w]' => 'Close tab',
|
27
|
-
'[q]' => 'Quit
|
28
|
-
'[/]' => 'Filter
|
27
|
+
'[q]' => 'Quit filter mode',
|
28
|
+
'[/]' => 'Filter mode'
|
29
29
|
},
|
30
30
|
'Tweets' => {
|
31
|
-
'[
|
31
|
+
'[c]' => 'Conversation',
|
32
|
+
'[D]' => 'Delete',
|
32
33
|
'[F]' => 'Add to favorite',
|
33
|
-
'[n]' => '
|
34
|
-
'[o]' => 'Open URLs
|
34
|
+
'[n]' => 'New tweet',
|
35
|
+
'[o]' => 'Open URLs',
|
35
36
|
'[r]' => 'Reply',
|
36
37
|
'[R]' => 'Retweet',
|
37
|
-
'[U]' => '
|
38
|
+
'[U]' => 'User'
|
38
39
|
},
|
39
40
|
'Others' => {
|
40
|
-
'[P]' => '
|
41
|
-
'[?]' => '
|
41
|
+
'[P]' => 'My profile',
|
42
|
+
'[?]' => 'Key assignments cheatsheet'
|
42
43
|
}
|
43
44
|
}
|
44
45
|
|
@@ -48,7 +49,7 @@ module Twterm
|
|
48
49
|
|
49
50
|
def initialize
|
50
51
|
super
|
51
|
-
scroller.
|
52
|
+
scroller.set_no_cursor_mode!
|
52
53
|
end
|
53
54
|
|
54
55
|
def respond_to_key(key)
|
@@ -43,14 +43,14 @@ module Twterm
|
|
43
43
|
index == offset + i
|
44
44
|
end
|
45
45
|
|
46
|
-
def
|
47
|
-
!!@
|
46
|
+
def no_cursor_mode?
|
47
|
+
!!@no_cursor_mode
|
48
48
|
end
|
49
49
|
|
50
50
|
def initialize
|
51
51
|
@index = 0
|
52
52
|
@offset = 0
|
53
|
-
@
|
53
|
+
@no_cursor_mode = false
|
54
54
|
end
|
55
55
|
|
56
56
|
def drawable_items
|
@@ -73,7 +73,7 @@ module Twterm
|
|
73
73
|
# return when there are no items or cursor is at the bottom
|
74
74
|
|
75
75
|
@index += 1
|
76
|
-
@offset += 1 if (
|
76
|
+
@offset += 1 if (no_cursor_mode? || cursor_on_the_downside?) && !last_item_shown?
|
77
77
|
|
78
78
|
hook :after_move
|
79
79
|
end
|
@@ -132,8 +132,8 @@ module Twterm
|
|
132
132
|
true
|
133
133
|
end
|
134
134
|
|
135
|
-
def
|
136
|
-
@
|
135
|
+
def set_no_cursor_mode!
|
136
|
+
@no_cursor_mode = true
|
137
137
|
end
|
138
138
|
|
139
139
|
private
|
@@ -69,6 +69,8 @@ module Twterm
|
|
69
69
|
status = highlighted_status
|
70
70
|
urls = status.urls.map(&:expanded_url) + status.media.map(&:expanded_url)
|
71
71
|
urls.each(&Launchy.method(:open))
|
72
|
+
rescue Launchy::CommandNotFoundError
|
73
|
+
Notifier.instance.show_error 'Cannot find web browser'
|
72
74
|
end
|
73
75
|
|
74
76
|
def prepend(status)
|
data/lib/twterm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twterm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Kameoka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -223,9 +223,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
223
223
|
version: 2.1.0
|
224
224
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
225
225
|
requirements:
|
226
|
-
- - "
|
226
|
+
- - ">="
|
227
227
|
- !ruby/object:Gem::Version
|
228
|
-
version:
|
228
|
+
version: '0'
|
229
229
|
requirements: []
|
230
230
|
rubyforge_project:
|
231
231
|
rubygems_version: 2.4.7
|