-#!/bin/zsh
-# Filename: qma
-# Purpose: "quick manual access"
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>, Matthias Kopfermann <maddi@grml.org>
-# 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 <C-L> to dehighlight"
- "shut up hlsearch when it confuses more than it helps and"
- nn <silent> <C-L> :nohlsearch<cr>|redraw
- "q should really end our document-reading like less does"
- nn q :qa!<cr>
- "different than q in that it quits only the current window when multiple windows "
- nn Q :q!<cr>
- "honor midnight-commander addicts :) "
- nn <F10> :qa!<cr>
- "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 <C-b>
- nn <backspace> <C-f>
- "nn f <C-f>
- nn p }zz
- "scroll the page down one line"
- nn j <C-E>
- "scroll the page up one line"
- nn k <C-Y>
- "the expectation of getting the next search via 'n' can not be ignored"
- nn -n <ESC> :set invnumber<cr>
- nn h :set invhlsearch<cr>
- "Make toggling case-sensitive accessable via the letter i"
- nn i :set invignorecase<cr>
- "Make toggling case-sensitive accessable via the less convention via -i"
- nn -i :set invignorecase<cr>
- nn <space> <C-f>
- nn <backspace> <C-b>
- nn <enter> gg
- nn S :split<cr>
- nn V :vsplit<cr>
- 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 #################################################################