summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/essentials/shell/functions.sh14
m---------config/essentials/vis/plugins/vis-cursors0
m---------config/essentials/vis/plugins/vis-title0
-rw-r--r--config/essentials/vis/themes/nord.lua123
-rw-r--r--config/essentials/vis/visrc.lua84
5 files changed, 221 insertions, 0 deletions
diff --git a/config/essentials/shell/functions.sh b/config/essentials/shell/functions.sh
index 945b716..976db1e 100644
--- a/config/essentials/shell/functions.sh
+++ b/config/essentials/shell/functions.sh
@@ -371,3 +371,17 @@ ffconcat () {
ffmpeg -y -f concat -safe 0 -i $tmp -c copy "$1"
rm $tmp
}
+
+# wrap ssh and add key if exists
+ssh() {
+ if [ "$#" -gt 1 ]
+ then
+ /usr/bin/ssh $@
+ return
+ fi
+
+ grep -E "Host\s+$1" $HOME/.ssh/config > /dev/null 2>&1 &&
+ keyadd "$1" > /dev/null 2>&1
+ /usr/bin/ssh "$1"
+}
+
diff --git a/config/essentials/vis/plugins/vis-cursors b/config/essentials/vis/plugins/vis-cursors
new file mode 160000
+Subproject f86c584fc2d4a2bab47df0cd5d187dd81fb7185
diff --git a/config/essentials/vis/plugins/vis-title b/config/essentials/vis/plugins/vis-title
new file mode 160000
+Subproject 9c808f7e71b43aca31dee8553dcfce2214d7fc4
diff --git a/config/essentials/vis/themes/nord.lua b/config/essentials/vis/themes/nord.lua
new file mode 100644
index 0000000..a21f0fa
--- /dev/null
+++ b/config/essentials/vis/themes/nord.lua
@@ -0,0 +1,123 @@
+-- base16-vis (https://github.com/pshevtsov/base16-vis)
+-- by Petr Shevtsov
+-- Nord scheme by arcticicestudio
+
+local lexers = vis.lexers
+
+local colors = {
+ ['bg'] = '#2E3440',
+ ['black'] = '#3B4252',
+ ['light_black'] = '#434C5E',
+ ['dark_gray'] = '#4C566A',
+ ['gray'] = '#D8DEE9',
+ ['light_gray'] = '#616E88',
+ ['fg'] = '#E5E9F0',
+ ['white'] = '#ECEFF4',
+ ['turquoise'] = '#8FBCBB',
+ ['light_cyan'] = '#88C0D0',
+ ['cyan'] = '#81A1C1',
+ ['blue'] = '#5E81AC',
+ ['red'] = '#BF616A',
+ ['orange'] = '#D08770',
+ ['yellow'] = '#EBCB8B',
+ ['green'] = '#A3BE8C',
+ ['magenta'] = '#B48EAD',
+}
+
+lexers.colors = colors
+
+local fg = 'fore:'..colors.fg
+local bg = 'back:'..colors.bg
+
+lexers.STYLE_DEFAULT = bg..','..fg
+lexers.STYLE_NOTHING = bg
+lexers.STYLE_CLASS = 'fore:'..colors.blue
+lexers.STYLE_COMMENT = 'fore:'..colors.light_gray..',italics'
+lexers.STYLE_CONSTANT = 'fore:'..colors.cyan
+lexers.STYLE_DEFINITION = 'fore:'..colors.green
+lexers.STYLE_ERROR = 'fore:'..colors.light_cyan..',italics'
+lexers.STYLE_FUNCTION = 'fore:'..colors.light_cyan..',bold'
+lexers.STYLE_HEADING = 'fore:'..colors.bg..',back:'..colors.yellow
+lexers.STYLE_KEYWORD = 'fore:'..colors.cyan..',bold'
+lexers.STYLE_LABEL = 'fore:'..colors.blue
+lexers.STYLE_NUMBER = 'fore:'..colors.magenta
+lexers.STYLE_OPERATOR = 'fore:'..colors.light_cyan
+lexers.STYLE_REGEX = 'fore:'..colors.orange
+lexers.STYLE_STRING = 'fore:'..colors.green
+lexers.STYLE_PREPROCESSOR = 'fore:'..colors.blue
+lexers.STYLE_TAG = 'fore:'..colors.blue
+lexers.STYLE_TYPE = 'fore:'..colors.cyan
+lexers.STYLE_VARIABLE = 'fore:'..colors.cyan..',bold'
+lexers.STYLE_WHITESPACE = 'fore:'..colors.light_black
+lexers.STYLE_EMBEDDED = 'fore:'..colors.magenta
+lexers.STYLE_IDENTIFIER = fg..',bold'
+
+lexers.STYLE_LINENUMBER = 'fore:'..colors.light_black..',back:'..colors.bg
+lexers.STYLE_CURSOR = 'fore:'..colors.bg..',back:'..colors.fg
+lexers.STYLE_CURSOR_PRIMARY = 'fore:'..colors.bg..',back:'..colors.fg
+lexers.STYLE_CURSOR_LINE = 'back:'..colors.black
+lexers.STYLE_COLOR_COLUMN = 'back:'..colors.black
+lexers.STYLE_SELECTION = 'back:'..colors.light_black
+lexers.STYLE_STATUS = 'fore:'..colors.gray..',back:'..colors.black
+lexers.STYLE_STATUS_FOCUSED = 'fore:'..colors.cyan..',back:'..colors.black
+lexers.STYLE_SEPARATOR = lexers.STYLE_DEFAULT
+lexers.STYLE_INFO = 'fore:default,back:default,bold'
+lexers.STYLE_EOF = ''
+
+-- lexer specific styles
+
+-- Diff
+lexers.STYLE_ADDITION = 'back:'..colors.green..',fore:'..colors.bg
+lexers.STYLE_DELETION = 'back:'..colors.red..',fore:'..colors.bg
+lexers.STYLE_CHANGE = 'back:'..colors.yellow..',fore:'..colors.bg
+
+-- CSS
+lexers.STYLE_PROPERTY = lexers.STYLE_ATTRIBUTE
+lexers.STYLE_PSEUDOCLASS = ''
+lexers.STYLE_PSEUDOELEMENT = ''
+
+-- HTML
+lexers.STYLE_TAG_UNKNOWN = lexers.STYLE_TAG .. ',italics'
+lexers.STYLE_ATTRIBUTE_UNKNOWN = lexers.STYLE_ATTRIBUTE .. ',italics'
+
+-- Latex, TeX, and Texinfo
+lexers.STYLE_COMMAND = lexers.STYLE_KEYWORD
+lexers.STYLE_COMMAND_SECTION = lexers.STYLE_CLASS
+lexers.STYLE_ENVIRONMENT = lexers.STYLE_TYPE
+lexers.STYLE_ENVIRONMENT_MATH = lexers.STYLE_NUMBER
+
+-- Makefile
+lexers.STYLE_TARGET = ''
+
+-- Markdown
+lexers.STYLE_HR = ''
+lexers.STYLE_HEADING_H1 = 'fore:'..colors.orange..',bold'
+lexers.STYLE_HEADING_H2 = 'fore:'..colors.red..',bold'
+for i = 3,6 do lexers['STYLE_HEADING_H'..i] = 'fore:'..colors.magenta..',bold' end
+lexers.STYLE_BOLD = 'bold'
+lexers.STYLE_ITALIC = 'italics'
+lexers.STYLE_LIST = lexers.STYLE_KEYWORD
+lexers.STYLE_LINK = 'fore:'..colors.yellow..',italics'
+lexers.STYLE_REFERENCE = 'fore:'..colors.blue
+lexers.STYLE_CODE = 'back:'..colors.black..',fore:'..colors.turquoise
+
+-- Output
+lexers.STYE_FILENAME = 'bold'
+lexers.STYLE_LINE = 'fore:'..colors.green
+lexers.STYLE_COLUMN = 'underline'
+lexers.STYLE_MESSAGE = ''
+
+-- Python
+lexers.STYLE_KEYWORD_SOFT = ''
+
+-- YAML
+lexers.STYLE_ERROR_INDENT = 'back:'..colors.red
+
+
+-- GO
+lexers.STYLE_CONSTANT_BUILTIN = 'fore:'..colors.yellow
+lexers.STYLE_FUNCTION_METHOD = 'fore:'..colors.light_cyan
+lexers.STYLE_FUNCTION_BUILTIN = 'fore:'..colors.light_cyan..',bold'
+
+-- Lua
+lexers.STYLE_ATTRIBUTE = 'fore:'..colors.yellow..',bold'
diff --git a/config/essentials/vis/visrc.lua b/config/essentials/vis/visrc.lua
new file mode 100644
index 0000000..a424613
--- /dev/null
+++ b/config/essentials/vis/visrc.lua
@@ -0,0 +1,84 @@
+------------------------------------
+--- LIBRARIES
+------------------------------------
+
+require('vis')
+require('plugins/vis-cursors')
+require('plugins/vis-title')
+
+------------------------------------
+--- EVENTS
+------------------------------------
+
+vis.events.subscribe(vis.events.INIT, function()
+ vis.options.ignorecase = true
+ vis.options.autoindent = true
+ vis.options.shell = "/bin/sh"
+ theme = "nord"
+ vis:command("set theme " .. theme)
+end)
+
+vis.events.subscribe(vis.events.WIN_OPEN, function(win) -- luacheck: no unused args
+ win.options.relativenumbers = true
+end)
+
+------------------------------------
+--- FUNCTIONS
+------------------------------------
+
+function map_cmd(mode, map, command, help)
+ vis:map(mode, map, function()
+ vis:command(command)
+ end, help)
+end
+
+function map_cmd_restore(mode, map, command, help)
+ vis:map(mode, map, function()
+ if (mode == vis.modes.INSERT) then
+ vis:feedkeys("<Escape>")
+ end
+
+ vis:feedkeys("m")
+ vis:command(command)
+ vis:feedkeys("M")
+
+ if (mode == vis.modes.INSERT) then
+ vis:feedkeys("i")
+ end
+ end, help)
+end
+
+------------------------------------
+--- VARIABLES
+------------------------------------
+
+local m = vis.modes
+
+------------------------------------
+--- COMMANDS
+------------------------------------
+
+vis:command_register("Q", function(argv, force, win, selection, range)
+ vis:command("qa!")
+end, "Quit all")
+
+-------------------------------------
+--- MAPPINGS
+-------------------------------------
+
+map_cmd_restore(m.NORMAL, " r", "e $vis_filepath", "Reload active file")
+
+map_cmd(m.NORMAL, " c", "e ~/.config/vis/visrc.lua", "Edit config file")
+map_cmd(m.NORMAL, " q", "q!", "Quit (force)")
+map_cmd(m.NORMAL, " s", "!doas vis $vis_filepath", "Edit as superuser")
+map_cmd(m.NORMAL, " w", "w", "Write")
+map_cmd(m.NORMAL, " x", "!chmod u+x $vis_filepath", "Make active file executable")
+
+vis:map(m.NORMAL, " eh", function()
+ vis:command("!lowdown $vis_filepath > ${vis_filepath%.md}.html")
+ vis:info("exported.")
+end, "Export markdown to html")
+vis:map(m.NORMAL, " nl", function() vis:feedkeys(":<seq -f '%0.0f. ' 1 ") end, "Insert numbered list")
+
+
+-- select markdown list element: ,x/^(\d+\.|[-*])\s+.+\n(^ .+\n)*/