ver 2009.11.29 → 2009.12.14
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +6 -0
- data/CHANGELOG +353 -1
- data/LICENSE +18 -0
- data/MANIFEST +11 -1
- data/Rakefile +2 -1
- data/bin/ver +3 -12
- data/config/detect.rb +1 -1
- data/config/keymap/diakonos.rb +181 -0
- data/config/keymap/emacs.rb +24 -24
- data/config/keymap/vim.rb +162 -127
- data/config/rc.rb +29 -14
- data/config/syntax/Nemerle.json +3 -3
- data/lib/ver.rb +88 -134
- data/lib/ver/entry.rb +5 -0
- data/lib/ver/exception_view.rb +97 -0
- data/lib/ver/hover_completion.rb +14 -7
- data/lib/ver/keymap.rb +30 -1
- data/lib/ver/layout.rb +20 -14
- data/lib/ver/methods.rb +6 -15
- data/lib/ver/methods/bookmark.rb +189 -0
- data/lib/ver/methods/completion.rb +2 -2
- data/lib/ver/methods/control.rb +109 -26
- data/lib/ver/methods/ctags.rb +28 -4
- data/lib/ver/methods/delete.rb +85 -4
- data/lib/ver/methods/insert.rb +73 -52
- data/lib/ver/methods/move.rb +122 -35
- data/lib/ver/methods/open.rb +4 -43
- data/lib/ver/methods/search.rb +46 -17
- data/lib/ver/methods/select.rb +121 -24
- data/lib/ver/methods/undo.rb +23 -0
- data/lib/ver/methods/views.rb +5 -0
- data/lib/ver/mode.rb +18 -17
- data/lib/ver/status.rb +2 -2
- data/lib/ver/status/context.rb +166 -0
- data/lib/ver/text.rb +43 -81
- data/lib/ver/text/index.rb +24 -7
- data/lib/ver/undo.rb +289 -0
- data/lib/ver/vendor/sized_array.rb +70 -0
- data/lib/ver/vendor/textpow.rb +6 -1
- data/lib/ver/version.rb +3 -0
- data/lib/ver/view.rb +11 -8
- data/lib/ver/view/list/grep.rb +15 -4
- data/lib/ver/view/term.rb +9 -3
- data/spec/helper.rb +94 -0
- data/ver.gemspec +9 -6
- metadata +25 -5
- data/spec/keymap.rb +0 -224
data/lib/ver/view/term.rb
CHANGED
@@ -38,6 +38,8 @@ class VER::View::Terminal
|
|
38
38
|
|
39
39
|
def destroy
|
40
40
|
@text.destroy
|
41
|
+
rescue Errno::EIO, PTY::ChildExited
|
42
|
+
ensure
|
41
43
|
@parent.focus
|
42
44
|
end
|
43
45
|
|
@@ -55,9 +57,13 @@ class VER::View::Terminal
|
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
58
|
-
|
59
|
-
|
60
|
-
|
60
|
+
begin
|
61
|
+
loop do
|
62
|
+
c = r_pty.sysread(1 << 15)
|
63
|
+
on_chunk(c) if c
|
64
|
+
end
|
65
|
+
rescue Errno::EIO, PTY::ChildExited
|
66
|
+
destroy
|
61
67
|
end
|
62
68
|
end
|
63
69
|
end
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'bacon'
|
2
|
+
Bacon.summary_at_exit
|
3
|
+
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
# annoying fixes
|
7
|
+
class Pathname
|
8
|
+
alias / join
|
9
|
+
|
10
|
+
def cp(dest)
|
11
|
+
FileUtils.copy_file(expand_path.to_s, dest.to_s, preserve = true)
|
12
|
+
end
|
13
|
+
|
14
|
+
def =~(regexp)
|
15
|
+
to_s =~ regexp
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'lib/ver'
|
20
|
+
|
21
|
+
VER.run fork: false do
|
22
|
+
Tk::After.idle do
|
23
|
+
describe 'startup' do
|
24
|
+
text = VER.layout.views.first.text
|
25
|
+
|
26
|
+
should 'start with welcome buffer' do
|
27
|
+
text.filename.to_s.should.end_with '.config/ver/welcome'
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'be at start of buffer' do
|
31
|
+
text.index(:insert).to_s.should == "1.0"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
Tk::After.idle do
|
37
|
+
describe VER::Methods::Move do
|
38
|
+
text = VER.layout.views.first.text
|
39
|
+
|
40
|
+
moving = lambda{|from, to, *args|
|
41
|
+
from, to = text.index(from), text.index(to)
|
42
|
+
$DEBUG = true
|
43
|
+
text.mark_set(:insert, from)
|
44
|
+
text.send(*args)
|
45
|
+
text.index(:insert).should == to
|
46
|
+
$DEBUG = false
|
47
|
+
}
|
48
|
+
|
49
|
+
should 'go a char forward' do
|
50
|
+
moving['1.0', '1.1', :forward_char]
|
51
|
+
moving['1.1', '1.2', :forward_char]
|
52
|
+
end
|
53
|
+
|
54
|
+
should 'go multiple chars forward' do
|
55
|
+
moving['1.0', '1.10', :forward_char, 10]
|
56
|
+
end
|
57
|
+
|
58
|
+
should 'go a char backward' do
|
59
|
+
moving['1.2', '1.1', :backward_char]
|
60
|
+
moving['1.1', '1.0', :backward_char]
|
61
|
+
end
|
62
|
+
|
63
|
+
should 'go multiple chars backward' do
|
64
|
+
moving['1.11', '1.1', :backward_char, 10]
|
65
|
+
end
|
66
|
+
|
67
|
+
should 'go to the beginning of a lines' do
|
68
|
+
moving['2.20', '2.0', :beginning_of_line]
|
69
|
+
end
|
70
|
+
|
71
|
+
should 'go to the end of a line' do
|
72
|
+
moving['2.0', '2.0 lineend', :end_of_line]
|
73
|
+
end
|
74
|
+
|
75
|
+
should 'go to a line number' do
|
76
|
+
moving['2.0', '10.0', :go_line, 10]
|
77
|
+
end
|
78
|
+
|
79
|
+
should 'go to the end of a file' do
|
80
|
+
moving['2.0', 'end - 1 chars', :end_of_file]
|
81
|
+
end
|
82
|
+
|
83
|
+
should 'go a page down' do
|
84
|
+
moving['2.0', '2.1', :page_down]
|
85
|
+
end
|
86
|
+
|
87
|
+
should 'go a page up' do
|
88
|
+
moving['2.0', '1.51', :page_up]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
EM.stop
|
93
|
+
end
|
94
|
+
end
|
data/ver.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{ver}
|
5
|
-
s.version = "2009.
|
5
|
+
s.version = "2009.12.14"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Michael 'manveru' Fellinger"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-12-14}
|
10
10
|
s.default_executable = %q{ver}
|
11
11
|
s.description = %q{An advanced text editor using tk and bringing world peace.}
|
12
12
|
s.email = %q{m.fellinger@gmail.com}
|
13
13
|
s.executables = ["ver"]
|
14
|
-
s.files = ["CHANGELOG", "MANIFEST", "README.textile", "Rakefile", "TODO", "bin/ver", "config/detect.rb", "config/keymap/emacs.rb", "config/keymap/vim.rb", "config/preferences/ANTLR.json", "config/preferences/ASP vb.NET.json", "config/preferences/ASP.json", "config/preferences/ActionScript.json", "config/preferences/Active4D.json", "config/preferences/Ada.json", "config/preferences/Ant.json", "config/preferences/Apache.json", "config/preferences/AppleScript.json", "config/preferences/Bison.json", "config/preferences/Blogging.json", "config/preferences/C.json", "config/preferences/CMake.json", "config/preferences/CSS.json", "config/preferences/CTags.json", "config/preferences/CVS.json", "config/preferences/ColdFusion.json", "config/preferences/D.json", "config/preferences/Darcs.json", "config/preferences/Diff.json", "config/preferences/DokuWiki.json", "config/preferences/Doxygen.json", "config/preferences/Dylan.json", "config/preferences/Eiffel.json", "config/preferences/Erlang.json", "config/preferences/Experimental.json", "config/preferences/F-Script.json", "config/preferences/FXScript.json", "config/preferences/FileMerge.json", "config/preferences/Fortran.json", "config/preferences/GTD2.json", "config/preferences/GTDAlt.json", "config/preferences/GetBundle.json", "config/preferences/Gettext.json", "config/preferences/Graphviz.json", "config/preferences/Greasemonkey.json", "config/preferences/Gri.json", "config/preferences/HTML.json", "config/preferences/Haskell.json", "config/preferences/Hotkey.json", "config/preferences/ImageBrowser.json", "config/preferences/Inform.json", "config/preferences/Ini.json", "config/preferences/Installer.json", "config/preferences/Io.json", "config/preferences/JSON.json", "config/preferences/Java.json", "config/preferences/JavaDoc.json", "config/preferences/JavaScript.json", "config/preferences/LaTeX.json", "config/preferences/Lex/Flex.json", "config/preferences/Lighttpd.json", "config/preferences/LilyPond.json", "config/preferences/Lisp.json", "config/preferences/Logo.json", "config/preferences/Logtalk.json", "config/preferences/Lua.json", "config/preferences/MEL.json", "config/preferences/MIPS Assembler.json", "config/preferences/MacPorts.json", "config/preferences/Mail.json", "config/preferences/Make.json", "config/preferences/Markdown.json", "config/preferences/Math.json", "config/preferences/Matlab.json", "config/preferences/Maven.json", "config/preferences/Mediawiki.json", "config/preferences/Mercurial.json", "config/preferences/Modula.json", "config/preferences/MoinMoin.json", "config/preferences/Navigation.json", "config/preferences/Nemerle.json", "config/preferences/OCaml Code Completion.json", "config/preferences/OCaml.json", "config/preferences/ODCompletion.json", "config/preferences/Objective-C.json", "config/preferences/OpenGL.json", "config/preferences/Outlines.json", "config/preferences/Pascal.json", "config/preferences/Perforce.json", "config/preferences/Perl.json", "config/preferences/PmWiki.json", "config/preferences/Postscript.json", "config/preferences/Processing.json", "config/preferences/Prolog.json", "config/preferences/Propel.json", "config/preferences/Python.json", "config/preferences/Quake.json", "config/preferences/R.json", "config/preferences/Ragel.json", "config/preferences/Regular Expressions.json", "config/preferences/Remind.json", "config/preferences/Rez.json", "config/preferences/Ruby.json", "config/preferences/S5 Slide Show.json", "config/preferences/SCons.json", "config/preferences/SQL.json", "config/preferences/SSH Config.json", "config/preferences/SVK.json", "config/preferences/SWIG.json", "config/preferences/SWeave.json", "config/preferences/Scheme.json", "config/preferences/Scilab.json", "config/preferences/Setext.json", "config/preferences/Shell Script.json", "config/preferences/Slate.json", "config/preferences/Source.json", "config/preferences/Subversion.json", "config/preferences/TODO.json", "config/preferences/Tabular.json", "config/preferences/Tcl.json", "config/preferences/TerminalMate.json", "config/preferences/Text.json", "config/preferences/TextMate.json", "config/preferences/Textile.json", "config/preferences/Thrift.json", "config/preferences/Transmit.json", "config/preferences/Twiki.json", "config/preferences/Txt2tags.json", "config/preferences/Vectorscript.json", "config/preferences/XML.json", "config/preferences/Xcode.json", "config/preferences/YAML.json", "config/preferences/iCalendar.json", "config/preferences/iTerm.json", "config/preferences/reStructuredText.json", "config/rc.rb", "config/scratch", "config/syntax/ANTLR.json", "config/syntax/ASP vb.NET.json", "config/syntax/ASP.json", "config/syntax/ActionScript.json", "config/syntax/Active4D Config.json", "config/syntax/Active4D Library.json", "config/syntax/Active4D.json", "config/syntax/Ada.json", "config/syntax/Ant.json", "config/syntax/Apache.json", "config/syntax/AppleScript.json", "config/syntax/BibTeX.json", "config/syntax/Bison.json", "config/syntax/Blog - HTML.json", "config/syntax/Blog - Markdown.json", "config/syntax/Blog - Text.json", "config/syntax/Blog - Textile.json", "config/syntax/C++.json", "config/syntax/C.json", "config/syntax/CMake Listfile.json", "config/syntax/CSS.json", "config/syntax/CSV.json", "config/syntax/ColdFusion.json", "config/syntax/D.json", "config/syntax/Diff.json", "config/syntax/DokuWiki.json", "config/syntax/Doxygen.json", "config/syntax/Dylan.json", "config/syntax/Eiffel.json", "config/syntax/Erlang.json", "config/syntax/F-Script.json", "config/syntax/FXScript.json", "config/syntax/Fortran - Modern.json", "config/syntax/Fortran - Punchcard.json", "config/syntax/GTD.json", "config/syntax/GTDalt.json", "config/syntax/Gettext.json", "config/syntax/Go.json", "config/syntax/Graphviz (DOT).json", "config/syntax/Greasemonkey.json", "config/syntax/Gri.json", "config/syntax/HTML (ASP).json", "config/syntax/HTML (ASP.net).json", "config/syntax/HTML (Active4D).json", "config/syntax/HTML (Erlang).json", "config/syntax/HTML (Tcl).json", "config/syntax/HTML.json", "config/syntax/Haskell.json", "config/syntax/Inform.json", "config/syntax/Ini.json", "config/syntax/Installer Distribution Script.json", "config/syntax/Io.json", "config/syntax/JSON.json", "config/syntax/Java Properties.json", "config/syntax/Java Server Page (JSP).json", "config/syntax/Java.json", "config/syntax/JavaDoc.json", "config/syntax/JavaScript.json", "config/syntax/LaTeX Beamer.json", "config/syntax/LaTeX Log.json", "config/syntax/LaTeX Memoir.json", "config/syntax/LaTeX.json", "config/syntax/Lex-Flex.json", "config/syntax/Lighttpd.json", "config/syntax/LilyPond.json", "config/syntax/Lisp.json", "config/syntax/Literate Haskell.json", "config/syntax/Logo.json", "config/syntax/Logtalk.json", "config/syntax/Lua.json", "config/syntax/MATLAB.json", "config/syntax/MEL.json", "config/syntax/MIPS Assembler.json", "config/syntax/MacPorts Portfile.json", "config/syntax/Mail.json", "config/syntax/Makefile.json", "config/syntax/Markdown.json", "config/syntax/Maven POM.json", "config/syntax/Mediawiki.json", "config/syntax/Modula-3.json", "config/syntax/MoinMoin.json", "config/syntax/MultiMarkdown.json", "config/syntax/Nemerle.json", "config/syntax/OCaml.json", "config/syntax/OCamllex.json", "config/syntax/OCamlyacc.json", "config/syntax/Objective-C++.json", "config/syntax/Objective-C.json", "config/syntax/Octave.json", "config/syntax/OpenGL.json", "config/syntax/PHP.json", "config/syntax/Pascal.json", "config/syntax/Perl.json", "config/syntax/Plain Text.json", "config/syntax/PmWiki.json", "config/syntax/Postscript.json", "config/syntax/Processing.json", "config/syntax/Prolog.json", "config/syntax/Python.json", "config/syntax/Quake Style .cfg.json", "config/syntax/R.json", "config/syntax/Ragel.json", "config/syntax/Rd (R Documentation).json", "config/syntax/Regular Expressions (Oniguruma).json", "config/syntax/Regular Expressions (Python).json", "config/syntax/Release Notes.json", "config/syntax/Remind.json", "config/syntax/Rez.json", "config/syntax/Ruby Sass.json", "config/syntax/Ruby.json", "config/syntax/S5 Slide Show.json", "config/syntax/SQL.json", "config/syntax/SSH Config.json", "config/syntax/SWIG.json", "config/syntax/SWeave.json", "config/syntax/Scheme.json", "config/syntax/Scilab.json", "config/syntax/Setext.json", "config/syntax/Shell Script (Bash).json", "config/syntax/Slate.json", "config/syntax/Strings File.json", "config/syntax/TSV.json", "config/syntax/Tcl.json", "config/syntax/TeX Math.json", "config/syntax/TeX.json", "config/syntax/Textile.json", "config/syntax/Thrift.json", "config/syntax/Twiki.json", "config/syntax/Txt2tags.json", "config/syntax/Vectorscript.json", "config/syntax/XML strict.json", "config/syntax/XML.json", "config/syntax/XSL.json", "config/syntax/YAML.json", "config/syntax/camlp4.json", "config/syntax/iCalendar.json", "config/syntax/mod_perl.json", "config/syntax/reStructuredText.json", "config/syntax/svn-commit.tmp.json", "config/theme/Active4D.json", "config/theme/All Hallow's Eve.json", "config/theme/Amy.json", "config/theme/BBEdit.json", "config/theme/Bespin.json", "config/theme/Blackboard.json", "config/theme/BoysAndGirls01.json", "config/theme/Brilliance Black.json", "config/theme/Brilliance Dull.json", "config/theme/Classic Modified.json", "config/theme/Cobalt.json", "config/theme/Cool Glow.json", "config/theme/Dawn.json", "config/theme/Eiffel.json", "config/theme/Espresso Libre.json", "config/theme/Fluidvision.json", "config/theme/IDLE.json", "config/theme/LAZY.json", "config/theme/Mac Classic.json", "config/theme/MagicWB (Amiga).json", "config/theme/Merbivore Soft.json", "config/theme/Merbivore.json", "config/theme/Monokai.json", "config/theme/Notepad2.json", "config/theme/Pastels on Dark.json", "config/theme/RubyBlue.json", "config/theme/Sin City 2.json", "config/theme/Slate.json", "config/theme/Slush & Poppies.json", "config/theme/SpaceCadet.json", "config/theme/Sunburst.json", "config/theme/Twilight BG FG.json", "config/theme/Twilight.json", "config/theme/Whys Poignant.json", "config/theme/Zenburnesque.json", "config/theme/barf.json", "config/theme/fake.json", "config/theme/happydeluxe.json", "config/theme/iLife 05.json", "config/theme/iPlastic.json", "config/theme/mintBlue Dark.json", "config/theme/mintBlue.json", "config/theme/monoindustrial.json", "config/theme/starlight.json", "config/tutorial", "config/welcome", "help/index.verh", "lib/ver.rb", "lib/ver/entry.rb", "lib/ver/font.rb", "lib/ver/help.rb", "lib/ver/help/describe_key.rb", "lib/ver/help/help_for_help.rb", "lib/ver/hover_completion.rb", "lib/ver/keymap.rb", "lib/ver/layout.rb", "lib/ver/methods.rb", "lib/ver/methods/clipboard.rb", "lib/ver/methods/completion.rb", "lib/ver/methods/control.rb", "lib/ver/methods/ctags.rb", "lib/ver/methods/delete.rb", "lib/ver/methods/help.rb", "lib/ver/methods/insert.rb", "lib/ver/methods/move.rb", "lib/ver/methods/open.rb", "lib/ver/methods/preview.rb", "lib/ver/methods/save.rb", "lib/ver/methods/search.rb", "lib/ver/methods/select.rb", "lib/ver/methods/shortcuts.rb", "lib/ver/methods/views.rb", "lib/ver/mode.rb", "lib/ver/options.rb", "lib/ver/plist.rb", "lib/ver/status.rb", "lib/ver/syntax.rb", "lib/ver/syntax/detector.rb", "lib/ver/syntax/processor.rb", "lib/ver/text.rb", "lib/ver/text/index.rb", "lib/ver/theme.rb", "lib/ver/tooltip.rb", "lib/ver/vendor/binary_search.rb", "lib/ver/vendor/fuzzy_file_finder.rb", "lib/ver/vendor/levenshtein.rb", "lib/ver/vendor/textpow.rb", "lib/ver/view.rb", "lib/ver/view/console.rb", "lib/ver/view/entry.rb", "lib/ver/view/list.rb", "lib/ver/view/list/buffer.rb", "lib/ver/view/list/ex.rb", "lib/ver/view/list/fuzzy_file_finder.rb", "lib/ver/view/list/grep.rb", "lib/ver/view/list/methods.rb", "lib/ver/view/list/syntax.rb", "lib/ver/view/list/theme.rb", "lib/ver/view/term.rb", "spec/keymap.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/gem_setup.rake", "tasks/grancher.rake", "tasks/install_dependencies.rake", "tasks/manifest.rake", "tasks/plist2json.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/syntax_list.rake", "tasks/ycov.rake", "ver.gemspec"]
|
14
|
+
s.files = ["AUTHORS", "CHANGELOG", "LICENSE", "MANIFEST", "README.textile", "Rakefile", "TODO", "bin/ver", "config/detect.rb", "config/keymap/diakonos.rb", "config/keymap/emacs.rb", "config/keymap/vim.rb", "config/preferences/ANTLR.json", "config/preferences/ASP vb.NET.json", "config/preferences/ASP.json", "config/preferences/ActionScript.json", "config/preferences/Active4D.json", "config/preferences/Ada.json", "config/preferences/Ant.json", "config/preferences/Apache.json", "config/preferences/AppleScript.json", "config/preferences/Bison.json", "config/preferences/Blogging.json", "config/preferences/C.json", "config/preferences/CMake.json", "config/preferences/CSS.json", "config/preferences/CTags.json", "config/preferences/CVS.json", "config/preferences/ColdFusion.json", "config/preferences/D.json", "config/preferences/Darcs.json", "config/preferences/Diff.json", "config/preferences/DokuWiki.json", "config/preferences/Doxygen.json", "config/preferences/Dylan.json", "config/preferences/Eiffel.json", "config/preferences/Erlang.json", "config/preferences/Experimental.json", "config/preferences/F-Script.json", "config/preferences/FXScript.json", "config/preferences/FileMerge.json", "config/preferences/Fortran.json", "config/preferences/GTD2.json", "config/preferences/GTDAlt.json", "config/preferences/GetBundle.json", "config/preferences/Gettext.json", "config/preferences/Graphviz.json", "config/preferences/Greasemonkey.json", "config/preferences/Gri.json", "config/preferences/HTML.json", "config/preferences/Haskell.json", "config/preferences/Hotkey.json", "config/preferences/ImageBrowser.json", "config/preferences/Inform.json", "config/preferences/Ini.json", "config/preferences/Installer.json", "config/preferences/Io.json", "config/preferences/JSON.json", "config/preferences/Java.json", "config/preferences/JavaDoc.json", "config/preferences/JavaScript.json", "config/preferences/LaTeX.json", "config/preferences/Lex/Flex.json", "config/preferences/Lighttpd.json", "config/preferences/LilyPond.json", "config/preferences/Lisp.json", "config/preferences/Logo.json", "config/preferences/Logtalk.json", "config/preferences/Lua.json", "config/preferences/MEL.json", "config/preferences/MIPS Assembler.json", "config/preferences/MacPorts.json", "config/preferences/Mail.json", "config/preferences/Make.json", "config/preferences/Markdown.json", "config/preferences/Math.json", "config/preferences/Matlab.json", "config/preferences/Maven.json", "config/preferences/Mediawiki.json", "config/preferences/Mercurial.json", "config/preferences/Modula.json", "config/preferences/MoinMoin.json", "config/preferences/Navigation.json", "config/preferences/Nemerle.json", "config/preferences/OCaml Code Completion.json", "config/preferences/OCaml.json", "config/preferences/ODCompletion.json", "config/preferences/Objective-C.json", "config/preferences/OpenGL.json", "config/preferences/Outlines.json", "config/preferences/Pascal.json", "config/preferences/Perforce.json", "config/preferences/Perl.json", "config/preferences/PmWiki.json", "config/preferences/Postscript.json", "config/preferences/Processing.json", "config/preferences/Prolog.json", "config/preferences/Propel.json", "config/preferences/Python.json", "config/preferences/Quake.json", "config/preferences/R.json", "config/preferences/Ragel.json", "config/preferences/Regular Expressions.json", "config/preferences/Remind.json", "config/preferences/Rez.json", "config/preferences/Ruby.json", "config/preferences/S5 Slide Show.json", "config/preferences/SCons.json", "config/preferences/SQL.json", "config/preferences/SSH Config.json", "config/preferences/SVK.json", "config/preferences/SWIG.json", "config/preferences/SWeave.json", "config/preferences/Scheme.json", "config/preferences/Scilab.json", "config/preferences/Setext.json", "config/preferences/Shell Script.json", "config/preferences/Slate.json", "config/preferences/Source.json", "config/preferences/Subversion.json", "config/preferences/TODO.json", "config/preferences/Tabular.json", "config/preferences/Tcl.json", "config/preferences/TerminalMate.json", "config/preferences/Text.json", "config/preferences/TextMate.json", "config/preferences/Textile.json", "config/preferences/Thrift.json", "config/preferences/Transmit.json", "config/preferences/Twiki.json", "config/preferences/Txt2tags.json", "config/preferences/Vectorscript.json", "config/preferences/XML.json", "config/preferences/Xcode.json", "config/preferences/YAML.json", "config/preferences/iCalendar.json", "config/preferences/iTerm.json", "config/preferences/reStructuredText.json", "config/rc.rb", "config/scratch", "config/syntax/ANTLR.json", "config/syntax/ASP vb.NET.json", "config/syntax/ASP.json", "config/syntax/ActionScript.json", "config/syntax/Active4D Config.json", "config/syntax/Active4D Library.json", "config/syntax/Active4D.json", "config/syntax/Ada.json", "config/syntax/Ant.json", "config/syntax/Apache.json", "config/syntax/AppleScript.json", "config/syntax/BibTeX.json", "config/syntax/Bison.json", "config/syntax/Blog - HTML.json", "config/syntax/Blog - Markdown.json", "config/syntax/Blog - Text.json", "config/syntax/Blog - Textile.json", "config/syntax/C++.json", "config/syntax/C.json", "config/syntax/CMake Listfile.json", "config/syntax/CSS.json", "config/syntax/CSV.json", "config/syntax/ColdFusion.json", "config/syntax/D.json", "config/syntax/Diff.json", "config/syntax/DokuWiki.json", "config/syntax/Doxygen.json", "config/syntax/Dylan.json", "config/syntax/Eiffel.json", "config/syntax/Erlang.json", "config/syntax/F-Script.json", "config/syntax/FXScript.json", "config/syntax/Fortran - Modern.json", "config/syntax/Fortran - Punchcard.json", "config/syntax/GTD.json", "config/syntax/GTDalt.json", "config/syntax/Gettext.json", "config/syntax/Go.json", "config/syntax/Graphviz (DOT).json", "config/syntax/Greasemonkey.json", "config/syntax/Gri.json", "config/syntax/HTML (ASP).json", "config/syntax/HTML (ASP.net).json", "config/syntax/HTML (Active4D).json", "config/syntax/HTML (Erlang).json", "config/syntax/HTML (Tcl).json", "config/syntax/HTML.json", "config/syntax/Haskell.json", "config/syntax/Inform.json", "config/syntax/Ini.json", "config/syntax/Installer Distribution Script.json", "config/syntax/Io.json", "config/syntax/JSON.json", "config/syntax/Java Properties.json", "config/syntax/Java Server Page (JSP).json", "config/syntax/Java.json", "config/syntax/JavaDoc.json", "config/syntax/JavaScript.json", "config/syntax/LaTeX Beamer.json", "config/syntax/LaTeX Log.json", "config/syntax/LaTeX Memoir.json", "config/syntax/LaTeX.json", "config/syntax/Lex-Flex.json", "config/syntax/Lighttpd.json", "config/syntax/LilyPond.json", "config/syntax/Lisp.json", "config/syntax/Literate Haskell.json", "config/syntax/Logo.json", "config/syntax/Logtalk.json", "config/syntax/Lua.json", "config/syntax/MATLAB.json", "config/syntax/MEL.json", "config/syntax/MIPS Assembler.json", "config/syntax/MacPorts Portfile.json", "config/syntax/Mail.json", "config/syntax/Makefile.json", "config/syntax/Markdown.json", "config/syntax/Maven POM.json", "config/syntax/Mediawiki.json", "config/syntax/Modula-3.json", "config/syntax/MoinMoin.json", "config/syntax/MultiMarkdown.json", "config/syntax/Nemerle.json", "config/syntax/OCaml.json", "config/syntax/OCamllex.json", "config/syntax/OCamlyacc.json", "config/syntax/Objective-C++.json", "config/syntax/Objective-C.json", "config/syntax/Octave.json", "config/syntax/OpenGL.json", "config/syntax/PHP.json", "config/syntax/Pascal.json", "config/syntax/Perl.json", "config/syntax/Plain Text.json", "config/syntax/PmWiki.json", "config/syntax/Postscript.json", "config/syntax/Processing.json", "config/syntax/Prolog.json", "config/syntax/Python.json", "config/syntax/Quake Style .cfg.json", "config/syntax/R.json", "config/syntax/Ragel.json", "config/syntax/Rd (R Documentation).json", "config/syntax/Regular Expressions (Oniguruma).json", "config/syntax/Regular Expressions (Python).json", "config/syntax/Release Notes.json", "config/syntax/Remind.json", "config/syntax/Rez.json", "config/syntax/Ruby Sass.json", "config/syntax/Ruby.json", "config/syntax/S5 Slide Show.json", "config/syntax/SQL.json", "config/syntax/SSH Config.json", "config/syntax/SWIG.json", "config/syntax/SWeave.json", "config/syntax/Scheme.json", "config/syntax/Scilab.json", "config/syntax/Setext.json", "config/syntax/Shell Script (Bash).json", "config/syntax/Slate.json", "config/syntax/Strings File.json", "config/syntax/TSV.json", "config/syntax/Tcl.json", "config/syntax/TeX Math.json", "config/syntax/TeX.json", "config/syntax/Textile.json", "config/syntax/Thrift.json", "config/syntax/Twiki.json", "config/syntax/Txt2tags.json", "config/syntax/Vectorscript.json", "config/syntax/XML strict.json", "config/syntax/XML.json", "config/syntax/XSL.json", "config/syntax/YAML.json", "config/syntax/camlp4.json", "config/syntax/iCalendar.json", "config/syntax/mod_perl.json", "config/syntax/reStructuredText.json", "config/syntax/svn-commit.tmp.json", "config/theme/Active4D.json", "config/theme/All Hallow's Eve.json", "config/theme/Amy.json", "config/theme/BBEdit.json", "config/theme/Bespin.json", "config/theme/Blackboard.json", "config/theme/BoysAndGirls01.json", "config/theme/Brilliance Black.json", "config/theme/Brilliance Dull.json", "config/theme/Classic Modified.json", "config/theme/Cobalt.json", "config/theme/Cool Glow.json", "config/theme/Dawn.json", "config/theme/Eiffel.json", "config/theme/Espresso Libre.json", "config/theme/Fluidvision.json", "config/theme/IDLE.json", "config/theme/LAZY.json", "config/theme/Mac Classic.json", "config/theme/MagicWB (Amiga).json", "config/theme/Merbivore Soft.json", "config/theme/Merbivore.json", "config/theme/Monokai.json", "config/theme/Notepad2.json", "config/theme/Pastels on Dark.json", "config/theme/RubyBlue.json", "config/theme/Sin City 2.json", "config/theme/Slate.json", "config/theme/Slush & Poppies.json", "config/theme/SpaceCadet.json", "config/theme/Sunburst.json", "config/theme/Twilight BG FG.json", "config/theme/Twilight.json", "config/theme/Whys Poignant.json", "config/theme/Zenburnesque.json", "config/theme/barf.json", "config/theme/fake.json", "config/theme/happydeluxe.json", "config/theme/iLife 05.json", "config/theme/iPlastic.json", "config/theme/mintBlue Dark.json", "config/theme/mintBlue.json", "config/theme/monoindustrial.json", "config/theme/starlight.json", "config/tutorial", "config/welcome", "help/index.verh", "lib/ver.rb", "lib/ver/entry.rb", "lib/ver/exception_view.rb", "lib/ver/font.rb", "lib/ver/help.rb", "lib/ver/help/describe_key.rb", "lib/ver/help/help_for_help.rb", "lib/ver/hover_completion.rb", "lib/ver/keymap.rb", "lib/ver/layout.rb", "lib/ver/methods.rb", "lib/ver/methods/bookmark.rb", "lib/ver/methods/clipboard.rb", "lib/ver/methods/completion.rb", "lib/ver/methods/control.rb", "lib/ver/methods/ctags.rb", "lib/ver/methods/delete.rb", "lib/ver/methods/help.rb", "lib/ver/methods/insert.rb", "lib/ver/methods/move.rb", "lib/ver/methods/open.rb", "lib/ver/methods/preview.rb", "lib/ver/methods/save.rb", "lib/ver/methods/search.rb", "lib/ver/methods/select.rb", "lib/ver/methods/shortcuts.rb", "lib/ver/methods/undo.rb", "lib/ver/methods/views.rb", "lib/ver/mode.rb", "lib/ver/options.rb", "lib/ver/plist.rb", "lib/ver/status.rb", "lib/ver/status/context.rb", "lib/ver/syntax.rb", "lib/ver/syntax/detector.rb", "lib/ver/syntax/processor.rb", "lib/ver/text.rb", "lib/ver/text/index.rb", "lib/ver/theme.rb", "lib/ver/tooltip.rb", "lib/ver/undo.rb", "lib/ver/vendor/binary_search.rb", "lib/ver/vendor/fuzzy_file_finder.rb", "lib/ver/vendor/levenshtein.rb", "lib/ver/vendor/sized_array.rb", "lib/ver/vendor/textpow.rb", "lib/ver/version.rb", "lib/ver/view.rb", "lib/ver/view/console.rb", "lib/ver/view/entry.rb", "lib/ver/view/list.rb", "lib/ver/view/list/buffer.rb", "lib/ver/view/list/ex.rb", "lib/ver/view/list/fuzzy_file_finder.rb", "lib/ver/view/list/grep.rb", "lib/ver/view/list/methods.rb", "lib/ver/view/list/syntax.rb", "lib/ver/view/list/theme.rb", "lib/ver/view/term.rb", "spec/helper.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/gem_setup.rake", "tasks/grancher.rake", "tasks/install_dependencies.rake", "tasks/manifest.rake", "tasks/plist2json.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/syntax_list.rake", "tasks/ycov.rake", "ver.gemspec"]
|
15
15
|
s.homepage = %q{http://github.com/manveru/ver}
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubygems_version = %q{1.3.5}
|
@@ -22,11 +22,14 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.specification_version = 3
|
23
23
|
|
24
24
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
25
|
-
s.add_runtime_dependency(%q<ffi-tk>, ["= 2009.
|
25
|
+
s.add_runtime_dependency(%q<ffi-tk>, ["= 2009.12.14"])
|
26
|
+
s.add_runtime_dependency(%q<eventmachine>, ["= 0.12.10"])
|
26
27
|
else
|
27
|
-
s.add_dependency(%q<ffi-tk>, ["= 2009.
|
28
|
+
s.add_dependency(%q<ffi-tk>, ["= 2009.12.14"])
|
29
|
+
s.add_dependency(%q<eventmachine>, ["= 0.12.10"])
|
28
30
|
end
|
29
31
|
else
|
30
|
-
s.add_dependency(%q<ffi-tk>, ["= 2009.
|
32
|
+
s.add_dependency(%q<ffi-tk>, ["= 2009.12.14"])
|
33
|
+
s.add_dependency(%q<eventmachine>, ["= 0.12.10"])
|
31
34
|
end
|
32
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2009.
|
4
|
+
version: 2009.12.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael 'manveru' Fellinger
|
@@ -9,8 +9,8 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
13
|
-
default_executable:
|
12
|
+
date: 2009-12-14 00:00:00 +09:00
|
13
|
+
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ffi-tk
|
@@ -20,7 +20,17 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 2009.
|
23
|
+
version: 2009.12.14
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: eventmachine
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.12.10
|
24
34
|
version:
|
25
35
|
description: An advanced text editor using tk and bringing world peace.
|
26
36
|
email: m.fellinger@gmail.com
|
@@ -31,13 +41,16 @@ extensions: []
|
|
31
41
|
extra_rdoc_files: []
|
32
42
|
|
33
43
|
files:
|
44
|
+
- AUTHORS
|
34
45
|
- CHANGELOG
|
46
|
+
- LICENSE
|
35
47
|
- MANIFEST
|
36
48
|
- README.textile
|
37
49
|
- Rakefile
|
38
50
|
- TODO
|
39
51
|
- bin/ver
|
40
52
|
- config/detect.rb
|
53
|
+
- config/keymap/diakonos.rb
|
41
54
|
- config/keymap/emacs.rb
|
42
55
|
- config/keymap/vim.rb
|
43
56
|
- config/preferences/ANTLR.json
|
@@ -356,6 +369,7 @@ files:
|
|
356
369
|
- help/index.verh
|
357
370
|
- lib/ver.rb
|
358
371
|
- lib/ver/entry.rb
|
372
|
+
- lib/ver/exception_view.rb
|
359
373
|
- lib/ver/font.rb
|
360
374
|
- lib/ver/help.rb
|
361
375
|
- lib/ver/help/describe_key.rb
|
@@ -364,6 +378,7 @@ files:
|
|
364
378
|
- lib/ver/keymap.rb
|
365
379
|
- lib/ver/layout.rb
|
366
380
|
- lib/ver/methods.rb
|
381
|
+
- lib/ver/methods/bookmark.rb
|
367
382
|
- lib/ver/methods/clipboard.rb
|
368
383
|
- lib/ver/methods/completion.rb
|
369
384
|
- lib/ver/methods/control.rb
|
@@ -378,11 +393,13 @@ files:
|
|
378
393
|
- lib/ver/methods/search.rb
|
379
394
|
- lib/ver/methods/select.rb
|
380
395
|
- lib/ver/methods/shortcuts.rb
|
396
|
+
- lib/ver/methods/undo.rb
|
381
397
|
- lib/ver/methods/views.rb
|
382
398
|
- lib/ver/mode.rb
|
383
399
|
- lib/ver/options.rb
|
384
400
|
- lib/ver/plist.rb
|
385
401
|
- lib/ver/status.rb
|
402
|
+
- lib/ver/status/context.rb
|
386
403
|
- lib/ver/syntax.rb
|
387
404
|
- lib/ver/syntax/detector.rb
|
388
405
|
- lib/ver/syntax/processor.rb
|
@@ -390,10 +407,13 @@ files:
|
|
390
407
|
- lib/ver/text/index.rb
|
391
408
|
- lib/ver/theme.rb
|
392
409
|
- lib/ver/tooltip.rb
|
410
|
+
- lib/ver/undo.rb
|
393
411
|
- lib/ver/vendor/binary_search.rb
|
394
412
|
- lib/ver/vendor/fuzzy_file_finder.rb
|
395
413
|
- lib/ver/vendor/levenshtein.rb
|
414
|
+
- lib/ver/vendor/sized_array.rb
|
396
415
|
- lib/ver/vendor/textpow.rb
|
416
|
+
- lib/ver/version.rb
|
397
417
|
- lib/ver/view.rb
|
398
418
|
- lib/ver/view/console.rb
|
399
419
|
- lib/ver/view/entry.rb
|
@@ -406,7 +426,7 @@ files:
|
|
406
426
|
- lib/ver/view/list/syntax.rb
|
407
427
|
- lib/ver/view/list/theme.rb
|
408
428
|
- lib/ver/view/term.rb
|
409
|
-
- spec/
|
429
|
+
- spec/helper.rb
|
410
430
|
- tasks/authors.rake
|
411
431
|
- tasks/bacon.rake
|
412
432
|
- tasks/changelog.rake
|
data/spec/keymap.rb
DELETED
@@ -1,224 +0,0 @@
|
|
1
|
-
require 'bacon'
|
2
|
-
Bacon.summary_on_exit
|
3
|
-
|
4
|
-
module VER
|
5
|
-
class Keyboard
|
6
|
-
end
|
7
|
-
|
8
|
-
class Keymap
|
9
|
-
attr_accessor :modes, :current_mode
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@modes = {}
|
13
|
-
end
|
14
|
-
|
15
|
-
def send(*args)
|
16
|
-
@callback.__send__(*args)
|
17
|
-
end
|
18
|
-
|
19
|
-
def enter_key(key)
|
20
|
-
modes[current_mode].enter_key key
|
21
|
-
end
|
22
|
-
|
23
|
-
# TODO: callbacks
|
24
|
-
def current_mode=(cm)
|
25
|
-
@current_mode = cm.to_sym
|
26
|
-
end
|
27
|
-
|
28
|
-
def add_mode(name)
|
29
|
-
@modes[name.to_sym] = mode = Mode.new(self)
|
30
|
-
yield mode if block_given?
|
31
|
-
mode
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class Mode
|
36
|
-
def initialize(callback = nil)
|
37
|
-
@callback = callback
|
38
|
-
@stack = []
|
39
|
-
@map = {}
|
40
|
-
@ancestors = []
|
41
|
-
end
|
42
|
-
|
43
|
-
def inherit(other)
|
44
|
-
@ancestors.delete other
|
45
|
-
@ancestors.unshift other
|
46
|
-
end
|
47
|
-
|
48
|
-
def ancestors(&block)
|
49
|
-
([self] + @ancestors).find(&block)
|
50
|
-
end
|
51
|
-
|
52
|
-
def map(sym, *keychain)
|
53
|
-
bind(*keychain.flatten){|*arg| @callback.send(sym, *arg) }
|
54
|
-
end
|
55
|
-
|
56
|
-
def bind(*keychain, &block)
|
57
|
-
keychain = keychain.dup
|
58
|
-
total = hash = {}
|
59
|
-
|
60
|
-
while key = keychain.shift
|
61
|
-
if keychain.empty?
|
62
|
-
hash[key] = block
|
63
|
-
else
|
64
|
-
hash = hash[key] = {}
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
@map.replace @map.merge(total, &MERGER)
|
69
|
-
end
|
70
|
-
|
71
|
-
def enter_keys(*keys)
|
72
|
-
keys.flatten.each{|key| enter_key(key) }
|
73
|
-
end
|
74
|
-
|
75
|
-
def enter_key(key)
|
76
|
-
@stack << key
|
77
|
-
ancestors{|ancestor| ancestor.attempt_execute(@stack) }
|
78
|
-
end
|
79
|
-
|
80
|
-
def attempt_execute(original_stack)
|
81
|
-
stack, arg = Mode.split_stack(original_stack)
|
82
|
-
return false if stack.empty?
|
83
|
-
|
84
|
-
executable = stack.inject(@map){|keys, key| keys.fetch(key) }
|
85
|
-
|
86
|
-
if execute(executable, *arg)
|
87
|
-
original_stack.clear
|
88
|
-
return true
|
89
|
-
end
|
90
|
-
|
91
|
-
false
|
92
|
-
rescue KeyError
|
93
|
-
false
|
94
|
-
end
|
95
|
-
|
96
|
-
def execute(executable, *arg)
|
97
|
-
case executable
|
98
|
-
when Proc
|
99
|
-
executable.call(*arg)
|
100
|
-
true
|
101
|
-
when Symbol
|
102
|
-
@callback.send(executable, *arg)
|
103
|
-
else
|
104
|
-
false
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def self.split_stack(stack)
|
109
|
-
return stack, nil if stack[0] == '0'
|
110
|
-
|
111
|
-
pivot = stack.index{|c| c !~ /\d/ }
|
112
|
-
|
113
|
-
if pivot == 0
|
114
|
-
return stack, nil
|
115
|
-
elsif pivot
|
116
|
-
return stack[pivot..-1], stack[0..pivot].join.to_i
|
117
|
-
else
|
118
|
-
return [], nil
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
MERGER = proc{|key,v1,v2|
|
123
|
-
Hash === v1 && Hash === v2 ? v1.merge(v2, &MERGER) : v2
|
124
|
-
}
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe Mode = VER::Mode do
|
129
|
-
it 'splits stack into argument and keychain' do
|
130
|
-
Mode.split_stack(['4', 'a']).should == [['a'], 4]
|
131
|
-
Mode.split_stack(['4', '2', 'a']).should == [['a'], 42]
|
132
|
-
Mode.split_stack(['4', '2', 'a', 'b']).should == [['a', 'b'], 42]
|
133
|
-
Mode.split_stack(['a', 'b']).should == [['a', 'b'], nil]
|
134
|
-
end
|
135
|
-
|
136
|
-
it 'executes action assigned to key' do
|
137
|
-
done = false
|
138
|
-
mode = Mode.new
|
139
|
-
mode.bind('a'){ done = true }
|
140
|
-
mode.enter_keys 'a'
|
141
|
-
done.should == true
|
142
|
-
end
|
143
|
-
|
144
|
-
it 'executes action assigned to key chain (immediately)' do
|
145
|
-
done = false
|
146
|
-
mode = Mode.new
|
147
|
-
mode.bind('a', 'b', 'c'){ done = true }
|
148
|
-
mode.enter_keys 'a', 'b', 'c'
|
149
|
-
done.should == true
|
150
|
-
end
|
151
|
-
|
152
|
-
it 'executes action assigned to key chain (delayed)' do
|
153
|
-
done = false
|
154
|
-
mode = Mode.new
|
155
|
-
mode.bind('a', 'b', 'c'){ done = true }
|
156
|
-
mode.enter_key 'a'
|
157
|
-
mode.enter_key 'b'
|
158
|
-
mode.enter_key 'c'
|
159
|
-
done.should == true
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'executes action with numeric argument' do
|
163
|
-
done = false
|
164
|
-
mode = Mode.new
|
165
|
-
mode.bind('a', 'b', 'c'){|arg| done = arg }
|
166
|
-
mode.enter_keys '4', '2', 'a', 'b', 'c'
|
167
|
-
done.should == 42
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'executes action on callback' do
|
171
|
-
done = false
|
172
|
-
callback = Class.new{
|
173
|
-
attr_accessor :done
|
174
|
-
|
175
|
-
def foo
|
176
|
-
@done = true
|
177
|
-
end
|
178
|
-
}.new
|
179
|
-
|
180
|
-
mode = Mode.new(callback)
|
181
|
-
mode.map :foo, %w[a b c]
|
182
|
-
mode.enter_keys %w[a b c]
|
183
|
-
callback.done.should == true
|
184
|
-
end
|
185
|
-
|
186
|
-
it 'inherits another mode but executes actions itself' do
|
187
|
-
first_done = second_done = false
|
188
|
-
first, second = Mode.new, Mode.new
|
189
|
-
second.inherit(first)
|
190
|
-
second.bind('a', 'b', 'c'){|arg| second_done = arg }
|
191
|
-
second.enter_keys %w[4 2 a b c]
|
192
|
-
second_done.should == 42
|
193
|
-
end
|
194
|
-
|
195
|
-
it 'inherits another mode that also executes actions' do
|
196
|
-
first_done = second_done = false
|
197
|
-
first, second = Mode.new, Mode.new
|
198
|
-
second.inherit(first)
|
199
|
-
|
200
|
-
first.bind('first-key'){|arg| first_done = arg }
|
201
|
-
second.bind('second-key'){|arg| second_done = arg }
|
202
|
-
|
203
|
-
second.enter_keys %w[4 2 first-key]
|
204
|
-
first_done.should == 42
|
205
|
-
|
206
|
-
second.enter_keys %w[2 4 second-key]
|
207
|
-
second_done.should == 24
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
describe Keymap = VER::Keymap do
|
212
|
-
it 'adds a mode into the keymap' do
|
213
|
-
done = false
|
214
|
-
|
215
|
-
keymap = Keymap.new
|
216
|
-
keymap.add_mode :test do |mode|
|
217
|
-
mode.bind('a'){ done = true }
|
218
|
-
end
|
219
|
-
keymap.current_mode = :test
|
220
|
-
|
221
|
-
keymap.enter_key 'a'
|
222
|
-
done.should == true
|
223
|
-
end
|
224
|
-
end
|