VimMate 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG ADDED
@@ -0,0 +1,53 @@
1
+ = Changelog
2
+
3
+ === Version 0.6.2
4
+ - # 7028: It's now possible to install VimMate using the provided setup.rb
5
+ or with Ruby Gems.
6
+ - Two layouts are now available. The old layout, with big terminals:
7
+ -------------
8
+ | F | |
9
+ | i | |
10
+ | l | Vim |
11
+ | e | |
12
+ | s | |
13
+ -------------
14
+ | Terminals |
15
+ -------------
16
+ And the new layout, with a big file list:
17
+ -------------
18
+ | | |
19
+ | F | |
20
+ | i | Vim |
21
+ | l | |
22
+ | e | |
23
+ | s ---------
24
+ | | Term |
25
+ -------------
26
+ The new layout is now the default. You can change this by setting the
27
+ :layout_big_terminals option to true.
28
+ - # 6761: A new way of opening files is now available. A new list of files
29
+ allows you to type only a part of a file name to see the possible files
30
+ filtered instantly. You can then select the file from the list or type
31
+ <tt>Enter</tt> directly if the file you are searching for is selected.
32
+ You can remove this new list by setting the option :files_use_search
33
+ to false. You can also specify if the search is case sensitive or not
34
+ with the option :files_search_ignore_case. The case is ignored by default.
35
+ - Long file names in the file list are now shorten with ellipsis. You can
36
+ disable ellipsis by setting the option :files_use_ellipsis to false.
37
+ - Files or directories can now be excluded on the command line. You can specify
38
+ a comma separated list of names that will be matched against the end of the
39
+ path of each files of directories. So <tt>vimmate -x html,pkg,README</tt>
40
+ will exclude any files with the names html, pkg or README. But,
41
+ <tt>vimmate -x bin/README</tt> will only exclude the file README in the bin
42
+ directory. Note that <tt>vimmate -x ME</tt> will only exclude files or
43
+ directories named ME and not files ending with ME like README.
44
+
45
+ === Version 0.6.1
46
+ - # 6721: Added "Tab Open" in the menu. "Tab Open" is the default when opening
47
+ a file not from the menu. This can be changed by setting the option
48
+ :files_default_open_in_tabs to false.
49
+ - Better Subversion integration: Add a new menu Subversion with Add, Rename,
50
+ Delete and Revert as sub-menus.
51
+
52
+ === Version 0.6.0
53
+ - First release
data/COPYING ADDED
@@ -0,0 +1,20 @@
1
+ = VimMate: Vim graphical add-on
2
+ Copyright (c) 2006 Guillaume Benny
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ this software and associated documentation files (the "Software"), to deal in
6
+ the Software without restriction, including without limitation the rights to
7
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
8
+ of the Software, and to permit persons to whom the Software is furnished to do
9
+ so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
data/README ADDED
@@ -0,0 +1,198 @@
1
+ = Description
2
+
3
+ VimMate is a graphical add-on to Vim with IDE-like features: it does more
4
+ than the plain Vim while still being lightweight. Even with the additional
5
+ features, it stays out of the way for it's main task: editing files with Vim.
6
+ VimMate adds functionality to Vim by embedding Vim GTK GUI (gVim) within
7
+ VimMate.
8
+
9
+ Some of the ideas of VimMate comes from PIDA[http://pida.berlios.de/]
10
+ and others from TextMate[http://macromates.com/] (although I've never
11
+ used TextMate).
12
+
13
+ VimMate's homepage: http://vimmate.rubyforge.org
14
+
15
+ = Features
16
+
17
+ VimMate has the following features:
18
+ - Uses Vim[http://www.vim.org/] for the text editor so it has all of
19
+ Vim's qualities.
20
+ - Written in Ruby[http://www.ruby-lang.org/] so the code is nice and clean.
21
+ - Integrated, hideable and searchable file tree with filter for easy
22
+ project viewing.
23
+ - Multiple integrated terminals <i>(Optional)</i>.
24
+ - Basic Subversion[http://subversion.tigris.org/] integration: <i>(Optional)</i>
25
+ - The file status is displayed in the file tree.
26
+ - You can add, rename, delete and revert a file from the file tree.
27
+
28
+ = Installation
29
+ VimMate has only been tested under Linux (in fact,
30
+ {Gentoo Linux}[http://www.gentoo.org/]). It might work under other OSs,
31
+ although I do not know. I think only the file list will work under
32
+ Windows because Vim does not use GTK under Windows so it cannot be embedded.
33
+ I know nothing about MacOSX so I cannot say if it works or not.
34
+
35
+ To install:
36
+ - Make sure Vim[http://www.vim.org/] is installed and compiled with the
37
+ graphical interface. Try running +gvim+ to see if it works. Only Vim
38
+ version 7.0 has been tested.
39
+ - Make sure Ruby[http://www.ruby-lang.org/] version 1.8 or more is installed.
40
+ Try running <tt>ruby --version</tt> in a terminal.
41
+ - Install the Ruby bindings to GTK and GNOME (for the VTE terminal). See
42
+ {Ruby-GNOME2 website}[http://ruby-gnome2.sourceforge.jp/]. Only
43
+ Ruby-GNOME2 version 0.15 has been tested. You don't need VTE: if it's
44
+ not installed, VimMate will not have terminals but will run anyway.
45
+ - If you want to use the Subversion integration feature, you must install
46
+ the subversion bindings for Ruby. Check if it's available for your OS
47
+ or get the sources from
48
+ {Subversion's website}[http://subversion.tigris.org/] and compile them.
49
+ - Download the latest VimMate on
50
+ {VimMate's homepage}[http://vimmate.rubyforge.org/].
51
+ - You now have 3 choices to install VimMate: manually, with Ruby Gems or with
52
+ <tt>setup.rb</tt>:
53
+ - With Ruby Gems
54
+ - Simply run <tt>gem install VimMate</tt> .
55
+ - With <tt>setup.rb</tt>
56
+ - Simply run <tt>ruby setup.rb</tt> . Run <tt>ruby setup.rb --help</tt> for
57
+ more information.
58
+ - Manually
59
+ - Copy the file <tt>bin/vimmate</tt> and the directory
60
+ <tt>lib/vimmatelib</tt> to a directory somewhere in your path.
61
+ - Make sure +vimmate+ is executable: <tt>chmod u+x vimmate</tt>
62
+ - cd to a directory where your project is. (Watch out for directories
63
+ with too many files. See <i>Limitations</i> below.)
64
+ - Run +vimmate+
65
+
66
+ Run <tt>vimmate --help</tt> for more information.
67
+
68
+ = Configuration
69
+ Note that you don't have to do what's described in this section:
70
+ everything will work anyway. It's just filled with nice tricks.
71
+
72
+ VimMate doesn't need any special configuration to run. But, when VimMate is
73
+ first run, it creates a file named <tt>.vimmaterc</tt> in your HOME directory.
74
+ You can edit this file at your own risk. If anything goes wrong, you can
75
+ always delete this file and it will be recreated with the default
76
+ configuration.
77
+
78
+ Most variables are self explanatory. One variable deserves a special
79
+ explanation because it can be useful to change. It's the line that
80
+ starts with <tt>:terminals_autoexec:</tt>. This line specifies a string
81
+ that is automatically executed by every terminals that are created by
82
+ VimMate. I'm sure you can think about a way to use this, but the idea
83
+ of this configuration line is to initialize the terminal so that it can
84
+ execute Vim (the console <tt>vim</tt>) without weird warnings about
85
+ escape characters. Here is how to configure it so that it works without
86
+ warnings with the bash shell:
87
+
88
+ # Other configurations before...
89
+ # (Because of a small quirk in rdoc, I put a space between the
90
+ # colon (:) and terminals_autoexec but there must be no space.)
91
+ : terminals_autoexec: |
92
+ export TERM="gnome"
93
+ clear
94
+
95
+ # Other configurations after...
96
+
97
+ You can adapt those commands for your shell. If you wonder about the
98
+ syntax of this file, it's a Ruby hash with Ruby symbols as keys dumped
99
+ with YAML[http://www.yaml.org/].
100
+
101
+ If you have problems getting it to work, watch out for whitespace because
102
+ YAML is whitespace sensitive (like python). If you still can't get it to
103
+ work, try running this in a shell:
104
+
105
+ ruby -ryaml -e 'puts({:terminals_autoexec => %{export TERM="gnome"\nclear}}.to_yaml)'
106
+
107
+ You can redirect the output of this command to overwrite your .vimmaterc file
108
+ and then run VimMate: it should work this time.
109
+
110
+ An other nice trick is to add a special alias that exists only within
111
+ VimMate's terminals:
112
+
113
+ # Other configurations before...
114
+ # (Because of a small quirk in rdoc, I put a space between the
115
+ # colon (:) and terminals_autoexec but there must be no space.)
116
+ : terminals_autoexec: |
117
+ alias vm='gvim --servername `gvim --serverlist | grep VIMMATE_` --remote-tab'
118
+ export TERM="gnome"
119
+ clear
120
+
121
+ # Other configurations after...
122
+
123
+ Again, you have to adapt for your shell because this is for bash. This
124
+ will also only works if you have only one VimMate running. This will allow
125
+ you to type
126
+
127
+ vm a_file
128
+
129
+ to edit <tt>a_file</tt> with the running VimMate. This can be handy for those
130
+ who prefer the command line to the file tree.
131
+
132
+ If you use Subversion (SVN), you can add yet an other line to be able to
133
+ edit your commit messages within VimMate:
134
+
135
+ # Other configurations before...
136
+ # (Because of a small quirk in rdoc, I put a space between the
137
+ # colon (:) and terminals_autoexec but there must be no space.)
138
+ : terminals_autoexec: |
139
+ alias vm='gvim --servername `gvim --serverlist | grep VIMMATE_` --remote-tab'
140
+ export SVN_EDITOR='gvim --servername `gvim --serverlist | grep VIMMATE_` --remote-wait'
141
+ export TERM="gnome"
142
+ clear
143
+
144
+ # Other configurations after...
145
+
146
+ Then, when you run:
147
+
148
+ svn commit
149
+
150
+ the commit message will be edited within VimMate and Subversion will wait for
151
+ the buffer containing the file to be deleted with the command
152
+
153
+ :bd
154
+
155
+ within Vim.
156
+
157
+ = Interesting Vim scripts
158
+ Here are some of the Vim scripts that I think are useful with VimMate to
159
+ make Vim more powerful:
160
+ - matchit[http://www.vim.org/scripts/script.php?script_id=39]:
161
+ Extends the Vim command <tt>%</tt> to easily navigate in
162
+ matching language constructs for many languages.
163
+ - rails[http://www.vim.org/scripts/script.php?script_id=1567]:
164
+ Easy navigation for {Ruby on Rails}[http://www.rubyonrails.org/]
165
+ - grep[http://www.vim.org/scripts/script.php?script_id=311]:
166
+ Nice grep integration. I frequently use the command <tt>:Rgrep</tt>.
167
+ - dbext[http://www.vim.org/scripts/script.php?script_id=356]:
168
+ Database access within Vim. Integrates well with <tt>rails.vim</tt>.
169
+ - SimpleFold[http://eigenclass.org/hiki.rb?simplefold+plugin+0.4.0]:
170
+ Nicely folds classes and methods for easy navigation.
171
+ - snippetsEmu[http://www.vim.org/scripts/script.php?script_id=1318]:
172
+ TextMate-like snippet expansion.
173
+ - vcscommand[http://www.vim.org/scripts/script.php?script_id=90]:
174
+ Integration for CVS and Subversion (SVN). Supports lots of things like
175
+ viewing the version control system log, integrated Vim diff, etc.
176
+ - surround[http://www.vim.org/scripts/script.php?script_id=1697]:
177
+ A nice script to add, change or remove "surroundings", like
178
+ parentheses, brackets, quotes, XML tags...
179
+ - ruby-block-conv[http://eigenclass.org/hiki.rb?Ruby+block+conversion+macros+for+Vim]:
180
+ Convert single line blocks from {} into do/end and the other way around.
181
+
182
+ There are a lot of other nice script out there so check
183
+ {Vim's web site}[http://www.vim.org/] for more scripts.
184
+
185
+ = Limitations
186
+ - VimMate cannot handle well a directory tree with thousands of files,
187
+ although it has no problems with hundreds of files.
188
+ - Vim loads after VimMate is started. If you close VimMate or open a file
189
+ before Vim starts and is connected to VimMate, this can lead to weird
190
+ things. You should wait for Vim before you start playing with VimMate.
191
+ Weird things can also happen if you close VimMate without saving in
192
+ Vim before.
193
+
194
+ = Author and Copyright
195
+
196
+ VimMate was written and is Copyright (C) 2006 Guillaume Benny
197
+
198
+ See COPYING[link:files/COPYING.html] for more information.
data/Rakefile ADDED
@@ -0,0 +1,72 @@
1
+ =begin
2
+ = VimMate: Vim graphical add-on
3
+ Copyright (c) 2006 Guillaume Benny
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9
+ of the Software, and to permit persons to whom the Software is furnished to do
10
+ so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+ =end
23
+
24
+ require 'rake/gempackagetask'
25
+ require 'rake/rdoctask'
26
+
27
+ require './lib/vimmatelib/version.rb'
28
+
29
+ task :default => :package
30
+
31
+ # Documentation Task
32
+ Rake::RDocTask.new("rdoc") do |t|
33
+ t.rdoc_files.include('README',
34
+ 'COPYING',
35
+ 'TODO',
36
+ 'CHANGELOG',
37
+ 'bin/**',
38
+ 'lib/**/*.rb')
39
+ t.main = 'README'
40
+ t.title = "VimMate #{VimMate::VERSION} documentation"
41
+ end
42
+
43
+ # Gem Specification
44
+ gem_specification = Gem::Specification.new do |s|
45
+ s.name = 'VimMate'
46
+ s.version = VimMate::VERSION
47
+ s.author = 'Guillaume Benny'
48
+ s.homepage = 'http://vimmate.rubyforge.org'
49
+ s.summary = 'VimMate is a graphical add-on to Vim with IDE-like features.'
50
+
51
+ s.executables = ['vimmate']
52
+
53
+ s.files = FileList['README',
54
+ 'COPYING',
55
+ 'TODO',
56
+ 'CHANGELOG',
57
+ 'Rakefile',
58
+ 'setup.rb',
59
+ 'bin/**/*',
60
+ 'lib/**/*']
61
+ end
62
+
63
+ # Gem Task
64
+ Rake::GemPackageTask.new(gem_specification) do |pkg|
65
+ pkg.need_zip = false
66
+ pkg.need_tar = true
67
+ end
68
+ task :package => [:rdoc]
69
+
70
+ desc 'Remove rdoc and package'
71
+ task :clobber => [:clobber_rdoc, :clobber_package]
72
+
data/TODO ADDED
@@ -0,0 +1,9 @@
1
+ = TODO
2
+ List of things to do:
3
+ - Find a better way to hide the file list and use the same way to hide
4
+ the terminals.
5
+
6
+ = Ideas
7
+ - New from file copy
8
+ - Opening many files at once
9
+ - Open in external viewer
data/bin/vimmate ADDED
@@ -0,0 +1,179 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ = VimMate: Vim graphical add-on
4
+ Copyright (c) 2006 Guillaume Benny
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
7
+ this software and associated documentation files (the "Software"), to deal in
8
+ the Software without restriction, including without limitation the rights to
9
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
10
+ of the Software, and to permit persons to whom the Software is furnished to do
11
+ so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
23
+ =end
24
+
25
+
26
+ #
27
+ # VimMate is a graphical add-on to Vim that was written and
28
+ # is Copyright (C) 2006 Guillaume Benny
29
+ #
30
+ module VimMate
31
+ end
32
+
33
+ # Find the lib directory based on the path of this file
34
+ lib_dir = File.join(File.dirname(File.expand_path($0)), "../lib")
35
+ vimmate_lib_dir = File.join(lib_dir, "vimmatelib")
36
+ # Add the lib directory in Ruby's search path
37
+ if File.directory? vimmate_lib_dir
38
+ $:.unshift(lib_dir)
39
+ end
40
+
41
+ require 'rubygems'
42
+
43
+ # Require the version
44
+ require 'vimmatelib/version'
45
+
46
+ # Parse the command line arguments
47
+ require 'optparse'
48
+ exclude_file_list = []
49
+ OptionParser.new do |opts|
50
+ opts.banner = "Usage: #{File.basename($0)} [options] [files or directories]"
51
+
52
+ opts.separator ""
53
+ opts.separator "VimMate #{VimMate::VERSION}: Vim graphical add-on"
54
+ opts.separator "Copyright (C) 2006 Guillaume Benny"
55
+ opts.separator ""
56
+ opts.separator "If files or directories are omitted, the current directory is shown"
57
+
58
+ opts.on("-x",
59
+ "--exclude file1,file2,file3",
60
+ Array,
61
+ "Comma separated list of files or directory to exclude.") do |file_list|
62
+ exclude_file_list = file_list
63
+ end
64
+
65
+ opts.on_tail("-h", "--help", "Show this help screen") do |string|
66
+ puts opts
67
+ exit
68
+ end
69
+ end.parse!
70
+
71
+ require 'vimmatelib/requirer'
72
+
73
+ VimMate::Requirer.require_exit('gtk2')
74
+
75
+ # We fork to give back the shell to the user, like Vim
76
+ fork do
77
+ require 'vimmatelib/config'
78
+ require 'vimmatelib/dummy_window'
79
+ require 'vimmatelib/files_menu'
80
+ require 'vimmatelib/files_window'
81
+ require 'vimmatelib/main_window'
82
+ require 'vimmatelib/vim_window'
83
+
84
+ # Create the main objects
85
+ main = VimMate::MainWindow.new
86
+ files = VimMate::FilesWindow.new(exclude_file_list)
87
+ vim = VimMate::VimWindow.new
88
+ menu = VimMate::FilesMenu.new(main)
89
+
90
+ terminals = VimMate::Requirer.require_if('vimmatelib/terminals_window', VimMate::DummyWindow.new) do
91
+ VimMate::TerminalsWindow.new
92
+ end
93
+
94
+ # Set the signals for the file list
95
+ files.add_open_signal do |path, kind|
96
+ vim.open(path, kind)
97
+ end
98
+ files.add_menu_signal do |path|
99
+ menu.open(path)
100
+ end
101
+
102
+ # Set the signals for the file menu
103
+ menu.add_open_signal do |path, kind|
104
+ vim.open(path, kind)
105
+ end
106
+ menu.add_refresh_signal do
107
+ files.refresh
108
+ end
109
+
110
+ # When there are no files, add the current directory to the file list.
111
+ # If files are specified on the command line, use them
112
+ if ARGV.empty?
113
+ files.add_path(File.expand_path('.'))
114
+ files.expand_first_row
115
+ else
116
+ ARGV.each do |file|
117
+ files.add_path(File.expand_path(file))
118
+ end
119
+ end
120
+
121
+ # Create the pane for each part of the UI
122
+ if VimMate::Config[:layout_big_terminals]
123
+ # -------------
124
+ # | F | |
125
+ # | i | |
126
+ # | l | Vim |
127
+ # | e | |
128
+ # | s | |
129
+ # -------------
130
+ # | Terminals |
131
+ # -------------
132
+ gtk_top_pane = Gtk::HPaned.new
133
+ gtk_top_pane.add(files.gtk_window)
134
+ gtk_top_pane.add(vim.gtk_window)
135
+ gtk_file_expander = gtk_top_pane
136
+
137
+ gtk_full_pane = Gtk::VPaned.new
138
+ gtk_full_pane.add(gtk_top_pane)
139
+ gtk_full_pane.pack2(terminals.gtk_window, false, false)
140
+ else
141
+ # -------------
142
+ # | | |
143
+ # | F | |
144
+ # | i | Vim |
145
+ # | l | |
146
+ # | e | |
147
+ # | s ---------
148
+ # | | Term |
149
+ # -------------
150
+ gtk_right_pane = Gtk::VPaned.new
151
+ gtk_right_pane.add(vim.gtk_window)
152
+ gtk_right_pane.pack2(terminals.gtk_window, false, false)
153
+
154
+ gtk_full_pane = Gtk::HPaned.new
155
+ gtk_full_pane.pack1(files.gtk_window, false, true)
156
+ gtk_full_pane.add(gtk_right_pane)
157
+ gtk_file_expander = gtk_full_pane
158
+ end
159
+
160
+ main.gtk_window.add(gtk_full_pane)
161
+
162
+ # React when the file list is expanded or closed
163
+ previous_separator_position = VimMate::Config[:files_opened_width]
164
+ files.add_expander_signal do |expanded|
165
+ if expanded
166
+ gtk_file_expander.position = previous_separator_position
167
+ else
168
+ previous_separator_position = gtk_file_expander.position
169
+ gtk_file_expander.position = VimMate::Config[:files_closed_width]
170
+ end
171
+ end
172
+ unless VimMate::Config[:files_expanded]
173
+ gtk_file_expander.position = VimMate::Config[:files_closed_width]
174
+ end
175
+
176
+ # Go!
177
+ main.start(vim)
178
+ end
179
+