test 0.12.1 config
This commit is contained in:
353
nvim-old/.config/nvim/snippets/bash.lua
Normal file
353
nvim-old/.config/nvim/snippets/bash.lua
Normal file
@@ -0,0 +1,353 @@
|
||||
-- Lua snippets
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
local f = ls.function_node
|
||||
local c = ls.choice_node
|
||||
local d = ls.dynamic_node
|
||||
local sn = ls.snippet_node
|
||||
local fmt = require("luasnip.extras.fmt").fmt
|
||||
local rep = require("luasnip.extras").rep
|
||||
|
||||
-- Return a table of snippets for Bash
|
||||
-- stylua: ignore start
|
||||
return {
|
||||
-- Shebang
|
||||
s("shebang", {
|
||||
t("#!/usr/bin/env bash"),
|
||||
}),
|
||||
|
||||
-- Bash strict mode
|
||||
s("strict", fmt([[
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
]], {})),
|
||||
|
||||
-- Function definition
|
||||
s("func", fmt([[
|
||||
{}() {{
|
||||
{}
|
||||
}}
|
||||
]], {
|
||||
i(1, "function_name"),
|
||||
i(2, "# function body"),
|
||||
})),
|
||||
|
||||
-- If statement
|
||||
s("if", fmt([[
|
||||
if [ {} ]; then
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "condition"),
|
||||
i(2, "# code"),
|
||||
})),
|
||||
|
||||
-- If-else statement
|
||||
s("ifelse", fmt([[
|
||||
if [ {} ]; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "condition"),
|
||||
i(2, "# if code"),
|
||||
i(3, "# else code"),
|
||||
})),
|
||||
|
||||
-- If-elif-else statement
|
||||
s("ifelif", fmt([[
|
||||
if [ {} ]; then
|
||||
{}
|
||||
elif [ {} ]; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "condition1"),
|
||||
i(2, "# if code"),
|
||||
i(3, "condition2"),
|
||||
i(4, "# elif code"),
|
||||
i(5, "# else code"),
|
||||
})),
|
||||
|
||||
-- For loop
|
||||
s("for", fmt([[
|
||||
for {} in {}; do
|
||||
{}
|
||||
done
|
||||
]], {
|
||||
i(1, "item"),
|
||||
i(2, "items"),
|
||||
i(3, "# loop body"),
|
||||
})),
|
||||
|
||||
-- For loop with range
|
||||
s("fori", fmt([[
|
||||
for ((i={}; i<{}; i++)); do
|
||||
{}
|
||||
done
|
||||
]], {
|
||||
i(1, "0"),
|
||||
i(2, "10"),
|
||||
i(3, "# loop body"),
|
||||
})),
|
||||
|
||||
-- While loop
|
||||
s("while", fmt([[
|
||||
while [ {} ]; do
|
||||
{}
|
||||
done
|
||||
]], {
|
||||
i(1, "condition"),
|
||||
i(2, "# loop body"),
|
||||
})),
|
||||
|
||||
-- Until loop
|
||||
s("until", fmt([[
|
||||
until [ {} ]; do
|
||||
{}
|
||||
done
|
||||
]], {
|
||||
i(1, "condition"),
|
||||
i(2, "# loop body"),
|
||||
})),
|
||||
|
||||
-- Case statement
|
||||
s("case", fmt([[
|
||||
case {} in
|
||||
{})
|
||||
{}
|
||||
;;
|
||||
{})
|
||||
{}
|
||||
;;
|
||||
*)
|
||||
{}
|
||||
;;
|
||||
esac
|
||||
]], {
|
||||
i(1, "variable"),
|
||||
i(2, "pattern1"),
|
||||
i(3, "# code for pattern1"),
|
||||
i(4, "pattern2"),
|
||||
i(5, "# code for pattern2"),
|
||||
i(6, "# default code"),
|
||||
})),
|
||||
|
||||
-- Read input
|
||||
s("read", fmt([[
|
||||
read -p "{}" {}
|
||||
]], {
|
||||
i(1, "Enter value: "),
|
||||
i(2, "variable"),
|
||||
})),
|
||||
|
||||
-- Command substitution
|
||||
s("cmd", fmt([[
|
||||
{}=$({}$)
|
||||
]], {
|
||||
i(1, "result"),
|
||||
i(2, "command"),
|
||||
})),
|
||||
|
||||
-- Variable declaration
|
||||
s("var", fmt([[
|
||||
{}="{}"
|
||||
]], {
|
||||
i(1, "variable"),
|
||||
i(2, "value"),
|
||||
})),
|
||||
|
||||
-- Array declaration
|
||||
s("array", fmt([[
|
||||
{}=({})
|
||||
]], {
|
||||
i(1, "array"),
|
||||
i(2, "item1 item2 item3"),
|
||||
})),
|
||||
|
||||
-- Check if command exists
|
||||
s("cmdexists", fmt([[
|
||||
if command -v {} &> /dev/null; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "command"),
|
||||
i(2, "# command exists"),
|
||||
i(3, "# command does not exist"),
|
||||
})),
|
||||
|
||||
-- Check if file exists
|
||||
s("fileexists", fmt([[
|
||||
if [ -f {} ]; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "file"),
|
||||
i(2, "# file exists"),
|
||||
i(3, "# file does not exist"),
|
||||
})),
|
||||
|
||||
-- Check if directory exists
|
||||
s("direxists", fmt([[
|
||||
if [ -d {} ]; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "directory"),
|
||||
i(2, "# directory exists"),
|
||||
i(3, "# directory does not exist"),
|
||||
})),
|
||||
|
||||
-- Check if variable is empty
|
||||
s("isempty", fmt([[
|
||||
if [ -z "${{{}}}" ]; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "variable"),
|
||||
i(2, "# variable is empty"),
|
||||
i(3, "# variable is not empty"),
|
||||
})),
|
||||
|
||||
-- Check if variable is not empty
|
||||
s("isnotempty", fmt([[
|
||||
if [ -n "${{{}}}" ]; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "variable"),
|
||||
i(2, "# variable is not empty"),
|
||||
i(3, "# variable is empty"),
|
||||
})),
|
||||
|
||||
-- Error handling
|
||||
s("error", fmt([[
|
||||
error() {{
|
||||
echo "[ERROR] $1" >&2
|
||||
exit 1
|
||||
}}
|
||||
]], {})),
|
||||
|
||||
-- Parse command line arguments
|
||||
s("getopts", fmt([[
|
||||
while getopts ":{}:" opt; do
|
||||
case $opt in
|
||||
{})
|
||||
{}
|
||||
;;
|
||||
{})
|
||||
{}
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
exit 1
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
]], {
|
||||
i(1, "ab:c:"),
|
||||
i(2, "a"),
|
||||
i(3, "# handle option a"),
|
||||
i(4, "b"),
|
||||
i(5, "# handle option b with value in $OPTARG"),
|
||||
})),
|
||||
|
||||
-- Trap signals
|
||||
s("trap", fmt([[
|
||||
trap '{}' {}
|
||||
]], {
|
||||
i(1, "echo 'Caught signal, cleaning up...; exit 1'"),
|
||||
i(2, "SIGINT SIGTERM"),
|
||||
})),
|
||||
|
||||
-- Cleanup function with trap
|
||||
s("cleanup", fmt([[
|
||||
cleanup() {{
|
||||
{}
|
||||
}}
|
||||
|
||||
trap cleanup EXIT
|
||||
]], {
|
||||
i(1, "# cleanup code here"),
|
||||
})),
|
||||
|
||||
-- Redirect stdout and stderr to file
|
||||
s("redirect", fmt([[
|
||||
{} > {} 2>&1
|
||||
]], {
|
||||
i(1, "command"),
|
||||
i(2, "logfile.log"),
|
||||
})),
|
||||
|
||||
-- Check exit status
|
||||
s("checkstatus", fmt([[
|
||||
if [ $? -eq 0 ]; then
|
||||
{}
|
||||
else
|
||||
{}
|
||||
fi
|
||||
]], {
|
||||
i(1, "# success"),
|
||||
i(2, "# failure"),
|
||||
})),
|
||||
|
||||
-- Here document
|
||||
s("heredoc", fmt([[
|
||||
cat << EOF > {}
|
||||
{}
|
||||
EOF
|
||||
]], {
|
||||
i(1, "output.txt"),
|
||||
i(2, "content goes here"),
|
||||
})),
|
||||
|
||||
-- Here string
|
||||
s("herestring", fmt([[
|
||||
{} <<< "{}"
|
||||
]], {
|
||||
i(1, "command"),
|
||||
i(2, "string"),
|
||||
})),
|
||||
|
||||
-- Script usage/help
|
||||
s("usage", fmt([[
|
||||
usage() {{
|
||||
cat << EOF
|
||||
Usage: $(basename $0) [options] <arguments>
|
||||
|
||||
Options:
|
||||
-h, --help Show this help message and exit
|
||||
-v, --verbose Enable verbose output
|
||||
{}
|
||||
|
||||
Examples:
|
||||
$(basename $0) {}
|
||||
EOF
|
||||
exit ${1:-0}
|
||||
}}
|
||||
]], {
|
||||
i(1, "-o, --option Description of option"),
|
||||
i(2, "example_argument"),
|
||||
})),
|
||||
}
|
||||
-- stylua: ignore end
|
||||
Reference in New Issue
Block a user