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