Skip to content

information

Ronald Record edited this page Sep 11, 2023 · 15 revisions

Info Generation Script

Markdown and HTML format documents providing information about each Lazyman supported Neovim configuration are generated and included in the Lazyman distribution. These documents provide some details about each configuration including a brief description, installation command using lazyman, configuration repository URL, plugins included in the configuration, and more.

View the supported configurations info docs.

The source code for the information.sh script:

#!/usr/bin/env bash
#
# information.sh [-a] [-u] [config name]
#
# Generate a Neovim configuration information page from the command line
# If no configuraton name is given, use 'nvim-Lazyman'
#
# Generated information documents are stored in ~/.config/nvim-Lazyman/info/
# Info documents generated by this script are in Markdown format
# The Markdown is used to generate HTML versions with pandoc

LMANDIR="${HOME}/.config/nvim-Lazyman"
PLURLS="${LMANDIR}/scripts/plugin_urls.txt"
KEYMAP="${LMANDIR}/scripts/keymaps.sh"
TBLCSS="${LMANDIR}/scripts/table.css"
CONFIG="${LMANDIR}/scripts/configrc"

if [ -f "${CONFIG}" ]
then
  source "${CONFIG}"
else
  printf "\n\nERROR: Missing ${CONFIG}"
  printf "\n\nReinstall Lazyman\n\n"
  exit 1
fi

CF_NAMES="Lazyman ${BASECFGS} ${LANGUCFGS} ${PRSNLCFGS} ${STARTCFGS}"

usage() {
  printf "\n\nUsage: information.sh [-a] [-d] [-i] [conf]"
  printf "\nWhere:"
  printf "\n\t-a indicates generate info for all supported configs"
  printf "\n\t-d indicates debug mode, leave generated Lua in .config/nvim-Lazyman/tmp/"
  printf "\n\t-i indicates generate info docs in config's installed location"
  printf "\n\t[conf] is the configuration name without the 'nvim-' prefix (default: Lazyman)\n\n"
  exit 1
}

get_plugins() {
  nvimdir="$1"
  outfile="$2"
  plugman="$3"
  confdir=
  if [ -d "${HOME}/.config/${nvimdir}" ]
  then
    confdir="${HOME}/.config/${nvimdir}"
  else
    [ -d "${HOME}/.config/nvim-${nvimdir}" ] && {
      confdir="${HOME}/.config/nvim-${nvimdir}"
      nvimdir="nvim-${nvimdir}"
    }
  fi
  [ "${confdir}" ] && {
    case ${plugman} in
      Lazy)
        if [ -f "${confdir}/lazy-lock.json" ]
        then
          echo "## Lazy managed plugins" >> "${outfile}"
          echo "" >> "${outfile}"
          grep ':' "${confdir}/lazy-lock.json" | awk -F ':' ' { print $1 } ' | \
          sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | \
          sed -e 's/"//g' -e "s/'//g" | while read plug
          do
            url=$(grep ${plug} ${PLURLS} | head -1)
            if [ "${url}" ]
            then
              plugin=$(echo ${url} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ')
              echo "- [${plugin}](${url})" >> "${outfile}"
            else
              gitconf="${HOME}/.local/share/${nvimdir}/lazy/${plug}/.git/config"
              if [ -f ${gitconf} ]
              then
                plugurl=$(grep url "${gitconf}" | head -1 | awk -F '=' ' { print $2 } ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
                plugin=$(echo ${plugurl} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ' | sed -e "s/\.git$//")
                echo "- [${plugin}](${plugurl})" >> "${outfile}"
              else
                gitconf="${HOME}/.local/share/${nvimdir}/site/pack/lazy/opt/${plug}/.git/config"
                if [ -f ${gitconf} ]
                then
                  plugurl=$(grep url "${gitconf}" | head -1 | awk -F '=' ' { print $2 } ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
                  plugin=$(echo ${plugurl} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ' | sed -e "s/\.git$//")
                  echo "- [${plugin}](${plugurl})" >> "${outfile}"
                else
                  echo "- ${plug}" >> "${outfile}"
                fi
              fi
            fi
          done
        else
          echo "## Lazy managed plugins" >> "${outfile}"
          echo "" >> "${outfile}"
          for gitconf in ${HOME}/.local/share/${nvimdir}/lazy/*/.git/config \
                         ${HOME}/.local/share/${nvimdir}/site/pack/lazy/opt/*/.git/config
          do
            [ "${gitconf}" == "${HOME}/.local/share/${nvimdir}/lazy/*/.git/config" ] && continue
            [ "${gitconf}" == "${HOME}/.local/share/${nvimdir}/site/pack/lazy/opt/*/.git/config" ] && continue
            if [ -f ${gitconf} ]
            then
              plugurl=$(grep url "${gitconf}" | head -1 | awk -F '=' ' { print $2 } ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
              plugin=$(echo ${plugurl} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ' | sed -e "s/\.git$//")
              echo "- [${plugin}](${plugurl})" >> "${outfile}"
            fi
          done
        fi
        ;;
      Mini)
        echo "## Mini.nvim managed plugins" >> "${outfile}"
        echo "" >> "${outfile}"
        for gitconf in ${confdir}/.git/modules/*/config
        do
          [ "${gitconf}" == "${confdir}/.git/modules/*/config" ] && continue
          plugurl=$(grep url "${gitconf}" | head -1 | awk -F '=' ' { print $2 } ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
          plugin=$(echo ${plugurl} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ' | sed -e "s/\.git$//")
          echo "- [${plugin}](${plugurl})" >> "${outfile}"
        done
        ;;
      Packer)
        echo "## Packer managed plugins" >> "${outfile}"
        echo "" >> "${outfile}"
        find "${confdir}" -name packer_compiled.lua -print0 | \
        xargs -0 grep url | grep = | awk -F '=' ' { print $2 } ' | \
        sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | \
        sed -e 's/"//g' -e "s/'//g" | while read url
        do
          plugin=$(echo ${url} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ')
          echo "- [${plugin}](${url})" >> "${outfile}"
        done
        ;;
      Plug)
        echo "## Plug managed plugins" >> "${outfile}"
        echo "" >> "${outfile}"
        for gitconf in ${HOME}/.local/share/${nvimdir}/plugged/*/.git/config
        do
          [ "${gitconf}" == "${HOME}/.local/share/${nvimdir}/plugged/*/.git/config" ] && continue
          plugurl=$(grep url "${gitconf}" | head -1 | awk -F '=' ' { print $2 } ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
          plugin=$(echo ${plugurl} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ' | sed -e "s/\.git$//")
          echo "- [${plugin}](${plugurl})" >> "${outfile}"
        done
        ;;
      SP*)
        echo "## SP (dein) managed plugins" >> "${outfile}"
        echo "" >> "${outfile}"
        for gitconf in ${HOME}/.cache/vimfiles/repos/*/*/*/.git/config
        do
          [ "${gitconf}" == "${HOME}/.cache/vimfiles/repos/*/*/*/.git/config" ] && continue
          plugurl=$(grep url "${gitconf}" | head -1 | awk -F '=' ' { print $2 } ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
          plugin=$(echo ${plugurl} | awk -F '/' ' { print $(NF - 1)"/"$(NF) } ' | sed -e "s/\.git$//")
          echo "- [${plugin}](${plugurl})" >> "${outfile}"
        done
        ;;
      *)
        echo "## Unsupported plugin manager" >> "${outfile}"
        ;;
    esac
  }
}

make_info() {
  if [ "$1" == "-i" ]
  then
    nvimconf="$2"
    OUTF="${LMANDIR}/info/${nvimconf}.md"
    HTML="${LMANDIR}/info/html/${nvimconf}.html"
  else
    nvimconf="$1"
    OUTF="${HOME}/src/Neovim/nvim-lazyman/info/${nvimconf}.md"
    HTML="${HOME}/src/Neovim/nvim-lazyman/info/html/${nvimconf}.html"
  fi

  GH_URL=
  NC_URL=
  DF_URL=
  WS_URL=
  YT_URL=
  CF_CAT="Unknown"
  CF_TYP="Custom"
  PL_MAN="Lazy"
  C_DESC=
  C_INST=
  case ${nvimconf} in
    Lazyman)
      GH_URL="https://github.com/doctorfree/nvim-lazyman"
      NC_URL="http://neovimcraft.com/plugin/doctorfree/nvim-lazyman"
      DF_URL="https://dotfyle.com/doctorfree/nvim-lazyman"
      WS_URL="https://lazyman.dev"
      YT_URL="https://www.youtube.com/@doctorfree"
      CF_CAT="Default"
      C_DESC="The Lazyman Neovim configuration serves as a reference implementation of a configuration with multiple namespaces and managed via a command line menu interface. Currently the Lazyman Neovim configuration provides three separate and distinct namespaces ('ecovim', 'free' and 'onno'). To switch between namespaces, set the 'namespace' value in 'lua/configuration.lua'."
      C_INST="Installed and initialized by default"
      ;;
    Abstract)
      GH_URL="https://github.com/Abstract-IDE/Abstract"
      NC_URL="https://neovimcraft.com/plugin/Abstract-IDE/Abstract"
      DF_URL="https://dotfyle.com/plugins/Abstract-IDE/Abstract"
      WS_URL="https://abstract-ide.github.io/site"
      CF_CAT="Base"
      PL_MAN="Packer"
      C_DESC="Preconfigured Neovim as an IDE"
      C_INST="lazyman -g"
      ;;
    Artur)
      GH_URL="https://github.com/arturgoms/nvim"
      DF_URL="https://dotfyle.com/arturgoms/nvim"
      CF_CAT="Personal"
      C_DESC="Personal Neovim config of Artur Gomes"
      C_INST="lazyman -w Artur"
      ;;
    AstroNvimPlus)
      GH_URL="https://github.com/doctorfree/astronvim"
      WS_URL="https://astronvim.lazyman.dev"
      CF_CAT="Base"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="An example [AstroNvim community](https://github.com/AstroNvim/astrocommunity) plugins configuration"
      C_INST="lazyman -a"
      ;;
    BasicIde)
      GH_URL="https://github.com/LunarVim/nvim-basic-ide"
      CF_CAT="Base"
      C_DESC="Maintained by LunarVim, this is a descendent of 'Neovim from Scratch'.All plugins are pinned to known working versions"
      C_INST="lazyman -j"
      ;;
    Ecovim)
      GH_URL="https://github.com/ecosse3/nvim"
      NC_URL="http://neovimcraft.com/plugin/ecosse3/nvim"
      CF_CAT="Base"
      C_DESC="Tailored for frontend development with React and Vue.js"
      C_INST="lazyman -e"
      ;;
    LazyVim)
      GH_URL="https://github.com/LazyVim LazyVim/starter"
      WS_URL="https://lazyvim.lazyman.dev"
      CF_CAT="Base"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="The [LazyVim starter](https://github.com/LazyVim/starter) configuration"
      C_INST="lazyman -l"
      ;;
    LunarVim)
      GH_URL="https://github.com/IfCodingWereNatural/minimal-nvim"
      WS_URL="https://lunarvim.lazyman.dev"
      CF_CAT="Base"
      CF_TYP="[LunarVim](https://www.lunarvim.org)"
      C_DESC="Installs LunarVim plus the [IfCodingWereNatural custom user config](https://youtu.be/Qf9gfx7gWEY)"
      C_INST="lazyman -v"
      ;;
    NvChad)
      GH_URL="https://github.com/doctorfree/NvChad-custom"
      WS_URL="https://nvchad.lazyman.dev"
      YT_URL="https://www.youtube.com/@siduck_og"
      CF_CAT="Base"
      CF_TYP="[NvChad](https://nvchad.com)"
      C_DESC="Advanced [customization of NvChad](https://github.com/doctorfree/NvChad-custom). Good [introductory video](https://youtu.be/Mtgo-nP_r8Y) to NvChad"
      C_INST="lazyman -c"
      ;;
    RNvim)
      GH_URL="https://github.com/RoryNesbitt/RNvim"
      DF_URL="https://dotfyle.com/RoryNesbitt/rnvim"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Rory Nesbitt, author of dotfyle-cli"
      C_INST="lazyman -w RNvim"
      ;;
    CandyVim)
      GH_URL="https://github.com/doctorfree/CandyVim"
      WS_URL="https://candyvim.lazyman.dev"
      DF_URL="https://dotfyle.com/doctorfree/candyvim"
      CF_CAT="Personal"
      C_DESC="Eye Candy frontend development with React and Vue.js"
      C_INST="lazyman -w CandyVim"
      ;;
    SpaceVim)
      GH_URL="https://github.com/doctorfree/spacevim"
      WS_URL="https://spacevim.org"
      CF_CAT="Base"
      CF_TYP="[SpaceVim](https://spacevim.org)"
      PL_MAN="SP (dein)"
      C_DESC="SpaceVim started in December 2016, it is a mature and well supported Neovim configuration distribution. Lazyman custom SpaceVim configuration installed in \`~/.SpaceVim.d/\`"
      C_INST="lazyman -s"
      ;;
    MagicVim)
      GH_URL="https://gitlab.com/GitMaster210/magicvim"
      CF_CAT="Base"
      PL_MAN="Packer"
      C_DESC="Custom Neovim configuration designed to be light and fast. LSP, Treesitter & Code Completion all work out of the box and auto install when you open a file type that doesn't have code completion for it yet."
      C_INST="lazyman -m"
      ;;
    AlanVim)
      GH_URL="https://github.com/alanRizzo/dot-files"
      CF_CAT="Language"
      PL_MAN="Packer"
      C_DESC="Oriented toward Python development"
      C_INST="lazyman -L AlanVim"
      ;;
    Allaman)
      GH_URL="https://github.com/Allaman/nvim"
      DF_URL="https://dotfyle.com/Allaman/nvim"
      CF_CAT="Language"
      C_DESC="One of the inspirations for Lazyman. Excellent support for Python, Golang, Rust, YAML, and more"
      C_INST="lazyman -L Allaman"
      ;;
    Barebones)
      GH_URL="https://github.com/Traap/barebones"
      YT_URL="https://www.youtube.com/@traap."
      CF_CAT="Starter"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="Bare bones LazyVim configuration by Traap with a [video introduction](https://youtu.be/xpBoiTIiepc)"
      C_INST="lazyman -x Barebones"
      ;;
    CatNvim)
      GH_URL="https://github.com/nullchilly/CatNvim"
      WS_URL="https://www.lazyvim.org"
      DF_URL="https://dotfyle.com/nullchilly/catnvim"
      CF_CAT="Language"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="Neovim configuration written in the [C programming language](https://en.wikipedia.org/wiki/C_(programming_language))"
      C_INST="lazyman -L CatNvim"
      ;;
    Cpp)
      GH_URL="https://github.com/dreamsofcode-io/neovim-cpp"
      WS_URL="https://nvchad.com"
      YT_URL="https://www.youtube.com/@dreamsofcode"
      CF_CAT="Language"
      CF_TYP="[NvChad](https://nvchad.com)"
      C_DESC="'NvChad' based Neovim config with C++ formatting, debugging, and diagnostics. Dreams of Code [video tutorial](https://youtu.be/lsFoZIg-oDs)"
      C_INST="lazyman -L Cpp"
      ;;
    Folke)
      GH_URL="https://github.com/doctorfree/nvim-Folke"
      WS_URL="https://www.lazyvim.org"
      DF_URL="https://dotfyle.com/folke/dot-nvim"
      CF_CAT="Personal"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="Personal Neovim configuration of the great Folke Lemaitre, author of \`lazy.nvim\`, \`noice.nvim\`, \`LazyVim\`, and more"
      C_INST="lazyman -w Folke"
      ;;
    Go)
      GH_URL="https://github.com/dreamsofcode-io/neovim-go-config"
      WS_URL="https://nvchad.com"
      YT_URL="https://www.youtube.com/@dreamsofcode"
      CF_CAT="Language"
      CF_TYP="[NvChad](https://nvchad.com)"
      C_DESC="NvChad based Neovim config with Go formatting, debugging, and diagnostics. Dreams of Code [video tutorial](https://youtu.be/i04sSQjd-qo)"
      C_INST="lazyman -L Go"
      ;;
    Go2one)
      GH_URL="https://github.com/leoluz/go2one"
      CF_CAT="Language"
      PL_MAN="Packer"
      C_DESC="Neovim Go development environment that does not touch standard Neovim configuration folders"
      C_INST="lazyman -L Go2one"
      ;;
    Insis)
      GH_URL="https://github.com/nshen/InsisVim"
      NC_URL="http://neovimcraft.com/plugin/nshen/InsisVim"
      DF_URL="https://dotfyle.com/nshen/insisvim"
      CF_CAT="Language"
      PL_MAN="Packer"
      C_DESC="An out-of-the-box Neovim IDE solution with simple development environment setup"
      C_INST="lazyman -L Insis"
      ;;
    Knvim)
      GH_URL="https://github.com/knmac/knvim"
      DF_URL="https://dotfyle.com/knmac/knvim"
      CF_CAT="Language"
      C_DESC="Targets Python, Bash, LaTeX, Markdown, and C/C++. See the [Knvim Config Cheat Sheet](https://github.com/knmac/knvim/blob/main/res/cheatsheet.md)"
      C_INST="lazyman -L Knvim"
      ;;
    Kristijan)
      GH_URL="https://github.com/kristijanhusak/neovim-config"
      DF_URL="https://dotfyle.com/kristijanhusak/neovim-config-nvim"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Kristijan Husak, author of several Neovim plugins including \`orgmode\` and \`vim-dadbod-ui\`"
      C_INST="lazyman -w Kristijan"
      ;;
    LaTeX)
      GH_URL="https://github.com/benbrastmckie/.config"
      NC_URL="http://neovimcraft.com/plugin/benbrastmckie/.config"
      YT_URL="https://www.youtube.com/@benbrastmckie"
      CF_CAT="Language"
      PL_MAN="Packer"
      C_DESC="Neovim configuration optimized for writing in LaTeX. Personal Neovim configuration of [Benjamin Brast-McKie](http://www.benbrastmckie.com). Keymaps and more described in the configuration [Cheatsheet](https://github.com/benbrastmckie/.config/blob/master/CheatSheet.md). Blog article by the author detailing [tools used by his configuration](http://www.benbrastmckie.com/tools#access). [Video playlist](https://www.youtube.com/watch?v=_Ct2S65kpjQ&list=PLBYZ1xfnKeDRhCoaM4bTFrjCl3NKDBvqk) of tutorials on using this config for writing LaTeX in Neovim"
      C_INST="lazyman -L LaTeX"
      ;;
    LazyIde)
      GH_URL="https://github.com/doctorfree/nvim-LazyIde"
      WS_URL="https://ide.lazyman.dev"
      CF_CAT="Language"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="LazyVim IDE config for Neovim"
      C_INST="lazyman -L LazyIde"
      ;;
    LunarIde)
      GH_URL="https://github.com/doctorfree/lvim-Christian"
      WS_URL="https://www.lunarvim.org"
      CF_CAT="Language"
      CF_TYP="[LunarVim](https://www.lunarvim.org)"
      C_DESC="LunarVim config based on [Christian Chiarulli's](https://github.com/ChristianChiarulli/lvim). Java, Python, Lua, Go, JavaScript, Typescript, React, and Rust IDE"
      C_INST="lazyman -L LunarIde"
      ;;
    LvimIde)
      GH_URL="https://github.com/lvim-tech/lvim"
      NC_URL="http://neovimcraft.com/plugin/lvim-tech/lvim"
      YT_URL="https://www.youtube.com/@lvimtech5651"
      CF_CAT="Language"
      C_DESC="Not to be confused with 'LunarVim', this is a standalone Neovim configuration. Modular configuration with LSP support for 60+ languages. Debug support for c, cpp, dart, elixir, go, haskell, java, javascript/typescript, lua, php, python, ruby, rust"
      C_INST="lazyman -L LvimIde"
      ;;
    Magidc)
      GH_URL="https://github.com/magidc/nvim-config"
      CF_CAT="Language"
      C_DESC="Java, Python, Lua, and Rust IDE"
      C_INST="lazyman -L Magidc"
      ;;
    Nv)
      GH_URL="https://github.com/appelgriebsch/Nv"
      WS_URL="https://www.lazyvim.org"
      NC_URL="http://neovimcraft.com/plugin/appelgriebsch/Nv"
      DF_URL="https://dotfyle.com/appelgriebsch/nv"
      CF_CAT="Language"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="'LazyVim' based Neovim configuration. Andreas Gerlach develops smart farming tech and maintains the 'Sway' edition of 'Manjaro-arm'"
      C_INST="lazyman -L Nv"
      ;;
    NV-IDE)
      GH_URL="https://github.com/crivotz/nv-ide"
      NC_URL="http://neovimcraft.com/plugin/crivotz/nv-ide"
      DF_URL="https://dotfyle.com/crivotz/nv-ide"
      CF_CAT="Language"
      C_DESC="Configuration oriented for web developers (rails, ruby, php, html, css, SCSS, javascript)"
      C_INST="lazyman -L NV-IDE"
      ;;
    Orange)
      GH_URL="https://github.com/bitterteasweetorange/nvim"
      NC_URL="http://neovimcraft.com/plugin/bitterteasweetorange/nvim"
      CF_CAT="Language"
      C_DESC="Modern Neovim configuration for coding React and TypeScript"
      C_INST="lazyman -L Orange"
      ;;
    Python)
      GH_URL="https://github.com/dreamsofcode-io/neovim-python"
      WS_URL="https://nvchad.com"
      YT_URL="https://www.youtube.com/@dreamsofcode"
      CF_CAT="Language"
      CF_TYP="[NvChad](https://nvchad.com)"
      C_DESC="'NvChad' based Neovim config with Python formatting, debugging, and diagnostics. Dreams of Code [video tutorial](https://youtu.be/4BnVeOUeZxc). These features are included in the Base 'NvChad' custom add-on (lazyman -c)"
      C_INST="lazyman -L Python"
      ;;
    Rust)
      GH_URL="https://github.com/dreamsofcode-io/neovim-rust"
      WS_URL="https://nvchad.com"
      YT_URL="https://www.youtube.com/@dreamsofcode"
      CF_CAT="Language"
      CF_TYP="[NvChad](https://nvchad.com)"
      C_DESC="'NvChad' based Neovim config with Rust formatting, debugging, and diagnostics. Dreams of Code [video tutorial](https://youtu.be/mh_EJhH49Ms)"
      C_INST="lazyman -L Rust"
      ;;
    SaleVim)
      GH_URL="https://github.com/igorcguedes/SaleVim"
      CF_CAT="Language"
      PL_MAN="Packer"
      C_DESC="'Salesforce' optimized IDE with custom features for editing 'Apex', 'Visualforce', and 'Lightning' code"
      C_INST="lazyman -L SaleVim"
      ;;
    Shuvro)
      GH_URL="https://github.com/shuvro/lvim"
      WS_URL="https://www.lunarvim.org"
      CF_CAT="Language"
      CF_TYP="[LunarVim](https://www.lunarvim.org)"
      C_DESC="Significantly improved fork of [Abouzar Parvan's](https://github.com/abzcoding/lvim) advanced 'LunarVim' config"
      C_INST="lazyman -L Shuvro"
      ;;
    Webdev)
      GH_URL="https://github.com/doctorfree/nvim-webdev"
      WS_URL="https://webdev.lazyman.dev"
      CF_CAT="Language"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="LazyVim based config for web developers. JavaScript, Typescript, React, and Tailwind CSS support"
      C_INST="lazyman -L Webdev"
      ;;
    3rd)
      GH_URL="https://github.com/3rd/config"
      DF_URL="https://dotfyle.com/3rd/config-home-dotfiles-nvim"
      CF_CAT="Personal"
      C_DESC="Example [custom tree-sitter grammar](https://github.com/3rd/syslang)"
      C_INST="lazyman -w 3rd"
      ;;
    Adib)
      GH_URL="https://github.com/adibhanna/nvim"
      NC_URL="http://neovimcraft.com/plugin/adibhanna/nvim"
      YT_URL="https://www.youtube.com/@adibhanna"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Adib Hanna. Tips, distros, and configuration [demo video](https://youtu.be/8SVPOKZVaMU)"
      C_INST="lazyman -w Adib"
      ;;
    Ahsan)
      GH_URL="https://github.com/bibjaw99/workstation"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Ahsan Habib"
      C_INST="lazyman -w Ahsan"
      ;;
    Beethoven)
      GH_URL="https://github.com/Elteoremadebeethoven/nvim-config"
      YT_URL="https://www.youtube.com/@TheoremofBeethoven"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of mechanical engineering student Alexander Vazquez. See the videos on [plugin setup](https://youtu.be/f5-XZadSFBc) and [workstation setup](https://youtu.be/adODck89qVk)."
      C_INST="lazyman -w Beethoven"
      ;;
    Brain)
      GH_URL="https://github.com/brainfucksec/neovim-lua"
      NC_URL="http://neovimcraft.com/plugin/brainfucksec/neovim-lua"
      CF_CAT="Personal"
      C_DESC="Well structured personal config based on the [KISS](https://en.wikipedia.org/wiki/KISS_principle) principle"
      C_INST="lazyman -w Brain"
      ;;
    Charles)
      GH_URL="https://github.com/CharlesChiuGit/nvimdots.lua"
      CF_CAT="Personal"
      C_DESC="Well structured lazy config with several setup scripts and a Wiki"
      C_INST="lazyman -w Charles"
      ;;
    Chokerman)
      GH_URL="https://github.com/justchokingaround/dotfiles"
      DF_URL="https://dotfyle.com/justchokingaround/dotfiles-coding-neovim-nvim"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Github user justchokingaround"
      C_INST="lazyman -w Chokerman"
      ;;
    Craftzdog)
      GH_URL="https://github.com/craftzdog/dotfiles-public"
      DF_URL="https://dotfyle.com/craftzdog/dotfiles-public-config-nvim"
      CF_CAT="Personal"
      C_DESC="Takuya Matsuyama's Neovim configuration"
      C_INST="lazyman -w Craftzdog"
      ;;
    Dillon)
      GH_URL="https://github.com/dmmulroy/dotfiles"
      DF_URL="https://dotfyle.com/dmmulroy/dotfiles-config-nvim"
      CF_CAT="Personal"
      C_DESC="Author of [tsc.nvim](https://github.com/dmmulroy/tsc.nvim), asynchronous TypeScript type-checking"
      PL_MAN="Packer"
      C_INST="lazyman -w Dillon"
      ;;
    Elianiva)
      GH_URL="https://github.com/elianiva/dotfiles"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Dicha Zelianivan Arkana"
      C_INST="lazyman -w Elianiva"
      ;;
    Elijah)
      GH_URL="https://github.com/elijahmanor/dotfiles"
      WS_URL="https://elijahmanor.com"
      YT_URL="https://www.youtube.com/@ElijahManor"
      CF_CAT="Personal"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="Personal Neovim configuration of Elijah Manor"
      C_INST="lazyman -w Elijah"
      ;;
    Enrique)
      GH_URL="https://github.com/kiyov09/dotfiles"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Enrique Mejidas"
      C_INST="lazyman -w Enrique"
      ;;
    Heiker)
      GH_URL="https://github.com/VonHeikemen/dotfiles"
      CF_CAT="Personal"
      C_DESC="Neovim config of Heiker Curiel, author of [lsp-zero](https://github.com/VonHeikemen/lsp-zero.nvim)"
      C_INST="lazyman -w Heiker"
      ;;
    J4de)
      GH_URL="https://codeberg.org/j4de/nvim"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Jade Fox"
      C_INST="lazyman -w J4de"
      ;;
    Josean)
      GH_URL="https://github.com/josean-dev/dev-environment-files"
      YT_URL="https://www.youtube.com/@joseanmartinez"
      CF_CAT="Personal"
      PL_MAN="Packer"
      C_DESC="Josean Martinez [video tutorial](https://youtu.be/vdn_pKJUda8)"
      C_INST="lazyman -w Josean"
      ;;
    Daniel)
      GH_URL="https://github.com/daniel-vera-g/lvim"
      WS_URL="https://www.lunarvim.org"
      CF_CAT="Personal"
      CF_TYP="[LunarVim](https://www.lunarvim.org)"
      C_DESC="'LunarVim' based config of Daniel Vera Gilliard"
      C_INST="lazyman -w Daniel"
      ;;
    Kodo)
      GH_URL="https://github.com/chadcat7/kodo"
      DF_URL="https://dotfyle.com/chadcat7/kodo"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of chadcat, a high school student with no life. Kodo is a Neovim configuration that looks good and is fast (startuptime < 0.035s)."
      C_INST="lazyman -w Kodo"
      ;;
    LamarVim)
      GH_URL="https://github.com/Lamarcke/dotfiles"
      CF_CAT="Personal"
      DF_URL="https://dotfyle.com/Lamarcke/dotfiles-config-nvim"
      C_DESC="Personal Neovim configuration of Cassio Lamarck"
      C_INST="lazyman -w LamarVim"
      ;;
    Lukas)
      GH_URL="https://github.com/lukas-reineke/dotfiles"
      CF_CAT="Personal"
      PL_MAN="Packer"
      C_DESC="Personal Neovim configuration of Lukas Reineke, author of many excellent Neovim plugins. Requires an externally installed \`lua-language-server\` and \`efm-langserver\`"
      C_INST="lazyman -w Lukas"
      ;;
    LvimAdib)
      GH_URL="https://github.com/adibhanna/lvim-config"
      WS_URL="https://www.lunarvim.org"
      YT_URL="https://www.youtube.com/@adibhanna"
      CF_CAT="Personal"
      CF_TYP="[LunarVim](https://www.lunarvim.org)"
      ;;
    Maddison)
      GH_URL="https://github.com/b0o/nvim-conf"
      DF_URL="https://dotfyle.com/b0o/nvim-conf"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of Maddison Hellstrom, author of 'incline.nvim' floating statuslines, 'SchemaStore.nvim' JSON schemas, 'mapx.nvim' better keymaps"
      C_INST="lazyman -w Maddison"
      ;;
    Metis)
      GH_URL="https://github.com/metis-os/pwnvim"
      CF_CAT="Personal"
      C_DESC="Neovim config by the creator of 'MetisLinux' and 'Ewm'"
      C_INST="lazyman -w Metis"
      ;;
    Mini)
      GH_URL="https://github.com/echasnovski/nvim"
      NC_URL="http://neovimcraft.com/plugin/echasnovski/nvim"
      CF_CAT="Personal"
      PL_MAN="Mini"
      C_DESC="Uses the [mini.nvim](https://github.com/echasnovski/mini.nvim) library. Personal configuration of the 'mini.nvim' author"
      C_INST="lazyman -M"
      ;;
    ONNO)
      GH_URL="https://github.com/loctvl842/nvim"
      DF_URL="https://dotfyle.com/loctvl842/nvim"
      CF_CAT="Personal"
      C_DESC="One of the primary inspirations for Lazyman"
      C_INST="lazyman -w ONNO"
      ;;
    OnMyWay)
      GH_URL="https://github.com/RchrdAlv/NvimOnMy_way"
      CF_CAT="Personal"
      C_DESC="The personal Neovim configuration of Richard Ariza"
      C_INST="lazyman -w OnMyWay"
      ;;
    Optixal)
      GH_URL="https://github.com/Optixal/neovim-init.vim"
      NC_URL="http://neovimcraft.com/plugin/Optixal/neovim-init.vim"
      CF_CAT="Personal"
      PL_MAN="Plug"
      C_DESC="Hybrid Neovim config for developers with a functional yet aesthetic experience. Uses a combination of vimscript and lua with the 'vim-plug' plugin manager"
      C_INST="lazyman -w Optixal"
      ;;
    Orhun)
      GH_URL="https://github.com/orhun/dotfiles"
      WS_URL="https://blog.orhun.dev"
      CF_CAT="Personal"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="AstroNvim based configuration of open source developer Orhun Parmaksiz"
      C_INST="lazyman -w Orhun"
      ;;
    Primeagen)
      GH_URL="https://github.com/ThePrimeagen/init.lua"
      YT_URL="https://www.youtube.com/@ThePrimeagen"
      CF_CAT="Personal"
      PL_MAN="Packer"
      C_DESC="[Config from scratch](https://youtu.be/w7i4amO_zaE) by ThePrimeagen"
      C_INST="lazyman -w Primeagen"
      ;;
    Rafi)
      GH_URL="https://github.com/rafi/vim-config"
      DF_URL="https://dotfyle.com/rafi/vim-config"
      CF_CAT="Personal"
      C_DESC="[Extensible](https://github.com/rafi/vim-config#extending) Neovim configuration"
      C_INST="lazyman -w Rafi"
      ;;
    Roiz)
      GH_URL="https://github.com/MrRoiz/rnvim"
      CF_CAT="Personal"
      C_DESC="Just a random Neovim config found on Github, works well"
      C_INST="lazyman -w Roiz"
      ;;
    Simple)
      GH_URL="https://github.com/anthdm/.nvim"
      YT_URL="https://www.youtube.com/@anthonygg_"
      CF_CAT="Personal"
      PL_MAN="Packer"
      C_DESC="A remarkably effective Neovim configuration in only one small file. The author's [video description of this config](https://youtu.be/AzhSnM0uHvM)"
      C_INST="lazyman -w Simple"
      ;;
    Slydragonn)
      GH_URL="https://github.com/slydragonn/dotfiles"
      YT_URL="https://www.youtube.com/@slydragonn"
      CF_CAT="Personal"
      PL_MAN="Packer"
      C_DESC="[Introductory video](https://youtu.be/vkCnPdaRBE0)"
      C_INST="lazyman -w Slydragonn"
      ;;
    Spider)
      GH_URL="https://github.com/fearless-spider/FSAstroNvim"
      WS_URL="https://astronvim.com"
      YT_URL="https://www.youtube.com/@fearlessspider"
      CF_CAT="Personal"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="AstroNvim based configuration with animated status bar and smooth scroll. [Introductory video](https://youtu.be/Lj6MZsKl9MU)"
      C_INST="lazyman -w Spider"
      ;;
    Traap)
      GH_URL="https://github.com/Traap/nvim"
      WS_URL="https://www.lazyvim.org"
      YT_URL="https://www.youtube.com/@traap."
      CF_CAT="Personal"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="[Introductory video](https://youtu.be/aD9j6d9pgtc)"
      C_INST="lazyman -w Traap"
      ;;
    Wuelner)
      GH_URL="https://github.com/wuelnerdotexe/nvim"
      NC_URL="http://neovimcraft.com/plugin/wuelnerdotexe/nvim"
      DF_URL="https://dotfyle.com/wuelnerdotexe/nvim"
      CF_CAT="Personal"
      C_DESC="Wuelner's Neovim setup follows a well-defined philosophy governed by coherence and minimalism"
      C_INST="lazyman -w Wuelner"
      ;;
    xero)
      GH_URL="https://github.com/xero/dotfiles"
      NC_URL="http://neovimcraft.com/plugin/xero/dotfiles"
      DF_URL="https://dotfyle.com/xero/dotfiles-neovim-config-nvim"
      CF_CAT="Personal"
      C_DESC="Personal neovim configuration of [xero harrison](https://x-e.ro/). Xero is a fine example, as are many here, of the Unix Greybeard"
      C_INST="lazyman -w xero"
      ;;
    Xiao)
      GH_URL="https://github.com/onichandame/nvim-config"
      CF_CAT="Personal"
      C_DESC="Personal Neovim configuration of XiaoZhang"
      C_INST="lazyman -w Xiao"
      ;;
    BasicLsp)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/xx-basic-lsp"
      CF_CAT="Starter"
      C_DESC="Example lua configuration showing one way to setup LSP servers without plugins"
      C_INST="lazyman -x BasicLsp"
      ;;
    BasicMason)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/xx-mason"
      CF_CAT="Starter"
      C_DESC="Minimal setup with 'mason.nvim'"
      C_INST="lazyman -x BasicMason"
      ;;
    Extralight)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/xx-light"
      CF_CAT="Starter"
      C_DESC="Single file lightweight configuration focused on providing basic features"
      C_INST="lazyman -x Extralight"
      ;;
    LspCmp)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/xx-lsp-cmp"
      CF_CAT="Starter"
      C_DESC="Minimal setup with 'nvim-lspconfig' and 'nvim-cmp'"
      C_INST="lazyman -x LspCmp"
      ;;
    Minimal)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/00-minimal"
      CF_CAT="Starter"
      C_DESC="Small configuration without third party plugins"
      C_INST="lazyman -x Minimal"
      ;;
    StartBase)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/01-base"
      CF_CAT="Starter"
      C_DESC="Small configuration that includes a plugin manager"
      C_INST="lazyman -x StartBase"
      ;;
    Opinion)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/02-opinionated"
      CF_CAT="Starter"
      C_DESC="Includes a combination of popular plugins"
      C_INST="lazyman -x Opinion"
      ;;
    StartLsp)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/03-lsp"
      CF_CAT="Starter"
      C_DESC="Configures the built-in LSP client with autocompletion, based on 'Opinionated'"
      C_INST="lazyman -x StartLsp"
      ;;
    StartMason)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/04-lsp-installer"
      CF_CAT="Starter"
      C_DESC="Same as 'StartLsp' but uses [mason.nvim](https://github.com/williamboman/mason.nvim) to install language servers"
      C_INST="lazyman -x StartMason"
      ;;
    Modular)
      GH_URL="https://github.com/VonHeikemen/nvim-starter/tree/05-modular"
      CF_CAT="Starter"
      C_DESC="Same as 'StartMason' but everything is split in modules"
      C_INST="lazyman -x Modular"
      ;;
    2k)
      GH_URL="https://github.com/2KAbhishek/nvim2k"
      CF_CAT="Starter"
      C_DESC="[Video walkthrough](https://youtu.be/WfhylGI_F-o)"
      C_INST="lazyman -x 2k"
      ;;
    AstroNvimStart)
      GH_URL="https://github.com/doctorfree/AstroNvimStart"
      WS_URL="https://astronvim.com"
      CF_CAT="Starter"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="Default AstroNvim example configuration"
      C_INST="lazyman -x AstroNvimStart"
      ;;
    Basic)
      GH_URL="https://github.com/NvChad/basic-config"
      YT_URL="https://www.youtube.com/@siduck_og"
      CF_CAT="Starter"
      C_DESC="Starter config by the author of NvChad with [video tutorial](https://youtube.com/playlist?list=PLYVQrj2EVSUL1NqYn3jsIVXG3U9eWaMcq)"
      C_INST="lazyman -x Basic"
      ;;
    CodeArt)
      GH_URL="https://github.com/artart222/CodeArt"
      NC_URL="http://neovimcraft.com/plugin/artart222/CodeArt"
      DF_URL="https://dotfyle.com/plugins/artart222/CodeArt"
      CF_CAT="Starter"
      PL_MAN="Packer"
      C_DESC="Use Neovim as a general purpose IDE"
      C_INST="lazyman -x CodeArt"
      ;;
    Cosmic)
      GH_URL="https://github.com/CosmicNvim/CosmicNvim"
      WS_URL="https://cosmicnvim.vercel.app"
      NC_URL="http://neovimcraft.com/plugin/CosmicNvim/CosmicNvim"
      DF_URL="https://dotfyle.com/plugins/CosmicNvim/CosmicNvim"
      CF_CAT="Starter"
      C_DESC="Install 'Node.js', 'prettierd', and 'eslint_d'"
      C_INST="lazyman -x Cosmic"
      ;;
    Ember)
      GH_URL="https://github.com/danlikestocode/embervim"
      DF_URL="https://dotfyle.com/danlikestocode/embervim-nvim"
      CF_CAT="Starter"
      C_DESC="Dan is a computer science student at Arizona State University"
      C_INST="lazyman -x Ember"
      ;;
    Fennel)
      GH_URL="https://github.com/jhchabran/nvim-config"
      CF_CAT="Starter"
      PL_MAN="Packer"
      C_DESC="An opinionated configuration reminiscent of Doom-Emacs, written in Fennel"
      C_INST="lazyman -x Fennel"
      ;;
    HardHacker)
      GH_URL="https://github.com/hardhackerlabs/oh-my-nvim"
      CF_CAT="Starter"
      C_DESC="A theme-driven modern Neovim configuration"
      C_INST="lazyman -x HardHacker"
      ;;
    JustinLvim)
      GH_URL="https://github.com/justinsgithub/dotfiles"
      WS_URL="https://www.lunarvim.org"
      YT_URL="https://www.youtube.com/@justindevelops"
      CF_CAT="Personal"
      CF_TYP="[LunarVim](https://www.lunarvim.org)"
      C_DESC="LunarVim based Neovim configuration by Justin Angeles"
      C_INST="lazyman -w JustinLvim"
      ;;
    JustinNvim)
      GH_URL="https://github.com/justinsgithub/dotfiles"
      WS_URL="https://www.lazyvim.org"
      YT_URL="https://www.youtube.com/@justindevelops"
      CF_CAT="Personal"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="LazyVim based Neovim configuration by Justin Angeles. Justin has created a series of YouTube videos on configuring LazyVim: [Part 1 - Colorschemne](https://youtu.be/LznwxUSZz_8), [Part 2 - Options](https://youtu.be/I4flypojhUk), [Part 3 - Keymaps](https://youtu.be/Vc_5feJ9F5k), [Part 4 - Final Thoughts](https://youtu.be/eRQHWeJ3D7I)"
      C_INST="lazyman -w JustinNvim"
      ;;
    JustinOhMy)
      GH_URL="https://github.com/justinsgithub/Oh-My-LazyVim"
      WS_URL="https://www.lazyvim.org"
      YT_URL="https://www.youtube.com/@justindevelops"
      CF_CAT="Starter"
      CF_TYP="[LazyVim](https://lazyvim.github.io)"
      C_DESC="Full featured starter LazyVim based Neovim configuration by Justin Angeles. Justin has a [YouTube video](https://youtu.be/mpSuIfBKP-s) describing this config"
      C_INST="lazyman -x JustinOhMy"
      ;;
    Kabin)
      GH_URL="https://github.com/kabinspace/AstroNvim_user"
      WS_URL="https://astronvim.com"
      CF_CAT="Starter"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="One of the AstroNvim 'Black Belt' example advanced configurations"
      C_INST="lazyman -x Kabin"
      ;;
    Kickstart)
      GH_URL="https://github.com/doctorfree/kickstart.nvim"
      CF_CAT="Starter"
      CF_TYP="[Kickstart](https://github.com/nvim-lua/kickstart.nvim)"
      C_DESC="Popular starting point, small, single file, well documented, modular"
      C_INST="lazyman -k"
      ;;
    Lamia)
      GH_URL="https://github.com/A-Lamia/AstroNvim-conf"
      WS_URL="https://astronvim.com"
      CF_CAT="Starter"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="One of the AstroNvim 'Black Belt' example advanced configurations"
      C_INST="lazyman -x Lamia"
      ;;
    Micah)
      GH_URL="https://code.mehalter.com/AstroNvim_user"
      WS_URL="https://astronvim.com"
      CF_CAT="Starter"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="One of the AstroNvim 'Black Belt' example advanced configurations"
      C_INST="lazyman -x Micah"
      ;;
    Normal)
      GH_URL="https://github.com/NormalNvim/NormalNvim"
      NC_URL="http://neovimcraft.com/plugin/NormalNvim/NormalNvim"
      CF_CAT="Starter"
      CF_TYP="[AstroNvim](https://astronvim.com)"
      C_DESC="Based on AstroNvim with additional features"
      C_INST="lazyman -x Normal"
      ;;
    NvPak)
      GH_URL="https://github.com/Pakrohk-DotFiles/NvPak.git"
      NC_URL="http://neovimcraft.com/plugin/Pakrohk-DotFiles/NvPak"
      CF_CAT="Starter"
      C_DESC="PaK in Farsi means pure, something that is in its purest form"
      C_INST="lazyman -x NvPak"
      ;;
    Modern)
      GH_URL="https://github.com/alpha2phi/modern-neovim"
      CF_CAT="Starter"
      C_DESC="Configure Neovim as a modernized development environment. Details described in [an excellent Medium article](https://alpha2phi.medium.com/modern-neovim-configuration-recipes-d68b16537698)"
      C_INST="lazyman -x Modern"
      ;;
    pde)
      GH_URL="https://github.com/alpha2phi/neovim-pde"
      CF_CAT="Starter"
      C_DESC="Configure Neovim as a Personalized Development Environment (PDE)"
      C_INST="lazyman -x pde"
      ;;
    Rohit)
      GH_URL="https://github.com/rohit-kumar-j/nvim"
      CF_CAT="Starter"
      C_DESC="Good example use of [mason-tool-installer](https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim)"
      C_INST="lazyman -x Rohit"
      ;;
    Scratch)
      GH_URL="https://github.com/ngscheurich/nvim-from-scratch"
      CF_CAT="Starter"
      C_DESC="Jumping-off point for new Neovim users or those who have declared config bankruptcy"
      C_INST="lazyman -x Scratch"
      ;;
    SingleFile)
      GH_URL="https://github.com/creativenull/nvim-oneconfig"
      CF_CAT="Starter"
      PL_MAN="Packer"
      C_DESC="A clean, organized pre-configured Neovim configuration guide in a single 'init.lua'"
      C_INST="lazyman -x SingleFile"
      ;;
    *)
      nvimdir="nvim-${nvimconf}"
      CDIR="${HOME}/.config/${nvimdir}"
      [ -d "${CDIR}" ] || {
        nvimdir="${nvimconf}"
        CDIR="${HOME}/.config/${nvimdir}"
      }
      if [ -d "${CDIR}" ]
      then
        # Custom config, figure out its nature if we can
        if [ -f "${CDIR}/.git/config" ]
        then
          GH_URL=$(grep url "${CDIR}/.git/config" | head -1 | awk -F '=' ' { print $2 } ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
        else
          GH_URL=
        fi
        CF_CAT="Custom"
        CF_TYP="Unknown"
        if [ -f "${CDIR}/lazy-lock.json" ]
        then
          PL_MAN="Lazy"
        else
          pclua=$(find ${CDIR} -name packer_compiled.lua -print0)
          if [ "${pclua}" ]
          then
            PL_MAN="Packer"
          else
            if [ -f "${HOME}/.local/share/${nvimdir}/site/autoload/plug.vim" ]
            then
              PL_MAN="Plug"
            else
              if [ -d "${HOME}/.config/${nvimdir}/lua/spacevim" ]
              then
                PL_MAN="SP (dein)"
              else
                if [ -d "${HOME}/.config/${nvimdir}/.git/modules/mini" ]
                then
                  PL_MAN="Mini"
                else
                  PL_MAN="Unknown"
                fi
              fi
            fi
          fi
        fi
      else
        echo "Unknown Lazyman configuration name: ${nvimconf}"
        echo "Exiting"
        exit 1
      fi
      ;;
  esac

  echo "# ${nvimconf} Neovim Configuration Information" > "${OUTF}"
  echo "" >> "${OUTF}"
  [ "${C_DESC}" ] && {
    echo "${C_DESC}" >> "${OUTF}"
    echo "" >> "${OUTF}"
  }
  [ "${C_INST}" ] && {
    echo "- Install and initialize: **\`${C_INST}\`**" >> "${OUTF}"
  }
  case ${CF_CAT} in
    Base)
      caturl="https://lazyman.dev/configurations/#base-configurations"
      ;;
    Custom)
      caturl="https://lazyman.dev/configurations/#custom-configurations"
      ;;
    Default)
      caturl="https://lazyman.dev/features"
      ;;
    Language)
      caturl="https://lazyman.dev/configurations/#language-configurations"
      ;;
    Personal)
      caturl="https://lazyman.dev/configurations/#personal-configurations"
      ;;
    Starter)
      caturl="https://lazyman.dev/configurations/#starter-configurations"
      ;;
    *)
      caturl=
      ;;
  esac
  if [ "${caturl}" ]
  then
    echo "- Configuration category: [${CF_CAT}](${caturl})" >> "${OUTF}"
  else
    echo "- Configuration category: ${CF_CAT}" >> "${OUTF}"
  fi
  echo "- Base configuration:     ${CF_TYP}" >> "${OUTF}"
  case ${PL_MAN} in
    Lazy)
      plurl="https://github.com/folke/lazy.nvim"
      ;;
    Mini)
      plurl="https://github.com/echasnovski/mini.nvim"
      ;;
    Packer)
      plurl="https://github.com/wbthomason/packer.nvim"
      ;;
    Plug)
      plurl="https://github.com/junegunn/vim-plug"
      ;;
    SP*)
      plurl="https://github.com/Shougo/dein.vim"
      ;;
    *)
      plurl=
      ;;
  esac
  if [ "${plurl}" ]
  then
    echo "- Plugin manager:         [${PL_MAN}](${plurl})" >> "${OUTF}"
  else
    echo "- Plugin manager:         ${PL_MAN}" >> "${OUTF}"
  fi
  echo "- Installation location:  **\`~/.config/nvim-${nvimconf}\`**" >> "${OUTF}"
  echo "" >> "${OUTF}"
  [ "${GH_URL}" ] && {
    echo "## Git repository" >> "${OUTF}"
    echo "" >> "${OUTF}"
    echo "[${GH_URL}](${GH_URL})" >> "${OUTF}"
    echo "" >> "${OUTF}"
  }
  [ "${NC_URL}" ] && {
    echo "## Neovimcraft entry" >> "${OUTF}"
    echo "" >> "${OUTF}"
    echo "[${NC_URL}](${NC_URL})" >> "${OUTF}"
    echo "" >> "${OUTF}"
  }
  [ "${DF_URL}" ] && {
    echo "## Dotfyle entry" >> "${OUTF}"
    echo "" >> "${OUTF}"
    echo "[${DF_URL}](${DF_URL})" >> "${OUTF}"
    echo "" >> "${OUTF}"
  }
  [ "${WS_URL}" ] && {
    echo "## Website" >> "${OUTF}"
    echo "" >> "${OUTF}"
    echo "[${WS_URL}](${WS_URL})" >> "${OUTF}"
    echo "" >> "${OUTF}"
  }
  [ "${YT_URL}" ] && {
    echo "## YouTube channel" >> "${OUTF}"
    echo "" >> "${OUTF}"
    echo "[${YT_URL}](${YT_URL})" >> "${OUTF}"
    echo "" >> "${OUTF}"
  }
  echo "|  Jump  |   to   | Keymaps |" >> "${OUTF}"
  echo "| :----: | :----: | :-----: |" >> "${OUTF}"
  echo "| [Normal mode keymaps](#normal-mode-keymaps) | [Visual mode keymaps](#visual-mode-keymaps) | [Operator mode keymaps](#operator-mode-keymaps) |" >> "${OUTF}"
  echo "" >> "${OUTF}"
  get_plugins "${nvimconf}" "${OUTF}" "${PL_MAN}"
  [ -x "${KEYMAP}" ] && {
    "${KEYMAP}" ${debug} "${nvimconf}" "${OUTF}"
  }
  [ "${have_pandoc}" ] && {
    pandoc -t html \
           --metadata title="Lazyman config: ${nvimconf}" \
           --standalone \
           --css="${TBLCSS}" \
           -o "${HTML}" "${OUTF}"
  }
}

all=
debug=
install=
have_pandoc=$(type -p pandoc)
while getopts "adiu" flag; do
    case $flag in
        a)
            all=1
            ;;
        d)
            debug="-d"
            ;;
        i)
            install="-i"
            ;;
        u)
            usage
            ;;
    esac
done
shift $(( OPTIND - 1 ))

[ "${all}" ] && {
  for conf in ${CF_NAMES}
  do
    printf "\nGenerating info doc for ${conf}"
    make_info ${install} ${conf}
  done
  exit 0
}

checkdir="nvim-Lazyman"
[ "$1" ] && checkdir="$1"
conf=$(echo "${checkdir}" | sed -e "s/^nvim-//")
make_info ${install} ${conf}