Release new version 2.13.0
[grml-scripts.git] / usr_bin / qma
index e36c64f..a8eee6a 100755 (executable)
@@ -1,22 +1,19 @@
 #!/bin/zsh
 # Filename:      qma
 # Purpose:       "quick manual access"
-# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# 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.
-# Latest change: Son Dez 03 00:24:00 CET 2006 [mika]
 ################################################################################
 
-# Idea for this script and basic functionally by Matthias Kopfermann <maddi@grml.org>.
-
 . /etc/grml/lsb-functions
 . /etc/grml/script-functions
 
 check4progs man lzop vim || exit 1
 
-MANDIR=${MANDIR:-$HOME/man}
 VERSION='0.1'
 
+MANDIR=${MANDIR:-$HOME/man}
 if ! [ -d "$MANDIR" ] ; then
    einfo "Creating $MANDIR."
    mkdir $MANDIR ; eend $?
@@ -48,26 +45,73 @@ case $1 in
     ;;
 esac
 
+
 if [ -z "$MANPAGE" ] ; then
    usage
 fi
 
-if ! [ -f "${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo" ] ; then
-   einfo "Writing manpage to ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt"
+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 > ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt ; eend $?
+      man $SECTION $MANPAGE | col -b | lzop -U >$QUICKMAN ; eend $?
       einfo "Compressing manpage with lzop"
-      lzop -U ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt ; eend $?
+      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 accessible via the letter i"
+         nn i :set invignorecase<cr>
+        "Make toggling case-sensitive accessible 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 -c "set ft=man | set hlsearch | set ignorecase" +/"$SEARCH" =( lzop -cd $MANDIR/${MANPAGE}${SECTIONFILE}.txt.lzo)
+  vim -S  =( echo $vimconfig  ) +/"$SEARCH" =( lzop -cd ${QUICKMAN} )
 else
-  vim -c 'set ft=man' =( lzop -cd $MANDIR/${MANPAGE}${SECTIONFILE}.txt.lzo)
+  vim -S =( echo $vimconfig  ) =( lzop -cd $QUICKMAN )
 fi
 
 einfo "Thanks for flying qma using vim and lzop." ; eend 0