diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2015-08-13 15:24:50 -0700 | 
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2015-08-13 15:27:47 -0700 | 
| commit | 73824908aab1d910996cf4db7baf722aecc32d31 (patch) | |
| tree | c71ff22885f10ead18bfc1cccc7d2096c8a7f073 | |
| parent | 397c18810e3226a2ff25d0b90b9ee17354d40d2b (diff) | |
| download | pandoc-73824908aab1d910996cf4db7baf722aecc32d31.tar.gz | |
Added `--bash-completion` option.
This generates a bash completion script.
To use:
     eval "$(pandoc --bash-completion)"
| -rw-r--r-- | README | 7 | ||||
| -rw-r--r-- | data/bash_completion.tpl | 62 | ||||
| -rw-r--r-- | pandoc.cabal | 2 | ||||
| -rw-r--r-- | pandoc.hs | 19 | 
4 files changed, 89 insertions, 1 deletions
| @@ -250,6 +250,13 @@ General options      `epub.css`, `templates`, `slidy`, `slideous`, or `s5` directory      placed in this directory will override pandoc's normal defaults. +`--bash-completiion` + +:   Generate a bash completion script.  to enable bash completion +    with pandoc, add this to your `.bashrc`: + +         eval "$(pandoc --bash-completion)" +  `--verbose`  :   Give verbose debugging output.  Currently this only has an effect diff --git a/data/bash_completion.tpl b/data/bash_completion.tpl new file mode 100644 index 000000000..6d7e17215 --- /dev/null +++ b/data/bash_completion.tpl @@ -0,0 +1,62 @@ +#!/bin/bash + +# This script enables bash autocompletion for pandoc.  To enable +# bash completion, add this to your .bashrc: +# eval "$(pandoc --bash-completion)" + +_pandoc() +{ +    local cur prev opts lastc informats outformats datadir +    COMPREPLY=() +    cur="${COMP_WORDS[COMP_CWORD]}" +    prev="${COMP_WORDS[COMP_CWORD-1]}" + +    # These should be filled in by pandoc: +    opts="%s" +    informats="%s" +    outformats="%s" +    datadir="%s" + +    case "${prev}" in +         --from|-f|--read|-r) +             COMPREPLY=( $(compgen -W "${informats}" -- ${cur}) ) +             return 0 +             ;; +         --to|-t|--write|-w|-D|--print-default-template) +             COMPREPLY=( $(compgen -W "${outformats}" -- ${cur}) ) +             return 0 +             ;; +         --email-obfuscation) +             COMPREPLY=( $(compgen -W "references javascript none" -- ${cur}) ) +             return 0 +             ;; +         --latex-engine) +             COMPREPLY=( $(compgen -W "pdflatex lualatex xelatex" -- ${cur}) ) +             return 0 +             ;; +         --print-default-data-file) +             COMPREPLY=( $(compgen -W "reference.odt reference.docx $(find ${datadir} | sed -e 's/.*\/data\///')" -- ${cur}) ) +             return 0 +             ;; +         --highlight-style) +             COMPREPLY=( $(compgen -W "pygments tango espresso zenburn kate monochrome haddock" -- ${cur}) ) +             return 0 +             ;; +         *) +             ;; +    esac + +    case "${cur}" in +         -*) +             COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) +             return 0 +             ;; +         *) +             COMPREPLY=( $(compgen -f ${cur}) ) +             return 0 +             ;; +    esac + +} + +complete -F _pandoc pandoc diff --git a/pandoc.cabal b/pandoc.cabal index 719a480b7..f6884adb2 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -105,6 +105,8 @@ Data-Files:                   data/dzslides/template.html                   -- sample lua custom writer                   data/sample.lua +                 -- bash completion template +                 data/bash_completion.tpl                   -- documentation                   README, COPYRIGHT  Extra-Source-Files: @@ -71,7 +71,8 @@ import qualified Data.Text as T  import Control.Applicative ((<$>), (<|>))  import Text.Pandoc.Readers.Txt2Tags (getT2TMeta)  import Data.Monoid - +import Paths_pandoc (getDataDir) +import Text.Printf (printf)  import Text.Pandoc.Error  type Transform = Pandoc -> Pandoc @@ -880,6 +881,22 @@ options =                    (\opt -> return opt { optVerbose = True }))                   "" -- "Verbose diagnostic output." +    , Option "" ["bash-completion"] +                 (NoArg +                  (\_ -> do +                     ddir <- getDataDir +                     tpl <- readDataFileUTF8 Nothing "bash_completion.tpl" +                     let optnames (Option shorts longs _ _) = +                           map (\c -> ['-',c]) shorts ++ +                           map ("--" ++) longs +                     let allopts = unwords (concatMap optnames options) +                     UTF8.hPutStrLn stdout $ printf tpl allopts +                         (unwords (map fst readers)) +                         (unwords ("pdf": map fst writers)) +                         ddir +                     exitWith ExitSuccess )) +                 "" -- "Print bash completion script" +      , Option "v" ["version"]                   (NoArg                    (\_ -> do | 
