r832 - in /trunk/utils/addons: registry-samples/ src/ src/vim/
src/vim/addons/
zack at users.alioth.debian.org
zack at users.alioth.debian.org
Tue Jan 16 09:16:55 UTC 2007
Author: zack
Date: Tue Jan 16 10:16:55 2007
New Revision: 832
URL: http://svn.debian.org/wsvn/?sc=1&rev=832
Log:
first commit of the ruby rewrite of vim-addons
rationales for the rewrite:
- (subjective) i am in a ruby-playing mood :-)
- (objective) ruby is a less heavy weight dep in term of installed size than python
Added:
trunk/utils/addons/registry-samples/alternate.yaml
trunk/utils/addons/registry-samples/calendar.yaml
trunk/utils/addons/registry-samples/gnupg.yaml
trunk/utils/addons/registry-samples/latexsuite.yaml
trunk/utils/addons/registry-samples/matchit.yaml
trunk/utils/addons/registry-samples/utl.yaml
trunk/utils/addons/src/vim-addons (with props)
trunk/utils/addons/src/vim/registry.rb
Removed:
trunk/utils/addons/registry-samples/alternate
trunk/utils/addons/registry-samples/calendar
trunk/utils/addons/registry-samples/gnupg
trunk/utils/addons/registry-samples/latexsuite
trunk/utils/addons/registry-samples/matchit
trunk/utils/addons/registry-samples/utl
trunk/utils/addons/src/vim/__init__.py
trunk/utils/addons/src/vim/addons/
Added: trunk/utils/addons/registry-samples/alternate.yaml
URL: http://svn.debian.org/wsvn/trunk/utils/addons/registry-samples/alternate.yaml?rev=832&op=file
==============================================================================
--- trunk/utils/addons/registry-samples/alternate.yaml (added)
+++ trunk/utils/addons/registry-samples/alternate.yaml Tue Jan 16 10:16:55 2007
@@ -1,0 +1,5 @@
+addon: alternate
+description: alternate pairing files (e.g. .c/.h) with short ex-commands
+basedir: /usr/share/vim-scripts/
+files:
+ - plugin/a.vim
Added: trunk/utils/addons/registry-samples/calendar.yaml
URL: http://svn.debian.org/wsvn/trunk/utils/addons/registry-samples/calendar.yaml?rev=832&op=file
==============================================================================
--- trunk/utils/addons/registry-samples/calendar.yaml (added)
+++ trunk/utils/addons/registry-samples/calendar.yaml Tue Jan 16 10:16:55 2007
@@ -1,0 +1,5 @@
+addon: calendar
+description: show various kind of calendars in a separate window
+basedir: /usr/share/vim-scripts/
+files:
+ - plugin/calendar.vim
Added: trunk/utils/addons/registry-samples/gnupg.yaml
URL: http://svn.debian.org/wsvn/trunk/utils/addons/registry-samples/gnupg.yaml?rev=832&op=file
==============================================================================
--- trunk/utils/addons/registry-samples/gnupg.yaml (added)
+++ trunk/utils/addons/registry-samples/gnupg.yaml Tue Jan 16 10:16:55 2007
@@ -1,0 +1,5 @@
+addon: gnupg
+description: plugin for transparent editing of GnuPG encrypted files.
+basedir: /usr/share/vim-scripts/
+files:
+ - plugin/gnupg.vim
Added: trunk/utils/addons/registry-samples/latexsuite.yaml
URL: http://svn.debian.org/wsvn/trunk/utils/addons/registry-samples/latexsuite.yaml?rev=832&op=file
==============================================================================
--- trunk/utils/addons/registry-samples/latexsuite.yaml (added)
+++ trunk/utils/addons/registry-samples/latexsuite.yaml Tue Jan 16 10:16:55 2007
@@ -1,0 +1,123 @@
+addon: latexsuite
+description: comprehensive set of tools to view, edit, and compile LaTeX documents
+files:
+ - compiler/tex.vim
+ - doc/imaps.txt.gz
+ - doc/latexhelp.txt.gz
+ - doc/latex-suite-quickstart.txt.gz
+ - doc/latex-suite.txt.gz
+ - ftplugin/bib_latexSuite.vim
+ - ftplugin/latex-suite/bibtex.vim
+ - ftplugin/latex-suite/bibtools.py
+ - ftplugin/latex-suite/brackets.vim
+ - ftplugin/latex-suite/compiler.vim
+ - ftplugin/latex-suite/custommacros.vim
+ - ftplugin/latex-suite/diacritics.vim
+ - ftplugin/latex-suite/dictionaries/dictionary
+ - ftplugin/latex-suite/dictionaries/SIunits
+ - ftplugin/latex-suite/elementmacros.vim
+ - ftplugin/latex-suite/envmacros.vim
+ - ftplugin/latex-suite/folding.vim
+ - ftplugin/latex-suite/macros/example
+ - ftplugin/latex-suite/main.vim
+ - ftplugin/latex-suite/mathmacros-utf.vim
+ - ftplugin/latex-suite/mathmacros.vim
+ - ftplugin/latex-suite/multicompile.vim
+ - ftplugin/latex-suite/outline.py
+ - ftplugin/latex-suite/packages/accents
+ - ftplugin/latex-suite/packages/acromake
+ - ftplugin/latex-suite/packages/afterpage
+ - ftplugin/latex-suite/packages/alltt
+ - ftplugin/latex-suite/packages/amsmath
+ - ftplugin/latex-suite/packages/amsthm
+ - ftplugin/latex-suite/packages/amsxtra
+ - ftplugin/latex-suite/packages/arabic
+ - ftplugin/latex-suite/packages/array
+ - ftplugin/latex-suite/packages/babel
+ - ftplugin/latex-suite/packages/bar
+ - ftplugin/latex-suite/packages/bm
+ - ftplugin/latex-suite/packages/bophook
+ - ftplugin/latex-suite/packages/boxedminipage
+ - ftplugin/latex-suite/packages/caption2
+ - ftplugin/latex-suite/packages/cases
+ - ftplugin/latex-suite/packages/ccaption
+ - ftplugin/latex-suite/packages/changebar
+ - ftplugin/latex-suite/packages/chapterbib
+ - ftplugin/latex-suite/packages/cite
+ - ftplugin/latex-suite/packages/color
+ - ftplugin/latex-suite/packages/comma
+ - ftplugin/latex-suite/packages/deleq
+ - ftplugin/latex-suite/packages/drftcite
+ - ftplugin/latex-suite/packages/dropping
+ - ftplugin/latex-suite/packages/enumerate
+ - ftplugin/latex-suite/packages/eqlist
+ - ftplugin/latex-suite/packages/eqparbox
+ - ftplugin/latex-suite/packages/everyshi
+ - ftplugin/latex-suite/packages/exmpl
+ - ftplugin/latex-suite/packages/flafter
+ - ftplugin/latex-suite/packages/float
+ - ftplugin/latex-suite/packages/floatflt
+ - ftplugin/latex-suite/packages/fn2end
+ - ftplugin/latex-suite/packages/footmisc
+ - ftplugin/latex-suite/packages/geometry
+ - ftplugin/latex-suite/packages/german
+ - ftplugin/latex-suite/packages/graphicx
+ - ftplugin/latex-suite/packages/graphpap
+ - ftplugin/latex-suite/packages/harpoon
+ - ftplugin/latex-suite/packages/hhline
+ - ftplugin/latex-suite/packages/histogram
+ - ftplugin/latex-suite/packages/hyperref
+ - ftplugin/latex-suite/packages/ifthen
+ - ftplugin/latex-suite/packages/inputenc
+ - ftplugin/latex-suite/packages/letterspace
+ - ftplugin/latex-suite/packages/lineno
+ - ftplugin/latex-suite/packages/longtable
+ - ftplugin/latex-suite/packages/lscape
+ - ftplugin/latex-suite/packages/manyfoot
+ - ftplugin/latex-suite/packages/moreverb
+ - ftplugin/latex-suite/packages/multibox
+ - ftplugin/latex-suite/packages/multicol
+ - ftplugin/latex-suite/packages/newalg
+ - ftplugin/latex-suite/packages/ngerman
+ - ftplugin/latex-suite/packages/numprint
+ - ftplugin/latex-suite/packages/oldstyle
+ - ftplugin/latex-suite/packages/outliner
+ - ftplugin/latex-suite/packages/overcite
+ - ftplugin/latex-suite/packages/parallel
+ - ftplugin/latex-suite/packages/plain
+ - ftplugin/latex-suite/packages/plates
+ - ftplugin/latex-suite/packages/polski
+ - ftplugin/latex-suite/packages/psgo
+ - ftplugin/latex-suite/packages/schedule
+ - ftplugin/latex-suite/packages/SIunits
+ - ftplugin/latex-suite/packages/textfit
+ - ftplugin/latex-suite/packages/times
+ - ftplugin/latex-suite/packages/tipa
+ - ftplugin/latex-suite/packages/ulem
+ - ftplugin/latex-suite/packages/url
+ - ftplugin/latex-suite/packages/verbatim
+ - ftplugin/latex-suite/packages/version
+ - ftplugin/latex-suite/packages.vim
+ - ftplugin/latex-suite/projecttemplate.vim
+ - ftplugin/latex-suite/pytools.py
+ - ftplugin/latex-suite/smartspace.vim
+ - ftplugin/latex-suite/templates/article.tex
+ - ftplugin/latex-suite/templates/IEEEtran.tex
+ - ftplugin/latex-suite/templates/report.tex
+ - ftplugin/latex-suite/templates/report_two_column.tex
+ - ftplugin/latex-suite/templates.vim
+ - ftplugin/latex-suite/texmenuconf.vim
+ - ftplugin/latex-suite/texproject.vim
+ - ftplugin/latex-suite/texrc
+ - ftplugin/latex-suite/texviewer.vim
+ - ftplugin/latex-suite/version.vim
+ - ftplugin/latex-suite/wizardfuncs.vim
+ - ftplugin/tex/brackets.vim
+ - ftplugin/tex_latexSuite.vim
+ - ftplugin/tex/texviewer.vim
+ - indent/tex.vim
+ - plugin/filebrowser.vim
+ - plugin/imaps.vim
+ - plugin/libList.vim
+ - plugin/remoteOpen.vim
+ - plugin/SyntaxFolds.vim
Added: trunk/utils/addons/registry-samples/matchit.yaml
URL: http://svn.debian.org/wsvn/trunk/utils/addons/registry-samples/matchit.yaml?rev=832&op=file
==============================================================================
--- trunk/utils/addons/registry-samples/matchit.yaml (added)
+++ trunk/utils/addons/registry-samples/matchit.yaml Tue Jan 16 10:16:55 2007
@@ -1,0 +1,5 @@
+addon: matchit
+description: extended matching with "%" (e.g. if ... then ... else)
+files:
+ - plugin/matchit.vim
+ - doc/matchit.txt
Added: trunk/utils/addons/registry-samples/utl.yaml
URL: http://svn.debian.org/wsvn/trunk/utils/addons/registry-samples/utl.yaml?rev=832&op=file
==============================================================================
--- trunk/utils/addons/registry-samples/utl.yaml (added)
+++ trunk/utils/addons/registry-samples/utl.yaml Tue Jan 16 10:16:55 2007
@@ -1,0 +1,10 @@
+addon: utl
+basedir: /usr/share/vim-scripts/
+files:
+ - doc/utl_usr.txt
+ - doc/utl_ref.txt
+ - plugin/utl_rc.vim
+ - plugin/utl.vim
+ - plugin/utl_scm.vim
+ - plugin/utl_arr.vim
+ - plugin/utl_uri.vim
Added: trunk/utils/addons/src/vim-addons
URL: http://svn.debian.org/wsvn/trunk/utils/addons/src/vim-addons?rev=832&op=file
==============================================================================
--- trunk/utils/addons/src/vim-addons (added)
+++ trunk/utils/addons/src/vim-addons Tue Jan 16 10:16:55 2007
@@ -1,0 +1,131 @@
+#!/usr/bin/ruby -w
+#--
+# Copyright (C) 2007 Stefano Zacchiroli
+#
+# This program is free software, you can redistribute it and/or modify it under
+# the terms of the GNU General Public License version 2 as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# Created: Tue, 16 Jan 2007 10:04:20 +0100 zack
+# Last-Modified: $Id$
+#++
+# == Synopsis
+#
+# vim-addons: Vim add-ons manager
+#
+# == Usage
+#
+# vim-addons [OPTION ...] enable ADDON ...
+# vim-addons [OPTION ...] disable ADDON ...
+# vim-addons [OPTION ...] list
+# vim-addons [OPTION ...] status
+#
+# -h, --help
+# show this usage message
+#
+# -s, --source-dir
+# addons source directory
+#
+# -t, --target-dir
+# target directory
+#
+# -r, --registry-dir
+# registry directory
+#
+# == Author
+# Stefano Zacchiroli <zack at debian.org>
+#
+# == Copyright
+# Copyright (C) 2007 Stefano Zacchiroli
+# This program is free software, you can redistribute it and/or modify it under
+# the terms of the GNU General Public License version 2 as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+
+$LOAD_PATH << File.join(ENV['HOME'], 'pkg-vim/utils/addons/src')
+
+require 'find'
+require 'getoptlong'
+require 'rdoc/usage'
+
+require 'vim/registry'
+
+def die_usage
+ raise 'TODO: die_usage'
+end
+
+def parse_cmdline
+ options = { # defaults
+ :source_dir => '/usr/share/vim/addons',
+ :target_dir => File.join(ENV['HOME'], '.vim'),
+ :registry_dir =>
+ File.join(ENV['HOME'], 'pkg-vim/utils/addons/registry-samples'),
+ }
+ commands = ['enable', 'disable', 'list', 'status']
+ cmdline =
+ GetoptLong.new(['--help', '-h', GetoptLong::NO_ARGUMENT],
+ ['--source-dir', '-s', GetoptLong::REQUIRED_ARGUMENT],
+ ['--target-dir', '-t', GetoptLong::REQUIRED_ARGUMENT],
+ ['--registry-dir', '-r', GetoptLong::REQUIRED_ARGUMENT]
+ )
+ cmdline.each do |opt, arg|
+ case opt
+ when '--help' ; die_usage
+ when '--source-dir' ; options[:source_dir] = arg
+ when '--target-dir' ; options[:target_dir] = arg
+ when '--registry-dir' ; options[:registry_dir] = arg
+ end
+ end
+ die_usage unless cmd = ARGV.shift
+ cmd = 'enable' if cmd == 'install' # command aliases a-la-apt
+ cmd = 'disable' if cmd == 'remove'
+ die_usage unless commands.member? cmd
+ die_usage if ['enable', 'disable'].member? cmd and ARGV.empty?
+ [cmd, ARGV, options]
+end
+
+cmd, arguments, options = parse_cmdline
+registry = Vim::Addons::Registry.new(options[:registry_dir])
+selected_addons = \
+ if arguments.empty?
+ registry.to_a
+ else
+ registry.select {|a| arguments.member? a.name}
+ end
+
+case cmd
+when 'list'
+ puts registry.sort
+when 'status'
+ selected_addons.each {|a| puts "#{a}: #{a.status(options[:target_dir])}"}
+when 'enable'
+ selected_addons.each do |a|
+ src_dir = (a.basedir or options[:source_dir])
+ symlink = lambda do |f|
+ dest = File.join(options[:target_dir], f)
+ dest_dir = File.dirname dest
+ FileUtils.mkdir_p dest_dir unless File.directory? dest_dir
+ File.symlink(File.join(src_dir, f), dest)
+ end
+ status = a.status(options[:target_dir])
+ case status.status
+ when :broken
+ status.missing_files.each(&symlink)
+ when :not_installed
+ a.files.each(&symlink)
+ end
+ end
+when 'disable'
+ rmlink = lambda {|f| File.delete(File.join(options[:target_dir], f)) }
+ selected_addons.each do |a|
+ status = a.status(options[:target_dir])
+ case status.status
+ when :installed
+ a.files.each(&rmlink)
+ when :broken
+ (a.files - status.missing_files).each(&rmlink)
+ end
+ end
+end
+
Propchange: trunk/utils/addons/src/vim-addons
------------------------------------------------------------------------------
svn:executable = *
Propchange: trunk/utils/addons/src/vim-addons
------------------------------------------------------------------------------
svn:keywords = Id
Added: trunk/utils/addons/src/vim/registry.rb
URL: http://svn.debian.org/wsvn/trunk/utils/addons/src/vim/registry.rb?rev=832&op=file
==============================================================================
--- trunk/utils/addons/src/vim/registry.rb (added)
+++ trunk/utils/addons/src/vim/registry.rb Tue Jan 16 10:16:55 2007
@@ -1,0 +1,122 @@
+#--
+# Copyright (C) 2007 Stefano Zacchiroli
+#
+# This program is free software, you can redistribute it and/or modify it under
+# the terms of the GNU General Public License version 2 as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# $Id$
+#++
+
+require 'yaml'
+require 'set'
+
+module Vim
+
+ module Addons
+
+ # an addon status is one of the following
+ # - :not_installed
+ # - :installed
+ # - :broken (missing_files attribute is then used to list not installed
+ # files)
+ Status = Struct.new(:status, :missing_files)
+ class Status
+ def to_s
+ case status
+ when :installed ; "installed"
+ when :not_installed ; "not installed"
+ when :broken ; "broken (missing: #{missing_files.join ', '})"
+ end
+ end
+
+ def ===(other)
+ case other
+ when Status ; self.status == other.status
+ else false
+ end
+ end
+ end
+
+ class Addon
+ def initialize(yaml)
+ @basedir = yaml['basedir']
+ @description = yaml['description']
+ @files = Set.new yaml['files']
+ @name = yaml['addon']
+ @status = nil
+
+ raise ArgumentError.new('empty addon') if @files.size == 0
+ end
+
+ # return the status of the self add-on wrt a target installation directory
+ # a status is a ternary value: :not_installed (the addon is not installed
+ # at all), :installed (the addon is completely installed), :broken (the
+ # addon is only partially installed)
+ def status(target_dir)
+ expected = @files.collect {|f| File.join(target_dir, f)}
+ installed = expected.select {|f| File.exists? f and File.file? f}
+
+ if installed.size == expected.size
+ Status.new :installed
+ elsif installed.size == 0
+ Status.new :not_installed
+ else
+ missing = expected - installed
+ prefix = /^#{Regexp.escape target_dir}\/+/o
+ missing.collect! {|f| f.gsub(prefix, '')}
+ Status.new(:broken, missing)
+ end
+ end
+
+ def to_s
+ name
+ end
+
+ def <=>(other)
+ self.name <=> other.name
+ end
+
+ attr_reader :basedir
+ attr_reader :description
+ attr_reader :files
+ attr_reader :name
+ alias_method :addon, :name
+ end
+
+ class Registry
+ include Enumerable
+
+ def initialize(registry_dir)
+ @dir = registry_dir
+ @addons = {}
+ Registry.each_addon(@dir) {|a| @addons[a.name] = a}
+ end
+
+ def [](name)
+ @addons[name]
+ end
+
+ def each
+ @addons.each_value {|a| yield a}
+ end
+
+ def Registry.each_addon(dir)
+ Find.find(dir) do |path|
+ # selects .yaml files (non-recursively) contained in dir
+ next if path == dir
+ Find.prune if File.directory? path
+ if File.file? path
+ Find.prune if path !~ /\.yaml$/
+ yield(Addon.new(YAML.load_file(path)))
+ end
+ end
+ end
+
+ end
+
+ end
+
+end
+
More information about the pkg-vim-maintainers
mailing list