mini_readline 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -4
- data/lib/mini_readline/options.rb +3 -0
- data/lib/mini_readline/raw_term/other/map.rb +3 -0
- data/lib/mini_readline/raw_term/windows/map.rb +3 -0
- data/lib/mini_readline/raw_term/windows/win_32_api.rb +10 -16
- data/lib/mini_readline/raw_term/windows.rb +5 -5
- data/lib/mini_readline/read_line/edit/auto_complete/auto_manager.rb +33 -0
- data/lib/mini_readline/read_line/edit/auto_complete/file_folder_source.rb +22 -0
- data/lib/mini_readline/read_line/edit/auto_complete.rb +43 -0
- data/lib/mini_readline/read_line/{edit_window → edit/edit_window}/sync_cursor.rb +0 -0
- data/lib/mini_readline/read_line/{edit_window → edit/edit_window}/sync_window.rb +0 -0
- data/lib/mini_readline/read_line/{edit_window.rb → edit/edit_window.rb} +0 -0
- data/lib/mini_readline/read_line/edit.rb +3 -1
- data/lib/mini_readline/version.rb +1 -1
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e937dfc43b28cefc768efd3bdbce315d86dbb57
|
4
|
+
data.tar.gz: 3970f861094c4db5807291447aeb70a1e2144a4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fbccdab691c99d79feed201ccee633a04ac9c609b4d18318bc2425b544c7b8e578baa77b905b2deb6f597f22dde52f30b06a392d5d402e997194576893dde3b
|
7
|
+
data.tar.gz: 8a34bd1a0c44816dab5f6b7e709811be0a6cf19463cd8468c7eb6ff9dbd80c667d8975297982fa3132277860f924a144535f6a68fa020ff3b79ad06745cdd24d
|
data/README.md
CHANGED
@@ -52,9 +52,10 @@ Go to start | Home, Pad Home | Home, Ctrl-A
|
|
52
52
|
Go to end | End, Pad End | End, Ctrl-E
|
53
53
|
Previous History | Up Arrow, Pad Up | Up Arrow, Ctrl-R
|
54
54
|
Next History | Down Arrow, Pad Down | Down Arrow
|
55
|
-
Erase Left | Backspace
|
55
|
+
Erase Left | Backspace, Ctrl-H | Backspace, Ctrl-H
|
56
56
|
Erase Right | Delete, Ctrl-Backspace | Delete, Ctrl-Backspace
|
57
57
|
Erase All | Escape | Ctrl-L
|
58
|
+
Auto-complete | Tab, Ctrl-I | Tab, Ctrl-I
|
58
59
|
|
59
60
|
### Notes
|
60
61
|
* The label "Other" is an umbrella that bundles together the Linux, Mac,
|
@@ -231,10 +232,11 @@ system gem, use this:
|
|
231
232
|
|
232
233
|
## Testing
|
233
234
|
To date this code has been tested under:
|
234
|
-
* Windows 7 with
|
235
|
-
* Windows 7
|
235
|
+
* Windows 7 with ruby 1.9.3p484 (2013-11-22) [i386-mingw32]
|
236
|
+
* Windows 7 with ruby 2.1.6p336 (2015-04-13 revision 50298) [i386-mingw32]
|
237
|
+
* Windows 7+Cygwin with ruby 2.2.3p173 (2015-08-18 revision 51636) [i386-cygwin]
|
236
238
|
|
237
|
-
<br
|
239
|
+
<br>**More testing is clearly called for.**
|
238
240
|
|
239
241
|
## Contributing
|
240
242
|
|
@@ -9,6 +9,9 @@ module MiniReadline
|
|
9
9
|
:alt_prompt => "<< ", #The prompt when scrolled.
|
10
10
|
#Set to nil to use main prompt.
|
11
11
|
|
12
|
+
:auto_complete => true, #Is auto complete enabled?
|
13
|
+
:auto_source => nil, #Filled in by auto_complete.rb
|
14
|
+
|
12
15
|
:history => false, #Is the history buffer enabled?
|
13
16
|
:no_blanks => true, #No empty lines in history.
|
14
17
|
:no_dups => true, #No duplicate lines in history.
|
@@ -3,29 +3,22 @@
|
|
3
3
|
#* windows/win_32_api.rb - Support for selected low level Win32 API entry points.
|
4
4
|
module MiniReadline
|
5
5
|
|
6
|
-
require '
|
6
|
+
require 'dl'
|
7
7
|
|
8
|
-
#The classic \Win32API gem is deprecated, so we emulate it with
|
8
|
+
#The classic \Win32API gem is deprecated, so we emulate it with DL.
|
9
9
|
class Win32API
|
10
10
|
|
11
|
-
#Use standard calling conventions
|
12
|
-
STDCALL = 1
|
13
|
-
|
14
11
|
#A hash of DLL files used for one or more API entry points.
|
15
12
|
DLL = {}
|
16
13
|
|
17
|
-
#Type mappings
|
18
|
-
|
19
|
-
"S" => Fiddle::TYPE_VOIDP,
|
20
|
-
"I" => Fiddle::TYPE_LONG}
|
14
|
+
#Type mappings
|
15
|
+
TYPEMAP = {"0" => DL::TYPE_VOID, "S" => DL::TYPE_VOIDP, "I" => DL::TYPE_LONG}
|
21
16
|
|
22
17
|
#Set up an API entry point.
|
23
|
-
def initialize(dllname, func, import)
|
24
|
-
@proto = import.join.tr("VPpNnLlIi", "0SSI").
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
@func = Fiddle::Function.new(handle[func], TYPES.values_at(*@proto), STDCALL)
|
18
|
+
def initialize(dllname, func, import, export = "0", calltype = :stdcall)
|
19
|
+
@proto = [import].join.tr("VPpNnLlIi", "0SSI").sub(/^(.)0*$/, '\1')
|
20
|
+
handle = DLL[dllname] ||= DL.dlopen(dllname)
|
21
|
+
@func = DL::CFunc.new(handle[func], TYPEMAP[export.tr("VPpNnLlIi", "0SSI")], func, calltype)
|
29
22
|
end
|
30
23
|
|
31
24
|
#Call the Win 32 API entry point with appropriate arguments.
|
@@ -41,7 +34,8 @@ module MiniReadline
|
|
41
34
|
end
|
42
35
|
end
|
43
36
|
|
44
|
-
@func.call(
|
37
|
+
@func.call(args).to_i || 0
|
45
38
|
end
|
39
|
+
|
46
40
|
end
|
47
41
|
end
|
@@ -24,14 +24,14 @@ module MiniReadline
|
|
24
24
|
|
25
25
|
#Set up the Windows Raw Terminal.
|
26
26
|
def initialize
|
27
|
-
@_getch = Win32API.new("msvcrt", "_getch", [])
|
28
|
-
@_kbhit = Win32API.new("msvcrt", "_kbhit", [])
|
27
|
+
@_getch = Win32API.new("msvcrt", "_getch", [], 'I')
|
28
|
+
@_kbhit = Win32API.new("msvcrt", "_kbhit", [], 'I')
|
29
29
|
@_beep = Win32API.new("user32", "MessageBeep", ['L'])
|
30
30
|
@_set_cursor_posn = Win32API.new("kernel32", "SetConsoleCursorPosition",
|
31
|
-
['L','L'])
|
31
|
+
['L','L'], 'L')
|
32
32
|
@_get_screen_info = Win32API.new("kernel32", "GetConsoleScreenBufferInfo",
|
33
|
-
['L','P'])
|
34
|
-
@_get_handle = Win32API.new("kernel32", "GetStdHandle", ['L'])
|
33
|
+
['L','P'], 'L')
|
34
|
+
@_get_handle = Win32API.new("kernel32", "GetStdHandle", ['L'], 'L')
|
35
35
|
end
|
36
36
|
|
37
37
|
#Output a string
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
#* auto_manager.rb - The controller for auto-complete.
|
4
|
+
module MiniReadline
|
5
|
+
|
6
|
+
#* auto_manager.rb - The controller for auto-complete.
|
7
|
+
class AutoManager
|
8
|
+
|
9
|
+
#Create a new auto-complete manager.
|
10
|
+
def initialize(&block)
|
11
|
+
@_block = block
|
12
|
+
end
|
13
|
+
|
14
|
+
#Get the next pivot string
|
15
|
+
def next(pivot)
|
16
|
+
unless @cycler && @old_pivot == pivot
|
17
|
+
@cycler = source.rebuild(pivot)
|
18
|
+
end
|
19
|
+
|
20
|
+
if @cycler
|
21
|
+
@old_pivot = @cycler.next
|
22
|
+
else
|
23
|
+
@old_pivot = nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
#Get the data source
|
28
|
+
def source
|
29
|
+
@_source ||= @_block.call
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
#* file_folder_source.rb - The data source for auto-complete.
|
4
|
+
module MiniReadline
|
5
|
+
|
6
|
+
#* file_folder_source.rb - The data source for auto-complete.
|
7
|
+
class FileFolderSource
|
8
|
+
|
9
|
+
#Construct a new data list for auto-complete
|
10
|
+
def rebuild(pivot)
|
11
|
+
list = Dir.glob(pivot + '*')
|
12
|
+
|
13
|
+
unless list.empty?
|
14
|
+
list.cycle
|
15
|
+
else
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require_relative 'auto_complete/auto_manager'
|
4
|
+
require_relative 'auto_complete/file_folder_source'
|
5
|
+
|
6
|
+
#* read_line/window/edit/auto_complete.rb - Process :auto_complete
|
7
|
+
module MiniReadline
|
8
|
+
|
9
|
+
#Set up the default auto-complete data source.
|
10
|
+
BASE_OPTIONS[:auto_source] = FileFolderSource
|
11
|
+
|
12
|
+
#* read_line/window/edit/auto_complete.rb - Process :auto_complete
|
13
|
+
class Edit
|
14
|
+
|
15
|
+
#The auto-complete command.
|
16
|
+
def auto_complete(_keyboard_args)
|
17
|
+
root, pivot = get_root_pivot
|
18
|
+
|
19
|
+
if (new_pivot = auto_manager.next(pivot))
|
20
|
+
@edit_buffer = root + new_pivot
|
21
|
+
@edit_posn = length
|
22
|
+
else
|
23
|
+
@term.beep
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
#Get the key components of the auto-complete process.
|
28
|
+
def get_root_pivot
|
29
|
+
/\S+$/ =~ (str = auto_trim) ? [$`.to_s, $~.to_s] : [str, ""]
|
30
|
+
end
|
31
|
+
|
32
|
+
#Get the base part of the edit buffer.
|
33
|
+
def auto_trim
|
34
|
+
@edit_buffer[0...(@edit_posn)]
|
35
|
+
end
|
36
|
+
|
37
|
+
#Get the auto-complete manager
|
38
|
+
def auto_manager
|
39
|
+
@_auto_manager ||= AutoManager.new { @options[:auto_source].new }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
require_relative 'edit_window'
|
3
|
+
require_relative 'edit/edit_window'
|
4
4
|
|
5
5
|
require_relative 'edit/insert_text'
|
6
6
|
require_relative 'edit/enter'
|
@@ -21,6 +21,8 @@ require_relative 'edit/cancel'
|
|
21
21
|
require_relative 'edit/previous_history'
|
22
22
|
require_relative 'edit/next_history'
|
23
23
|
|
24
|
+
require_relative 'edit/auto_complete'
|
25
|
+
|
24
26
|
require_relative 'edit/unmapped'
|
25
27
|
|
26
28
|
#* read_line/edit.rb - The line editor.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_readline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Camilleri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -93,9 +93,15 @@ files:
|
|
93
93
|
- lib/mini_readline/raw_term/windows/win_32_api.rb
|
94
94
|
- lib/mini_readline/read_line.rb
|
95
95
|
- lib/mini_readline/read_line/edit.rb
|
96
|
+
- lib/mini_readline/read_line/edit/auto_complete.rb
|
97
|
+
- lib/mini_readline/read_line/edit/auto_complete/auto_manager.rb
|
98
|
+
- lib/mini_readline/read_line/edit/auto_complete/file_folder_source.rb
|
96
99
|
- lib/mini_readline/read_line/edit/cancel.rb
|
97
100
|
- lib/mini_readline/read_line/edit/delete_left.rb
|
98
101
|
- lib/mini_readline/read_line/edit/delete_right.rb
|
102
|
+
- lib/mini_readline/read_line/edit/edit_window.rb
|
103
|
+
- lib/mini_readline/read_line/edit/edit_window/sync_cursor.rb
|
104
|
+
- lib/mini_readline/read_line/edit/edit_window/sync_window.rb
|
99
105
|
- lib/mini_readline/read_line/edit/enter.rb
|
100
106
|
- lib/mini_readline/read_line/edit/go_end.rb
|
101
107
|
- lib/mini_readline/read_line/edit/go_home.rb
|
@@ -107,9 +113,6 @@ files:
|
|
107
113
|
- lib/mini_readline/read_line/edit/unmapped.rb
|
108
114
|
- lib/mini_readline/read_line/edit/word_left.rb
|
109
115
|
- lib/mini_readline/read_line/edit/word_right.rb
|
110
|
-
- lib/mini_readline/read_line/edit_window.rb
|
111
|
-
- lib/mini_readline/read_line/edit_window/sync_cursor.rb
|
112
|
-
- lib/mini_readline/read_line/edit_window/sync_window.rb
|
113
116
|
- lib/mini_readline/read_line/history.rb
|
114
117
|
- lib/mini_readline/read_line/no_history.rb
|
115
118
|
- lib/mini_readline/version.rb
|