X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_bin%2Fqma;fp=usr_bin%2Fqma;h=5464823a068dfe6ee5d5746bd77e88fb235a5aec;hb=1b8dcad8b9da618cb6c0e22a762cafb08e262640;hp=0000000000000000000000000000000000000000;hpb=608ca3eeeacd74efa85ad44f5585d1b1b60c8d85;p=grml-scripts-core.git diff --git a/usr_bin/qma b/usr_bin/qma new file mode 100755 index 0000000..5464823 --- /dev/null +++ b/usr_bin/qma @@ -0,0 +1,119 @@ +#!/bin/zsh +# Filename: qma +# Purpose: "quick manual access" +# Authors: grml-team (grml.org), (c) Michael Prokop , Matthias Kopfermann +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2. +################################################################################ + +. /etc/grml/lsb-functions +. /etc/grml/script-functions + +check4progs man lzop vim || exit 1 + +VERSION='0.1' + +MANDIR=${MANDIR:-$HOME/man} +if ! [ -d "$MANDIR" ] ; then + einfo "Creating $MANDIR." + mkdir $MANDIR ; eend $? +fi + +usage() { + eerror "Usage: qma [section] manpage" ; eend 1 + exit 1 +} + +case $1 in + -h*|--h*) + usage + ;; + -v*|--v*) + einfo "qma - version $VERSION" ; eend 0 + exit 0 + ;; + [0-9]) + SECTION="${1}" + SECTIONFILE=".${1}" + MANPAGE="$2" + SEARCH="$3" + ;; + *) + SECTION='' + MANPAGE="$1" + SEARCH="$2" + ;; +esac + + +if [ -z "$MANPAGE" ] ; then + usage +fi + +QUICKMAN="${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo" + +if ! [ -f "$QUICKMAN" ] ; then + einfo "Writing manpage to $QUICKMAN" + if man $SECTION $MANPAGE 1>/dev/null ; then + man $SECTION $MANPAGE | col -b | lzop -U >$QUICKMAN ; eend $? + einfo "Compressing manpage with lzop" + eend $? + else + exit 1 + eend 1 + fi +fi + +vimconfig=' + set filetype=man + "set hlsearch can be annoying so use to dehighlight" + "shut up hlsearch when it confuses more than it helps and" + nn :nohlsearch|redraw + "q should really end our document-reading like less does" + nn q :qa! + "different than q in that it quits only the current window when multiple windows " + nn Q :q! + "honor midnight-commander addicts :) " + nn :qa! + "use one wonderful vim feature to show all matches of the word in the document in ex-mode" + nn a ]I + "the other way round" + nn A [I + nn b + nn + "nn f + nn p }zz + "scroll the page down one line" + nn j + "scroll the page up one line" + nn k + "the expectation of getting the next search via 'n' can not be ignored" + nn -n :set invnumber + nn h :set invhlsearch + "Make toggling case-sensitive accessable via the letter i" + nn i :set invignorecase + "Make toggling case-sensitive accessable via the less convention via -i" + nn -i :set invignorecase + nn + nn + nn gg + nn S :split + nn V :vsplit + set filetype=man + set ignorecase + "Really not modify a document here" + set nomodifiable + set readonly + "We have a more modern approach to searching in vim!" + set incsearch +' + +if [ -n "$SEARCH" ] ; then + vim -S =( echo $vimconfig ) +/"$SEARCH" =( lzop -cd ${QUICKMAN} ) +else + vim -S =( echo $vimconfig ) =( lzop -cd $QUICKMAN ) +fi + +einfo "Thanks for flying qma using vim and lzop." ; eend 0 + +## END OF FILE #################################################################