From 1333020b904a8714d01f4ae4789c5070e8ff90f2 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 10:50:33 +0200 Subject: Adding debian version 2:9.0.1378-2. Signed-off-by: Daniel Baumann --- debian/helpztags | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 debian/helpztags (limited to 'debian/helpztags') diff --git a/debian/helpztags b/debian/helpztags new file mode 100755 index 0000000..425d37e --- /dev/null +++ b/debian/helpztags @@ -0,0 +1,92 @@ +#!/usr/bin/perl +# +# helpztags generates tags for Vim helpfiles, for both .txt and .txt.gz files +# Author: Jakub Turski +# Artur R. Czechowski +# Version: 0.4 + +# Please use following command for generate a manual file: +# pod2man -c "User Commands" -s 1 -q none -r "vim 6.2" -d "September 2003" helpztags helpztags.1 + +=head1 NAME + +helpztags - generate the help tags file for directory + +=head1 SYNOPSIS + +helpztags F... + +=head1 DESCRIPTION + +F scans given directories for F<*.txt> and F<*.txt.gz> files. +Each file is scanned for tags used in F help files. For each directory +proper F file is generated. + +There should be at least one directory given. In other case program exits +with error. + +=head1 AUTHORS + +Written by Jakub Turski and Artur R. Czechowski based on idea +contained in C sources for its C<:helptags command>. + +=head1 REPORTING BUGS + +Please use a Debian C command or procedure described at +C. + +=head1 SEE ALSO + +Read C<:help helptags> in F for detailed information about helptags. + +=cut + +use strict; +use warnings; +use File::Glob ':globally'; +use POSIX qw(getcwd); + +die "Error: no directories given. Check manpage for details.\n" unless @ARGV; + +my $startdir=getcwd(); +my %tags; + +foreach my $dir (@ARGV) { + chdir $dir or next; + print "Processing ".$dir."\n"; + foreach my $file (<*.{gz,txt,??x}>) { + next unless $file =~ m/^[\w.-]+\.(?:txt|([[:alpha:]]{2})x)(?:.gz)?$/; + my $suffix = ''; + if ($1) { + $suffix = "-$1"; + } + my $open = ($file =~ /\.gz$/) ? open(GZ, '-|', 'zcat', $file) : open(GZ, $file); + if (!$open) { + chdir $startdir; + next; + } + while () { + # From vim73/src/ex_cmds.c, helptags_one, lines 6443-6445 + # + # Only accept a *tag* when it consists of valid + # characters, there is white space before it and is + # followed by a white character or end-of-line. + while (/(?:(?<=^)|(?<=\s))\*([^*\s|]+?)\*(?:(?=\s)|(?=$))/g) { + $tags{"tags$suffix"}{$1}=$file; + } + } + close(GZ); + } + while (my ($tagfile, $tags) = each %tags) { + next unless %{$tags}; + open(TAGSFILE, '>', $tagfile) || die "Error: Cannot open $dir/$tagfile for writing.\n"; + foreach my $tag (sort keys %{$tags}) { + print TAGSFILE "$tag\t$tags->{$tag}\t/*"; + $tag =~ s/\\/\\\\/g; + $tag =~ s@/@\/@g; + print TAGSFILE "$tag*\n"; + } + close TAGSFILE; + } + chdir $startdir; +} -- cgit v1.2.3