Reformated files

This commit is contained in:
Kristofers Solo 2022-06-01 15:09:09 +00:00
parent da5f9ad0f1
commit 897fbd4666
15 changed files with 1577 additions and 1644 deletions

View File

@ -29,12 +29,15 @@
"terminal.integrated.fontFamily": "JetBrainsMono NF",
"terminal.integrated.defaultProfile.linux": "zsh",
"cSpell.userWords": [
"alacritty",
"blit",
"Cagulis",
"Cena",
"cenu",
"cirala",
"dirnx",
"dirny",
"dotfiles",
"grafiki",
"Istabu",
"Izvietošanas",
@ -42,10 +45,14 @@
"Kristiāns",
"Kristofers",
"Kvadratūra",
"lfimg",
"nsxiv",
"nvim",
"pathlib",
"pygame",
"roboto",
"Sērija",
"Solorice",
"Stāvs",
"xlabel",
"xticks",
@ -56,7 +63,10 @@
"suppressLineUncommittedWarning": true
},
"vsicons.dontShowNewVersionMessage": true,
"indentRainbow.excludedLanguages": ["plaintext", "django-txt"],
"indentRainbow.excludedLanguages": [
"plaintext",
"django-txt"
],
"[markdown]": {
"editor.defaultFormatter": "yzhang.markdown-all-in-one"
},
@ -109,5 +119,6 @@
]
},
"workbench.colorTheme": "Dracula Soft",
"workbench.iconTheme": "material-icon-theme"
"workbench.iconTheme": "material-icon-theme",
"Lua.telemetry.enable": true
}

View File

@ -39,8 +39,6 @@ window:
columns: 0
lines: 0
opacity: 0.9
# Window position (changes require restart)
#
@ -72,9 +70,6 @@ window:
# - buttonless: Title bar, transparent background and no title bar buttons
decorations: none
# Startup Mode (changes require restart)
#
# Values for `startup_mode`:
@ -94,10 +89,10 @@ window:
# Window class (Linux/BSD only):
# class:
# Application instance name
# instance: Alacritty
# General application class
# general: Alacritty
# Application instance name
# instance: Alacritty
# General application class
# general: Alacritty
# GTK theme variant (Linux/BSD only)
#
@ -191,8 +186,8 @@ draw_bold_text_with_bright_colors: true
colors:
# Default colors
primary:
background: '#1d1f21'
foreground: '#c5c8c6'
background: "#1d1f21"
foreground: "#c5c8c6"
# Bright and dim foreground colors
#
@ -200,8 +195,8 @@ colors:
# present. If the bright foreground color is not set, or
# `draw_bold_text_with_bright_colors` is `false`, the normal foreground
# color will be used.
dim_foreground: '#828482'
bright_foreground: '#eaeaea'
dim_foreground: "#828482"
bright_foreground: "#eaeaea"
# Cursor colors
#
@ -237,8 +232,8 @@ colors:
# background: '#000000'
bar:
background: '#282828'
foreground: '#EBEBE9'
background: "#282828"
foreground: "#EBEBE9"
# Keyboard regex hints
hints:
@ -247,16 +242,16 @@ colors:
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
start:
foreground: '#1d1f21'
background: '#e9ff5e'
foreground: "#1d1f21"
background: "#e9ff5e"
# All characters after the first one in the hint label
#
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
end:
foreground: '#e9ff5e'
background: '#1d1f21'
foreground: "#e9ff5e"
background: "#1d1f21"
# Line indicator
#
@ -280,39 +275,39 @@ colors:
# Normal colors
normal:
black: '#313539'
red: '#b02626'
green: '#40a62f'
yellow: '#f1e635'
blue: '#314ad0'
magenta: '#b30ad0'
cyan: '#32d0fc'
white: '#acadb1'
black: "#313539"
red: "#b02626"
green: "#40a62f"
yellow: "#f1e635"
blue: "#314ad0"
magenta: "#b30ad0"
cyan: "#32d0fc"
white: "#acadb1"
# Bright colors
bright:
black: '#717174'
red: '#b02626'
green: '#40a62f'
yellow: '#f1e635'
blue: '#314ad0'
magenta: '#b30ad0'
cyan: '#32d0fc'
white: '#acadb1'
black: "#717174"
red: "#b02626"
green: "#40a62f"
yellow: "#f1e635"
blue: "#314ad0"
magenta: "#b30ad0"
cyan: "#32d0fc"
white: "#acadb1"
# Dim colors
#
# If the dim colors are not set, they will be calculated automatically based
# on the `normal` colors.
dim:
black: '#676f78'
red: '#b55454'
green: '#78a670'
yellow: '#faf380'
blue: '#707fd0'
magenta: '#c583d0'
cyan: '#8adaf1'
white: '#e0e3e7'
black: "#676f78"
red: "#b55454"
green: "#78a670"
yellow: "#faf380"
blue: "#707fd0"
magenta: "#c583d0"
cyan: "#8adaf1"
white: "#e0e3e7"
# Indexed Colors
#
@ -335,44 +330,42 @@ colors:
#
# The bell is rung every time the BEL control character is received.
#bell:
# Visual Bell Animation
#
# Animation effect for flashing the screen when the visual bell is rung.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#animation: EaseOutExpo
# Visual Bell Animation
#
# Animation effect for flashing the screen when the visual bell is rung.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#animation: EaseOutExpo
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
# disable the visual bell animation.
#duration: 0
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
# disable the visual bell animation.
#duration: 0
# Visual bell animation color.
#color: '#ffffff'
# Visual bell animation color.
#color: '#ffffff'
# Bell Command
#
# This program is executed whenever the bell is rung.
#
# When set to `command: None`, no command will be executed.
#
# Example:
# command:
# program: notify-send
# args: ["Hello, World!"]
#
#command: None
# Bell Command
#
# This program is executed whenever the bell is rung.
#
# When set to `command: None`, no command will be executed.
#
# Example:
# command:
# program: notify-send
# args: ["Hello, World!"]
#
#command: None
selection:
# This string contains all characters that are used as separators for
@ -435,7 +428,7 @@ cursor:
# - (Linux/BSD) user login shell
# - (Windows) powershell
shell:
program: /bin/zsh
program: /bin/zsh
# args:
# - --login
@ -452,60 +445,60 @@ shell:
#ipc_socket: true
#mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
#double_click: { threshold: 300 }
#triple_click: { threshold: 300 }
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
#double_click: { threshold: 300 }
#triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false
# If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false
# Regex hints
#
# Terminal hints can be used to find text in the visible part of the terminal
# and pipe it to other applications.
#hints:
# Keys used for the hint labels.
#alphabet: "jfkdls;ahgurieowpq"
# Keys used for the hint labels.
#alphabet: "jfkdls;ahgurieowpq"
# List with all available hints
#
# Each hint must have a `regex` and either an `action` or a `command` field.
# The fields `mouse`, `binding` and `post_processing` are optional.
#
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
#
# The `mouse.enabled` field controls if the hint should be underlined while
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
#
# If the `post_processing` field is set to `true`, heuristics will be used to
# shorten the match if there are characters likely not to be part of the hint
# (e.g. a trailing `.`). This is most useful for URIs.
#
# Values for `action`:
# - Copy
# Copy the hint's text to the clipboard.
# - Paste
# Paste the hint's text to the terminal or search.
# - Select
# Select the hint's text.
# - MoveViModeCursor
# Move the vi mode cursor to the beginning of the hint.
#enabled:
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
# command: xdg-open
# post_processing: true
# mouse:
# enabled: true
# mods: None
# binding:
# key: U
# mods: Control|Shift
# List with all available hints
#
# Each hint must have a `regex` and either an `action` or a `command` field.
# The fields `mouse`, `binding` and `post_processing` are optional.
#
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
#
# The `mouse.enabled` field controls if the hint should be underlined while
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
#
# If the `post_processing` field is set to `true`, heuristics will be used to
# shorten the match if there are characters likely not to be part of the hint
# (e.g. a trailing `.`). This is most useful for URIs.
#
# Values for `action`:
# - Copy
# Copy the hint's text to the clipboard.
# - Paste
# Paste the hint's text to the terminal or search.
# - Select
# Select the hint's text.
# - MoveViModeCursor
# Move the vi mode cursor to the beginning of the hint.
#enabled:
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
# command: xdg-open
# post_processing: true
# mouse:
# enabled: true
# mods: None
# binding:
# key: U
# mods: Control|Shift
# Mouse bindings
#
@ -536,8 +529,8 @@ shell:
#
# - `mods` (see key bindings)
mouse_bindings:
# - { mouse: Right, action: ExpandSelection }
- { mouse: Middle, mode: ~Vi, action: PasteSelection }
# - { mouse: Right, action: ExpandSelection }
- { mouse: Middle, mode: ~Vi, action: PasteSelection }
# Key bindings
#
@ -750,17 +743,17 @@ key_bindings:
#- { key: Copy, action: Copy }
# - { key: L, mods: Control, action: clear }
#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
- { key: Up, mods: Shift, mode: ~Alt, action: ScrollPageUp }
- { key: Down, mods: Shift, mode: ~Alt, action: ScrollPageDown }
- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop }
- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
- { key: Up, mods: Shift, mode: ~Alt, action: ScrollPageUp }
- { key: Down, mods: Shift, mode: ~Alt, action: ScrollPageDown }
- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop }
- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
# - { key: Delete, actions: Del }
# - { key: Key9, mods: Control|Shift, action: CreateNewWindow, }
# Vi Mode
# - { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
# - { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
# - { key: Escape, mode: ~Search, action: ToggleViMode }
# - { key: Escape, mode: ~Search, action: ToggleViMode }
# - { key: Escape, mode: Vi|~Search, action: ClearSelection }
# - { key: I, mode: Vi|~Search, action: ToggleViMode }
# - { key: I, mode: Vi|~Search, action: ScrollToBottom }
@ -821,21 +814,21 @@ key_bindings:
#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
# (Windows, Linux, and BSD only)
- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
#- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
# - { key: Plus, mods: Control, action: IncreaseFontSize }
- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
- { key: Q, mods: Control|Shift, action: Quit }
- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
- { key: Q, mods: Control|Shift, action: Quit }
# (Windows only)
- { key: F11, action: ToggleFullscreen }
- { key: F11, action: ToggleFullscreen }
# (macOS only)
#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
@ -858,24 +851,23 @@ key_bindings:
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
#- { key: F, mods: Command, mode: ~Search, action: SearchForward }
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
#debug:
# Display the time it takes to redraw each frame.
#render_timer: false
# Display the time it takes to redraw each frame.
#render_timer: false
# Keep the log file after quitting Alacritty.
#persistent_logging: false
# Keep the log file after quitting Alacritty.
#persistent_logging: false
# Log level
#
# Values for `log_level`:
# - Off
# - Error
# - Warn
# - Info
# - Debug
# - Trace
#log_level: Warn
# Log level
#
# Values for `log_level`:
# - Off
# - Error
# - Warn
# - Info
# - Debug
# - Trace
#log_level: Warn
# Print all received window events.
#print_events: false
# Print all received window events.
#print_events: false

File diff suppressed because it is too large Load Diff

View File

@ -31,111 +31,105 @@ local json = { _version = "0.1.2" }
local encode
local escape_char_map = {
[ "\\" ] = "\\",
[ "\"" ] = "\"",
[ "\b" ] = "b",
[ "\f" ] = "f",
[ "\n" ] = "n",
[ "\r" ] = "r",
[ "\t" ] = "t",
["\\"] = "\\",
["\""] = "\"",
["\b"] = "b",
["\f"] = "f",
["\n"] = "n",
["\r"] = "r",
["\t"] = "t",
}
local escape_char_map_inv = { [ "/" ] = "/" }
local escape_char_map_inv = { ["/"] = "/" }
for k, v in pairs(escape_char_map) do
escape_char_map_inv[v] = k
escape_char_map_inv[v] = k
end
local function escape_char(c)
return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
end
local function encode_nil(val)
return "null"
return "null"
end
local function encode_table(val, stack)
local res = {}
stack = stack or {}
local res = {}
stack = stack or {}
-- Circular reference?
if stack[val] then error("circular reference") end
-- Circular reference?
if stack[val] then error("circular reference") end
stack[val] = true
stack[val] = true
if rawget(val, 1) ~= nil or next(val) == nil then
-- Treat as array -- check keys are valid and it is not sparse
local n = 0
for k in pairs(val) do
if type(k) ~= "number" then
error("invalid table: mixed or invalid key types")
end
n = n + 1
end
if n ~= #val then
error("invalid table: sparse array")
end
-- Encode
for i, v in ipairs(val) do
table.insert(res, encode(v, stack))
end
stack[val] = nil
return "[" .. table.concat(res, ",") .. "]"
if rawget(val, 1) ~= nil or next(val) == nil then
-- Treat as array -- check keys are valid and it is not sparse
local n = 0
for k in pairs(val) do
if type(k) ~= "number" then
error("invalid table: mixed or invalid key types")
end
n = n + 1
end
if n ~= #val then
error("invalid table: sparse array")
end
-- Encode
for i, v in ipairs(val) do
table.insert(res, encode(v, stack))
end
stack[val] = nil
return "[" .. table.concat(res, ",") .. "]"
else
-- Treat as an object
for k, v in pairs(val) do
if type(k) ~= "string" then
error("invalid table: mixed or invalid key types")
end
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
end
stack[val] = nil
return "{" .. table.concat(res, ",") .. "}"
end
else
-- Treat as an object
for k, v in pairs(val) do
if type(k) ~= "string" then
error("invalid table: mixed or invalid key types")
end
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
end
stack[val] = nil
return "{" .. table.concat(res, ",") .. "}"
end
end
local function encode_string(val)
return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
end
local function encode_number(val)
-- Check for NaN, -inf and inf
if val ~= val or val <= -math.huge or val >= math.huge then
error("unexpected number value '" .. tostring(val) .. "'")
end
return string.format("%.14g", val)
-- Check for NaN, -inf and inf
if val ~= val or val <= -math.huge or val >= math.huge then
error("unexpected number value '" .. tostring(val) .. "'")
end
return string.format("%.14g", val)
end
local type_func_map = {
[ "nil" ] = encode_nil,
[ "table" ] = encode_table,
[ "string" ] = encode_string,
[ "number" ] = encode_number,
[ "boolean" ] = tostring,
["nil"] = encode_nil,
["table"] = encode_table,
["string"] = encode_string,
["number"] = encode_number,
["boolean"] = tostring,
}
encode = function(val, stack)
local t = type(val)
local f = type_func_map[t]
if f then
return f(val, stack)
end
error("unexpected type '" .. t .. "'")
local t = type(val)
local f = type_func_map[t]
if f then
return f(val, stack)
end
error("unexpected type '" .. t .. "'")
end
function json.encode(val)
return ( encode(val) )
return (encode(val))
end
-------------------------------------------------------------------------------
-- Decode
-------------------------------------------------------------------------------
@ -143,246 +137,236 @@ end
local parse
local function create_set(...)
local res = {}
for i = 1, select("#", ...) do
res[ select(i, ...) ] = true
end
return res
local res = {}
for i = 1, select("#", ...) do
res[select(i, ...)] = true
end
return res
end
local space_chars = create_set(" ", "\t", "\r", "\n")
local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
local literals = create_set("true", "false", "null")
local space_chars = create_set(" ", "\t", "\r", "\n")
local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
local literals = create_set("true", "false", "null")
local literal_map = {
[ "true" ] = true,
[ "false" ] = false,
[ "null" ] = nil,
["true"] = true,
["false"] = false,
["null"] = nil,
}
local function next_char(str, idx, set, negate)
for i = idx, #str do
if set[str:sub(i, i)] ~= negate then
return i
end
end
return #str + 1
for i = idx, #str do
if set[str:sub(i, i)] ~= negate then
return i
end
end
return #str + 1
end
local function decode_error(str, idx, msg)
local line_count = 1
local col_count = 1
for i = 1, idx - 1 do
col_count = col_count + 1
if str:sub(i, i) == "\n" then
line_count = line_count + 1
col_count = 1
end
end
error( string.format("%s at line %d col %d", msg, line_count, col_count) )
local line_count = 1
local col_count = 1
for i = 1, idx - 1 do
col_count = col_count + 1
if str:sub(i, i) == "\n" then
line_count = line_count + 1
col_count = 1
end
end
error(string.format("%s at line %d col %d", msg, line_count, col_count))
end
local function codepoint_to_utf8(n)
-- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
local f = math.floor
if n <= 0x7f then
return string.char(n)
elseif n <= 0x7ff then
return string.char(f(n / 64) + 192, n % 64 + 128)
elseif n <= 0xffff then
return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
elseif n <= 0x10ffff then
return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128,
f(n % 4096 / 64) + 128, n % 64 + 128)
end
error( string.format("invalid unicode codepoint '%x'", n) )
-- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
local f = math.floor
if n <= 0x7f then
return string.char(n)
elseif n <= 0x7ff then
return string.char(f(n / 64) + 192, n % 64 + 128)
elseif n <= 0xffff then
return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
elseif n <= 0x10ffff then
return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128,
f(n % 4096 / 64) + 128, n % 64 + 128)
end
error(string.format("invalid unicode codepoint '%x'", n))
end
local function parse_unicode_escape(s)
local n1 = tonumber( s:sub(1, 4), 16 )
local n2 = tonumber( s:sub(7, 10), 16 )
-- Surrogate pair?
if n2 then
return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
else
return codepoint_to_utf8(n1)
end
local n1 = tonumber(s:sub(1, 4), 16)
local n2 = tonumber(s:sub(7, 10), 16)
-- Surrogate pair?
if n2 then
return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
else
return codepoint_to_utf8(n1)
end
end
local function parse_string(str, i)
local res = ""
local j = i + 1
local k = j
local res = ""
local j = i + 1
local k = j
while j <= #str do
local x = str:byte(j)
while j <= #str do
local x = str:byte(j)
if x < 32 then
decode_error(str, j, "control character in string")
if x < 32 then
decode_error(str, j, "control character in string")
elseif x == 92 then -- `\`: Escape
res = res .. str:sub(k, j - 1)
j = j + 1
local c = str:sub(j, j)
if c == "u" then
local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
or str:match("^%x%x%x%x", j + 1)
or decode_error(str, j - 1, "invalid unicode escape in string")
res = res .. parse_unicode_escape(hex)
j = j + #hex
else
if not escape_chars[c] then
decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
end
res = res .. escape_char_map_inv[c]
end
k = j + 1
elseif x == 92 then -- `\`: Escape
res = res .. str:sub(k, j - 1)
j = j + 1
local c = str:sub(j, j)
if c == "u" then
local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
or str:match("^%x%x%x%x", j + 1)
or decode_error(str, j - 1, "invalid unicode escape in string")
res = res .. parse_unicode_escape(hex)
j = j + #hex
else
if not escape_chars[c] then
decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
end
res = res .. escape_char_map_inv[c]
end
k = j + 1
elseif x == 34 then -- `"`: End of string
res = res .. str:sub(k, j - 1)
return res, j + 1
end
elseif x == 34 then -- `"`: End of string
res = res .. str:sub(k, j - 1)
return res, j + 1
end
j = j + 1
end
j = j + 1
end
decode_error(str, i, "expected closing quote for string")
decode_error(str, i, "expected closing quote for string")
end
local function parse_number(str, i)
local x = next_char(str, i, delim_chars)
local s = str:sub(i, x - 1)
local n = tonumber(s)
if not n then
decode_error(str, i, "invalid number '" .. s .. "'")
end
return n, x
local x = next_char(str, i, delim_chars)
local s = str:sub(i, x - 1)
local n = tonumber(s)
if not n then
decode_error(str, i, "invalid number '" .. s .. "'")
end
return n, x
end
local function parse_literal(str, i)
local x = next_char(str, i, delim_chars)
local word = str:sub(i, x - 1)
if not literals[word] then
decode_error(str, i, "invalid literal '" .. word .. "'")
end
return literal_map[word], x
local x = next_char(str, i, delim_chars)
local word = str:sub(i, x - 1)
if not literals[word] then
decode_error(str, i, "invalid literal '" .. word .. "'")
end
return literal_map[word], x
end
local function parse_array(str, i)
local res = {}
local n = 1
i = i + 1
while 1 do
local x
i = next_char(str, i, space_chars, true)
-- Empty / end of array?
if str:sub(i, i) == "]" then
i = i + 1
break
end
-- Read token
x, i = parse(str, i)
res[n] = x
n = n + 1
-- Next token
i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i)
i = i + 1
if chr == "]" then break end
if chr ~= "," then decode_error(str, i, "expected ']' or ','") end
end
return res, i
local res = {}
local n = 1
i = i + 1
while 1 do
local x
i = next_char(str, i, space_chars, true)
-- Empty / end of array?
if str:sub(i, i) == "]" then
i = i + 1
break
end
-- Read token
x, i = parse(str, i)
res[n] = x
n = n + 1
-- Next token
i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i)
i = i + 1
if chr == "]" then break end
if chr ~= "," then decode_error(str, i, "expected ']' or ','") end
end
return res, i
end
local function parse_object(str, i)
local res = {}
i = i + 1
while 1 do
local key, val
i = next_char(str, i, space_chars, true)
-- Empty / end of object?
if str:sub(i, i) == "}" then
i = i + 1
break
end
-- Read key
if str:sub(i, i) ~= '"' then
decode_error(str, i, "expected string for key")
end
key, i = parse(str, i)
-- Read ':' delimiter
i = next_char(str, i, space_chars, true)
if str:sub(i, i) ~= ":" then
decode_error(str, i, "expected ':' after key")
end
i = next_char(str, i + 1, space_chars, true)
-- Read value
val, i = parse(str, i)
-- Set
res[key] = val
-- Next token
i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i)
i = i + 1
if chr == "}" then break end
if chr ~= "," then decode_error(str, i, "expected '}' or ','") end
end
return res, i
local res = {}
i = i + 1
while 1 do
local key, val
i = next_char(str, i, space_chars, true)
-- Empty / end of object?
if str:sub(i, i) == "}" then
i = i + 1
break
end
-- Read key
if str:sub(i, i) ~= '"' then
decode_error(str, i, "expected string for key")
end
key, i = parse(str, i)
-- Read ':' delimiter
i = next_char(str, i, space_chars, true)
if str:sub(i, i) ~= ":" then
decode_error(str, i, "expected ':' after key")
end
i = next_char(str, i + 1, space_chars, true)
-- Read value
val, i = parse(str, i)
-- Set
res[key] = val
-- Next token
i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i)
i = i + 1
if chr == "}" then break end
if chr ~= "," then decode_error(str, i, "expected '}' or ','") end
end
return res, i
end
local char_func_map = {
[ '"' ] = parse_string,
[ "0" ] = parse_number,
[ "1" ] = parse_number,
[ "2" ] = parse_number,
[ "3" ] = parse_number,
[ "4" ] = parse_number,
[ "5" ] = parse_number,
[ "6" ] = parse_number,
[ "7" ] = parse_number,
[ "8" ] = parse_number,
[ "9" ] = parse_number,
[ "-" ] = parse_number,
[ "t" ] = parse_literal,
[ "f" ] = parse_literal,
[ "n" ] = parse_literal,
[ "[" ] = parse_array,
[ "{" ] = parse_object,
['"'] = parse_string,
["0"] = parse_number,
["1"] = parse_number,
["2"] = parse_number,
["3"] = parse_number,
["4"] = parse_number,
["5"] = parse_number,
["6"] = parse_number,
["7"] = parse_number,
["8"] = parse_number,
["9"] = parse_number,
["-"] = parse_number,
["t"] = parse_literal,
["f"] = parse_literal,
["n"] = parse_literal,
["["] = parse_array,
["{"] = parse_object,
}
parse = function(str, idx)
local chr = str:sub(idx, idx)
local f = char_func_map[chr]
if f then
return f(str, idx)
end
decode_error(str, idx, "unexpected character '" .. chr .. "'")
local chr = str:sub(idx, idx)
local f = char_func_map[chr]
if f then
return f(str, idx)
end
decode_error(str, idx, "unexpected character '" .. chr .. "'")
end
function json.decode(str)
if type(str) ~= "string" then
error("expected argument of type string, got " .. type(str))
end
local res, idx = parse(str, next_char(str, 1, space_chars, true))
idx = next_char(str, idx, space_chars, true)
if idx <= #str then
decode_error(str, idx, "trailing garbage")
end
return res
if type(str) ~= "string" then
error("expected argument of type string, got " .. type(str))
end
local res, idx = parse(str, next_char(str, 1, space_chars, true))
idx = next_char(str, idx, space_chars, true)
if idx <= #str then
decode_error(str, idx, "trailing garbage")
end
return res
end
return json

View File

@ -11,18 +11,18 @@ local themes_path = gfs.get_themes_dir()
local theme = {}
theme.font = "JetBrainsMono NF 8"
theme.font = "JetBrainsMono NF 8"
theme.bg_normal = "#222222"
theme.bg_focus = "#333333"
theme.bg_urgent = "#ff0000"
theme.bg_minimize = "#444444"
theme.bg_systray = theme.bg_normal
theme.bg_normal = "#222222"
theme.bg_focus = "#333333"
theme.bg_urgent = "#ff0000"
theme.bg_minimize = "#444444"
theme.bg_systray = theme.bg_normal
theme.fg_normal = "#aaaaaa"
theme.fg_focus = "#ffffff"
theme.fg_urgent = "#ffffff"
theme.fg_minimize = "#ffffff"
theme.fg_normal = "#aaaaaa"
theme.fg_focus = "#ffffff"
theme.fg_urgent = "#ffffff"
theme.fg_minimize = "#ffffff"
theme.useless_gap = dpi(4)
theme.border_width = dpi(2)
@ -47,10 +47,10 @@ theme.border_marked = "#91231c"
-- Generate taglist squares:
local taglist_square_size = dpi(4)
theme.taglist_squares_sel = theme_assets.taglist_squares_sel(
taglist_square_size, theme.fg_normal
taglist_square_size, theme.fg_normal
)
theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
taglist_square_size, theme.fg_normal
taglist_square_size, theme.fg_normal
)
-- Variables set for theming notifications:
@ -62,9 +62,9 @@ theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
-- Variables set for theming the menu:
-- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width]
theme.menu_submenu_icon = themes_path.."default/submenu.png"
theme.menu_height = dpi(16)
theme.menu_width = dpi(100)
theme.menu_submenu_icon = themes_path .. "default/submenu.png"
theme.menu_height = dpi(16)
theme.menu_width = dpi(100)
-- You can add as many variables as
-- you wish and access them by using
@ -72,55 +72,55 @@ theme.menu_width = dpi(100)
--theme.bg_widget = "#cc0000"
-- Define the image to load
theme.titlebar_close_button_normal = themes_path.."default/titlebar/close_normal.png"
theme.titlebar_close_button_focus = themes_path.."default/titlebar/close_focus.png"
theme.titlebar_close_button_normal = themes_path .. "default/titlebar/close_normal.png"
theme.titlebar_close_button_focus = themes_path .. "default/titlebar/close_focus.png"
theme.titlebar_minimize_button_normal = themes_path.."default/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus = themes_path.."default/titlebar/minimize_focus.png"
theme.titlebar_minimize_button_normal = themes_path .. "default/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus = themes_path .. "default/titlebar/minimize_focus.png"
theme.titlebar_ontop_button_normal_inactive = themes_path.."default/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = themes_path.."default/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = themes_path.."default/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = themes_path.."default/titlebar/ontop_focus_active.png"
theme.titlebar_ontop_button_normal_inactive = themes_path .. "default/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = themes_path .. "default/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = themes_path .. "default/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = themes_path .. "default/titlebar/ontop_focus_active.png"
theme.titlebar_sticky_button_normal_inactive = themes_path.."default/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive = themes_path.."default/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = themes_path.."default/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active = themes_path.."default/titlebar/sticky_focus_active.png"
theme.titlebar_sticky_button_normal_inactive = themes_path .. "default/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive = themes_path .. "default/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = themes_path .. "default/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active = themes_path .. "default/titlebar/sticky_focus_active.png"
theme.titlebar_floating_button_normal_inactive = themes_path.."default/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = themes_path.."default/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = themes_path.."default/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = themes_path.."default/titlebar/floating_focus_active.png"
theme.titlebar_floating_button_normal_inactive = themes_path .. "default/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = themes_path .. "default/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = themes_path .. "default/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = themes_path .. "default/titlebar/floating_focus_active.png"
theme.titlebar_maximized_button_normal_inactive = themes_path.."default/titlebar/maximized_normal_inactive.png"
theme.titlebar_maximized_button_focus_inactive = themes_path.."default/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_active = themes_path.."default/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_active = themes_path.."default/titlebar/maximized_focus_active.png"
theme.titlebar_maximized_button_normal_inactive = themes_path .. "default/titlebar/maximized_normal_inactive.png"
theme.titlebar_maximized_button_focus_inactive = themes_path .. "default/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_active = themes_path .. "default/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_active = themes_path .. "default/titlebar/maximized_focus_active.png"
theme.wallpaper = "~/.local/share/wallpaper.png"
-- You can use your own layout icons like this:
theme.layout_fairh = themes_path.."default/layouts/fairhw.png"
theme.layout_fairv = themes_path.."default/layouts/fairvw.png"
theme.layout_floating = themes_path.."default/layouts/floatingw.png"
theme.layout_magnifier = themes_path.."default/layouts/magnifierw.png"
theme.layout_max = themes_path.."default/layouts/maxw.png"
theme.layout_fullscreen = themes_path.."default/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path.."default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path.."default/layouts/tileleftw.png"
theme.layout_tile = themes_path.."default/layouts/tilew.png"
theme.layout_tiletop = themes_path.."default/layouts/tiletopw.png"
theme.layout_spiral = themes_path.."default/layouts/spiralw.png"
theme.layout_dwindle = themes_path.."default/layouts/dwindlew.png"
theme.layout_cornernw = themes_path.."default/layouts/cornernww.png"
theme.layout_cornerne = themes_path.."default/layouts/cornernew.png"
theme.layout_cornersw = themes_path.."default/layouts/cornersww.png"
theme.layout_cornerse = themes_path.."default/layouts/cornersew.png"
theme.layout_fairh = themes_path .. "default/layouts/fairhw.png"
theme.layout_fairv = themes_path .. "default/layouts/fairvw.png"
theme.layout_floating = themes_path .. "default/layouts/floatingw.png"
theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
theme.layout_max = themes_path .. "default/layouts/maxw.png"
theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
theme.layout_tile = themes_path .. "default/layouts/tilew.png"
theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
-- Generate Awesome icon:
theme.awesome_icon = theme_assets.awesome_icon(
theme.menu_height, theme.bg_focus, theme.fg_focus
theme.menu_height, theme.bg_focus, theme.fg_focus
)
-- Define the icon theme for application icons. If not set then the icons

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
#!/bin/sh
if [ -n "$FIFO_UEBERZUG" ]; then
printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG"
printf '{"action": "remove", "identifier": "PREVIEW"}\n' >"$FIFO_UEBERZUG"
fi

View File

@ -17,13 +17,13 @@ cmd setwallpaper ${{
# Archive bindings
cmd unarchive ${{
case "$f" in
*.zip) unzip "$f" ;;
*.tar.gz) tar -xzvf "$f" ;;
*.tar.bz2) tar -xjvf "$f" ;;
*.tar) tar -xvf "$f" ;;
*) echo "Unsupported format" ;;
esac
case "$f" in
*.zip) unzip "$f" ;;
*.tar.gz) tar -xzvf "$f" ;;
*.tar.bz2) tar -xjvf "$f" ;;
*.tar) tar -xvf "$f" ;;
*) echo "Unsupported format" ;;
esac
}}
# cmds/functions

View File

@ -2,7 +2,7 @@
image() {
if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then
printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG"
printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2 - 1))" "$(($3 - 1))" "$1" >"$FIFO_UEBERZUG"
exit 1
else
chafa "$1" -s "$4x"
@ -12,8 +12,7 @@ image() {
batorcat() {
file="$1"
shift
if command -v bat > /dev/null 2>&1
then
if command -v bat >/dev/null 2>&1; then
bat --color=always --style=plain --pager=never "$file" "$@"
else
cat "$file"
@ -23,61 +22,61 @@ batorcat() {
CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))"
case "$(printf "%s\n" "$(readlink -f "$1")" | awk '{print tolower($0)}')" in
*.tgz|*.tar.gz) tar tzf "$1" ;;
*.tar.bz2|*.tbz2) tar tjf "$1" ;;
*.tar.txz|*.txz) xz --list "$1" ;;
*.tar) tar tf "$1" ;;
*.zip|*.jar|*.war|*.ear|*.oxt) unzip -l "$1" ;;
*.rar) unrar l "$1" ;;
*.md) glow -s dark "$1" ;;
*.7z) 7z l "$1" ;;
*.[1-8]) man "$1" | col -b ;;
*.o) nm "$1";;
*.torrent) transmission-show "$1" ;;
*.iso) iso-info --no-header -l "$1" ;;
*.odt|*.ods|*.odp|*.sxw) odt2txt "$1" ;;
*.doc) catdoc "$1" ;;
*.docx) docx2txt "$1" - ;;
*.xml|*.html) w3m -dump "$1";;
*.xls|*.xlsx)
ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1" | batorcat --language=csv
;;
*.wav|*.mp3|*.flac|*.m4a|*.wma|*.ape|*.ac3|*.og[agx]|*.spx|*.opus|*.as[fx]|*.mka)
exiftool "$1"
;;
*.pdf)
[ ! -f "${CACHE}.jpg" ] && \
pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;;
*.epub)
[ ! -f "$CACHE" ] && \
epub-thumbnailer "$1" "$CACHE" 1024
image "$CACHE" "$2" "$3" "$4" "$5"
;;
*.cbz|*.cbr|*.cbt)
[ ! -f "$CACHE" ] && \
comicthumb "$1" "$CACHE" 1024
image "$CACHE" "$2" "$3" "$4" "$5"
;;
*.avi|*.mp4|*.wmv|*.dat|*.3gp|*.ogv|*.mkv|*.mpg|*.mpeg|*.vob|*.fl[icv]|*.m2v|*.mov|*.webm|*.ts|*.mts|*.m4v|*.r[am]|*.qt|*.divx)
[ ! -f "${CACHE}.jpg" ] && \
ffmpegthumbnailer -i "$1" -o "${CACHE}.jpg" -s 0 -q 5
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;;
*.bmp|*.jpg|*.jpeg|*.png|*.xpm|*.webp|*.gif|*.jfif)
image "$1" "$2" "$3" "$4" "$5"
;;
*.svg)
[ ! -f "${CACHE}.jpg" ] && \
convert "$1" "${CACHE}.jpg"
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;;
*.ino)
batorcat --language=cpp "$1"
;;
*)
batorcat "$1"
;;
*.tgz | *.tar.gz) tar tzf "$1" ;;
*.tar.bz2 | *.tbz2) tar tjf "$1" ;;
*.tar.txz | *.txz) xz --list "$1" ;;
*.tar) tar tf "$1" ;;
*.zip | *.jar | *.war | *.ear | *.oxt) unzip -l "$1" ;;
*.rar) unrar l "$1" ;;
*.md) glow -s dark "$1" ;;
*.7z) 7z l "$1" ;;
*.[1-8]) man "$1" | col -b ;;
*.o) nm "$1" ;;
*.torrent) transmission-show "$1" ;;
*.iso) iso-info --no-header -l "$1" ;;
*.odt | *.ods | *.odp | *.sxw) odt2txt "$1" ;;
*.doc) catdoc "$1" ;;
*.docx) docx2txt "$1" - ;;
*.xml | *.html) w3m -dump "$1" ;;
*.xls | *.xlsx)
ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1" | batorcat --language=csv
;;
*.wav | *.mp3 | *.flac | *.m4a | *.wma | *.ape | *.ac3 | *.og[agx] | *.spx | *.opus | *.as[fx] | *.mka)
exiftool "$1"
;;
*.pdf)
[ ! -f "${CACHE}.jpg" ] &&
pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;;
*.epub)
[ ! -f "$CACHE" ] &&
epub-thumbnailer "$1" "$CACHE" 1024
image "$CACHE" "$2" "$3" "$4" "$5"
;;
*.cbz | *.cbr | *.cbt)
[ ! -f "$CACHE" ] &&
comicthumb "$1" "$CACHE" 1024
image "$CACHE" "$2" "$3" "$4" "$5"
;;
*.avi | *.mp4 | *.wmv | *.dat | *.3gp | *.ogv | *.mkv | *.mpg | *.mpeg | *.vob | *.fl[icv] | *.m2v | *.mov | *.webm | *.ts | *.mts | *.m4v | *.r[am] | *.qt | *.divx)
[ ! -f "${CACHE}.jpg" ] &&
ffmpegthumbnailer -i "$1" -o "${CACHE}.jpg" -s 0 -q 5
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;;
*.bmp | *.jpg | *.jpeg | *.png | *.xpm | *.webp | *.gif | *.jfif)
image "$1" "$2" "$3" "$4" "$5"
;;
*.svg)
[ ! -f "${CACHE}.jpg" ] &&
convert "$1" "${CACHE}.jpg"
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;;
*.ino)
batorcat --language=cpp "$1"
;;
*)
batorcat "$1"
;;
esac
exit 0

View File

@ -93,19 +93,19 @@ nnoremap S :%s//gI<Left><Left><Left>
" Use tab for trigger completion with characters ahead and navigate.
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Use <c-space> to trigger completion.
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
inoremap <silent><expr> <c-@> coc#refresh()
endif
@ -113,32 +113,32 @@ endif
lua << END
require('Comment').setup()
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'dracula',
component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''},
disabled_filetypes = {},
always_divide_middle = true,
globalstatus = false,
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {'filename'},
lualine_x = {'encoding', 'fileformat', 'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {'location'},
lualine_y = {},
lualine_z = {}
},
tabline = {},
extensions = {}
options = {
icons_enabled = true,
theme = 'dracula',
component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''},
disabled_filetypes = {},
always_divide_middle = true,
globalstatus = false,
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {'filename'},
lualine_x = {'encoding', 'fileformat', 'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {'location'},
lualine_y = {},
lualine_z = {}
},
tabline = {},
extensions = {}
}
END

View File

@ -1,4 +1,4 @@
#! /usr/bin/env lua
#!/usr/bin/env lua
--=====================================================================
--
-- z.lua - a cd command that learns, by skywind 2018-2022
@ -90,8 +90,8 @@
local modname = 'z'
local MM = {}
_G[modname] = MM
package.loaded[modname] = MM --return modname
setmetatable(MM, {__index = _G})
package.loaded[modname] = MM --return modname
setmetatable(MM, { __index = _G })
if _ENV ~= nil then
_ENV[modname] = MM
@ -166,7 +166,7 @@ function string:startswith(text)
end
function string:endswith(text)
return text == "" or self:sub(-#text) == text
return text == "" or self:sub(- #text) == text
end
function string:lstrip()
@ -215,7 +215,6 @@ function string:join(parts)
return text
end
-----------------------------------------------------------------------
-- table size
-----------------------------------------------------------------------
@ -226,16 +225,15 @@ function table.length(T)
return count
end
-----------------------------------------------------------------------
-- print table
-----------------------------------------------------------------------
function dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump(v) .. ','
for k, v in pairs(o) do
if type(k) ~= 'number' then k = '"' .. k .. '"' end
s = s .. '[' .. k .. '] = ' .. dump(v) .. ','
end
return s .. '} '
else
@ -243,7 +241,6 @@ function dump(o)
end
end
-----------------------------------------------------------------------
-- print table
-----------------------------------------------------------------------
@ -254,10 +251,10 @@ function printT(table, level)
level = level or 1
local indent = ""
for i = 1, level do
indent = indent.." "
indent = indent .. " "
end
if key ~= "" then
print(indent..key.." ".."=".." ".."{")
print(indent .. key .. " " .. "=" .. " " .. "{")
else
print(indent .. "{")
end
@ -268,7 +265,7 @@ function printT(table, level)
key = k
func(v, level + 1)
else
local content = string.format("%s%s = %s", indent .. " ",tostring(k), tostring(v))
local content = string.format("%s%s = %s", indent .. " ", tostring(k), tostring(v))
print(content)
end
end
@ -277,7 +274,6 @@ function printT(table, level)
func(table, level)
end
-----------------------------------------------------------------------
-- invoke command and retrive output
-----------------------------------------------------------------------
@ -291,7 +287,6 @@ function os.call(command)
return line
end
-----------------------------------------------------------------------
-- write log
-----------------------------------------------------------------------
@ -308,16 +303,15 @@ function os.log(text)
fp:close()
end
-----------------------------------------------------------------------
-- ffi optimize (luajit has builtin ffi module)
-----------------------------------------------------------------------
os.native = {}
os.native.status, os.native.ffi = pcall(require, "ffi")
os.native.status, os.native.ffi = pcall(require, "ffi")
if os.native.status then
local ffi = os.native.ffi
if windows then
ffi.cdef[[
ffi.cdef [[
int GetFullPathNameA(const char *name, uint32_t size, char *out, char **name);
int ReplaceFileA(const char *dstname, const char *srcname, void *, uint32_t, void *, void *);
uint32_t GetTickCount(void);
@ -335,24 +329,30 @@ if os.native.status then
local hr = kernel32.GetFullPathNameA(name, 4096, buffer, nil)
return (hr > 0) and ffi.string(buffer, hr) or nil
end
function os.native.ReplaceFile(replaced, replacement)
local hr = kernel32.ReplaceFileA(replaced, replacement, nil, 2, nil, nil)
return (hr ~= 0) and true or false
end
function os.native.GetTickCount()
return kernel32.GetTickCount()
end
function os.native.GetFileAttributes(name)
return kernel32.GetFileAttributesA(name)
end
function os.native.GetLongPathName(name)
local hr = kernel32.GetLongPathNameA(name, buffer, 4096)
return (hr ~= 0) and ffi.string(buffer, hr) or nil
end
function os.native.GetShortPathName(name)
local hr = kernel32.GetShortPathNameA(name, buffer, 4096)
return (hr ~= 0) and ffi.string(buffer, hr) or nil
end
function os.native.GetRealPathName(name)
local short = os.native.GetShortPathName(name)
if short then
@ -360,10 +360,12 @@ if os.native.status then
end
return nil
end
function os.native.exists(name)
local attr = os.native.GetFileAttributes(name)
return attr ~= INVALID_FILE_ATTRIBUTES
end
function os.native.isdir(name)
local attr = os.native.GetFileAttributes(name)
local isdir = FILE_ATTRIBUTE_DIRECTORY
@ -372,13 +374,14 @@ if os.native.status then
end
return (attr % (2 * isdir)) >= isdir
end
function os.native.getcwd()
local hr = kernel32.GetCurrentDirectoryA(4096, buffer)
if hr <= 0 then return nil end
return ffi.string(buffer, hr)
end
else
ffi.cdef[[
ffi.cdef [[
typedef struct { long tv_sec; long tv_usec; } timeval;
int gettimeofday(timeval *tv, void *tz);
int access(const char *name, int mode);
@ -393,13 +396,16 @@ if os.native.status then
local usec = tonumber(timeval[0].tv_usec)
return sec + (usec * 0.000001)
end
function os.native.access(name, mode)
return ffi.C.access(name, mode)
end
function os.native.realpath(name)
local path = ffi.C.realpath(name, buffer)
return (path ~= nil) and ffi.string(buffer) or nil
end
function os.native.getcwd()
local hr = ffi.C.getcwd(buffer, 4099)
return hr ~= nil and ffi.string(buffer) or nil
@ -412,6 +418,7 @@ if os.native.status then
return math.floor(os.native.gettimeofday() * 1000)
end
end
os.native.init = true
end
@ -446,7 +453,6 @@ function os.pwd()
end
end
-----------------------------------------------------------------------
-- which executable
-----------------------------------------------------------------------
@ -464,7 +470,7 @@ function os.path.which(exename)
return name
end
else
for _, ext in pairs({'.exe', '.cmd', '.bat'}) do
for _, ext in pairs({ '.exe', '.cmd', '.bat' }) do
local name = path .. '\\' .. exename .. ext
if path == '.' then
name = exename .. ext
@ -478,7 +484,6 @@ function os.path.which(exename)
return nil
end
-----------------------------------------------------------------------
-- absolute path (simulated)
-----------------------------------------------------------------------
@ -487,7 +492,6 @@ function os.path.absolute(path)
return os.path.normpath(os.path.join(pwd, path))
end
-----------------------------------------------------------------------
-- absolute path (system call, can fall back to os.path.absolute)
-----------------------------------------------------------------------
@ -527,7 +531,7 @@ function os.path.abspath(path)
return test
end
end
for _, python in pairs({'python3', 'python2', 'python'}) do
for _, python in pairs({ 'python3', 'python2', 'python' }) do
local s = 'sys.stdout.write(os.path.abspath(sys.argv[1]))'
local s = '-c "import os, sys;' .. s .. '" \'' .. path .. '\''
local s = python .. ' ' .. s
@ -543,7 +547,6 @@ function os.path.abspath(path)
return os.path.absolute(path)
end
-----------------------------------------------------------------------
-- dir exists
-----------------------------------------------------------------------
@ -570,7 +573,6 @@ function os.path.isdir(pathname)
return os.path.exists(name)
end
-----------------------------------------------------------------------
-- file or path exists
-----------------------------------------------------------------------
@ -586,7 +588,7 @@ function os.path.exists(name)
if code == 13 or code == 17 then
return true
elseif code == 30 then
local f = io.open(name,"r")
local f = io.open(name, "r")
if f ~= nil then
io.close(f)
return true
@ -603,7 +605,6 @@ function os.path.exists(name)
return true
end
-----------------------------------------------------------------------
-- is absolute path
-----------------------------------------------------------------------
@ -624,7 +625,6 @@ function os.path.isabs(path)
return false
end
-----------------------------------------------------------------------
-- normalize path
-----------------------------------------------------------------------
@ -638,7 +638,6 @@ function os.path.norm(pathname)
return pathname
end
-----------------------------------------------------------------------
-- normalize . and ..
-----------------------------------------------------------------------
@ -683,7 +682,6 @@ function os.path.normpath(path)
return path == '' and '.' or path
end
-----------------------------------------------------------------------
-- join two path
-----------------------------------------------------------------------
@ -744,7 +742,6 @@ function os.path.join(path1, path2)
end
end
-----------------------------------------------------------------------
-- split
-----------------------------------------------------------------------
@ -797,7 +794,6 @@ function os.path.split(path)
return head, tail
end
-----------------------------------------------------------------------
-- check subdir
-----------------------------------------------------------------------
@ -818,7 +814,6 @@ function os.path.subdir(basename, subname)
return false
end
-----------------------------------------------------------------------
-- check single name element
-----------------------------------------------------------------------
@ -834,7 +829,6 @@ function os.path.single(path)
return true
end
-----------------------------------------------------------------------
-- expand user home
-----------------------------------------------------------------------
@ -862,14 +856,12 @@ function os.path.expand(pathname)
return pathname
end
-----------------------------------------------------------------------
-- search executable
-----------------------------------------------------------------------
function os.path.search(name)
end
-----------------------------------------------------------------------
-- get lua executable
-----------------------------------------------------------------------
@ -892,7 +884,6 @@ function os.interpreter()
return os.path.abspath(lua)
end
-----------------------------------------------------------------------
-- get script name
-----------------------------------------------------------------------
@ -908,7 +899,6 @@ function os.scriptname()
return os.path.abspath(script)
end
-----------------------------------------------------------------------
-- get environ
-----------------------------------------------------------------------
@ -943,7 +933,6 @@ function os.environ(name, default)
end
end
-----------------------------------------------------------------------
-- parse option
-----------------------------------------------------------------------
@ -985,7 +974,6 @@ function os.getopt(argv)
return options, args
end
-----------------------------------------------------------------------
-- generate random seed
-----------------------------------------------------------------------
@ -1022,7 +1010,6 @@ function math.random_init()
math.randomseed(number)
end
-----------------------------------------------------------------------
-- math random string
-----------------------------------------------------------------------
@ -1042,7 +1029,6 @@ function math.random_string(N)
return text
end
-----------------------------------------------------------------------
-- returns true for path is insensitive
-----------------------------------------------------------------------
@ -1059,7 +1045,6 @@ function path_case_insensitive()
return false
end
-----------------------------------------------------------------------
-- load and split data
-----------------------------------------------------------------------
@ -1094,7 +1079,6 @@ function data_load(filename)
return M
end
-----------------------------------------------------------------------
-- save data
-----------------------------------------------------------------------
@ -1151,7 +1135,6 @@ function data_save(filename, M)
return true
end
-----------------------------------------------------------------------
-- filter out bad dirname
-----------------------------------------------------------------------
@ -1168,7 +1151,6 @@ function data_filter(M)
return N
end
-----------------------------------------------------------------------
-- insert item
-----------------------------------------------------------------------
@ -1224,7 +1206,6 @@ function data_insert(M, filename)
return M
end
-----------------------------------------------------------------------
-- change database
-----------------------------------------------------------------------
@ -1232,7 +1213,6 @@ function data_file_set(name)
DATA_FILE = name
end
-----------------------------------------------------------------------
-- change pattern
-----------------------------------------------------------------------
@ -1251,7 +1231,6 @@ function case_insensitive_pattern(pattern)
return p
end
-----------------------------------------------------------------------
-- pathmatch
-----------------------------------------------------------------------
@ -1286,7 +1265,6 @@ function path_match(pathname, patterns, matchlast)
return true
end
-----------------------------------------------------------------------
-- select matched pathnames
-----------------------------------------------------------------------
@ -1310,7 +1288,6 @@ function data_select(M, patterns, matchlast)
return N
end
-----------------------------------------------------------------------
-- update frecent
-----------------------------------------------------------------------
@ -1333,7 +1310,6 @@ function data_update_frecent(M)
return M
end
-----------------------------------------------------------------------
-- add path
-----------------------------------------------------------------------
@ -1403,7 +1379,6 @@ function z_add(path)
return true
end
-----------------------------------------------------------------------
-- remove path
-----------------------------------------------------------------------
@ -1447,7 +1422,6 @@ function z_remove(path)
data_save(DATA_FILE, X)
end
-----------------------------------------------------------------------
-- match method: frecent, rank, time
-----------------------------------------------------------------------
@ -1480,7 +1454,7 @@ function z_match(patterns, method, subdir)
item.score = item.frecent
end
end
table.sort(M, function (a, b) return a.score > b.score end)
table.sort(M, function(a, b) return a.score > b.score end)
local pwd = (PWD == nil or PWD == '') and os.getenv('PWD') or PWD
if pwd == nil or pwd == '' then
pwd = os.pwd()
@ -1511,7 +1485,6 @@ function z_match(patterns, method, subdir)
return M
end
-----------------------------------------------------------------------
-- pretty print
-----------------------------------------------------------------------
@ -1574,7 +1547,6 @@ function z_print(M, weight, number)
end
end
-----------------------------------------------------------------------
-- calculate jump dir
-----------------------------------------------------------------------
@ -1611,7 +1583,7 @@ function z_cd(patterns)
return M[1].name
end
if os.environ('_ZL_INT_SORT', false) then
table.sort(M, function (a, b) return a.name < b.name end)
table.sort(M, function(a, b) return a.name < b.name end)
end
local retval = nil
if Z_INTERACTIVE == 1 then
@ -1637,7 +1609,7 @@ function z_cd(patterns)
local cmd = '--nth 2.. --reverse --inline-info --tac '
local flag = os.environ('_ZL_FZF_FLAG', '')
flag = (flag == '' or flag == nil) and '+s -e' or flag
cmd = ((fzf == '') and 'fzf' or fzf) .. ' ' .. cmd .. ' ' .. flag
cmd = ((fzf == '') and 'fzf' or fzf) .. ' ' .. cmd .. ' ' .. flag
if not windows then
tmpname = os.tmpname()
local height = os.environ('_ZL_FZF_HEIGHT', '35%')
@ -1667,7 +1639,6 @@ function z_cd(patterns)
return (retval ~= '' and retval or nil)
end
-----------------------------------------------------------------------
-- purge invalid paths
-----------------------------------------------------------------------
@ -1683,7 +1654,6 @@ function z_purge()
return x, y
end
-----------------------------------------------------------------------
-- find_vcs_root
-----------------------------------------------------------------------
@ -1706,7 +1676,6 @@ function find_vcs_root(path)
return nil
end
-----------------------------------------------------------------------
-- cd to parent directories which contains keyword
-- #args == 0 -> returns to vcs root
@ -1775,7 +1744,6 @@ function cd_backward(args, options, pwd)
end
end
-----------------------------------------------------------------------
-- cd minus: "z -", "z --", "z -2"
-----------------------------------------------------------------------
@ -1801,7 +1769,6 @@ function cd_minus(args, options)
return nil
end
-----------------------------------------------------------------------
-- cd breadcrumbs: z -b -i, z -b -I
-----------------------------------------------------------------------
@ -1814,11 +1781,11 @@ function cd_breadcrumbs(pwd, interactive)
local fullname = os.environ('_ZL_FULL_PATH', false)
while true do
local head, name = os.path.split(path)
if head == path then -- reached root
table.insert(elements, {head, head})
if head == path then -- reached root
table.insert(elements, { head, head })
break
elseif name ~= '' then
table.insert(elements, {name, path})
table.insert(elements, { name, path })
else
break
end
@ -1886,7 +1853,6 @@ function cd_breadcrumbs(pwd, interactive)
return elements[index][2]
end
-----------------------------------------------------------------------
-- main entry
-----------------------------------------------------------------------
@ -1963,7 +1929,7 @@ function main(argv)
elseif opts.fish then
z_fish_init(opts)
elseif opts.powershell then
z_windows_init(opts)
z_windows_init(opts)
else
z_shell_init(opts)
end
@ -1976,8 +1942,8 @@ function main(argv)
end
elseif options['--complete'] then
local line = args[1] and args[1] or ''
local head = line:sub(Z_CMD:len()+1):gsub('^%s+', '')
local M = z_match({head}, Z_METHOD, Z_SUBDIR)
local head = line:sub(Z_CMD:len() + 1):gsub('^%s+', '')
local M = z_match({ head }, Z_METHOD, Z_SUBDIR)
for _, item in pairs(M) do
print(item.name)
end
@ -1987,7 +1953,6 @@ function main(argv)
return true
end
-----------------------------------------------------------------------
-- initialize from environment variable
-----------------------------------------------------------------------
@ -2060,7 +2025,6 @@ function z_init()
end
end
-----------------------------------------------------------------------
-- initialize clink hooks
-----------------------------------------------------------------------
@ -2078,14 +2042,16 @@ function z_clink_init()
end
z_add(clink.get_cwd())
end
clink.prompt.register_filter(z_add_to_database, _zl_clink_prompt_priority)
function z_match_completion(word)
local M = z_match({word}, Z_METHOD, Z_SUBDIR)
local M = z_match({ word }, Z_METHOD, Z_SUBDIR)
for _, item in pairs(M) do
clink.add_match(item.name)
end
return {}
end
local z_parser = clink.arg.new_parser()
z_parser:set_arguments({ z_match_completion })
z_parser:set_flags("-c", "-r", "-i", "--cd", "-e", "-b", "--add", "-x", "--purge",
@ -2093,7 +2059,6 @@ function z_clink_init()
clink.arg.register_parser("z", z_parser)
end
-----------------------------------------------------------------------
-- shell scripts
-----------------------------------------------------------------------
@ -2168,9 +2133,9 @@ esac
local script_init_bash_once = [[
_zlua_precmd() {
[ "$_ZL_PREVIOUS_PWD" = "$PWD" ] && return
_ZL_PREVIOUS_PWD="$PWD"
(_zlua --add "$PWD" 2> /dev/null &)
[ "$_ZL_PREVIOUS_PWD" = "$PWD" ] && return
_ZL_PREVIOUS_PWD="$PWD"
(_zlua --add "$PWD" 2> /dev/null &)
}
case "$PROMPT_COMMAND" in
*_zlua_precmd*) ;;
@ -2187,9 +2152,9 @@ esac
local script_init_posix_once = [[
_zlua_precmd() {
[ "$_ZL_PREVIOUS_PWD" = "$PWD" ] && return
_ZL_PREVIOUS_PWD="$PWD"
(_zlua --add "$PWD" 2> /dev/null &)
[ "$_ZL_PREVIOUS_PWD" = "$PWD" ] && return
_ZL_PREVIOUS_PWD="$PWD"
(_zlua --add "$PWD" 2> /dev/null &)
}
case "$PS1" in
*_zlua_precmd*) ;;
@ -2343,7 +2308,6 @@ function z_shell_init(opts)
end
end
-----------------------------------------------------------------------
-- Fish shell init
-----------------------------------------------------------------------
@ -2468,7 +2432,6 @@ function z_fish_init(opts)
end
end
-----------------------------------------------------------------------
-- windows .cmd script
-----------------------------------------------------------------------
@ -2694,7 +2657,6 @@ function z_windows_init(opts)
end
end
-----------------------------------------------------------------------
-- help
-----------------------------------------------------------------------
@ -2713,7 +2675,6 @@ function z_help()
print(cmd .. '-b foo # cd to the parent directory starting with foo')
end
-----------------------------------------------------------------------
-- LFS optimize
-----------------------------------------------------------------------
@ -2726,10 +2687,10 @@ if os.lfs.enable ~= nil then
os.lfs.status, os.lfs.pkg = pcall(require, 'lfs')
if os.lfs.status then
local lfs = os.lfs.pkg
os.path.exists = function (name)
os.path.exists = function(name)
return lfs.attributes(name) and true or false
end
os.path.isdir = function (name)
os.path.isdir = function(name)
local mode = lfs.attributes(name)
if not mode then
return false

View File

@ -1,6 +1,5 @@
#!/bin/zsh
if [[ "$(tty)" = "/dev/tty1" ]]; then
if [[ '$(tty)' = '/dev/tty1' ]]; then
pgrep awesome || sx
fi

View File

@ -1,21 +1,18 @@
# clear
# cd ~
# Flex on ubuntu users
fastfetch
# pfetch
# Options
# setopt correct # Auto correct mistakes
setopt extendedglob # Extended globaling. Allows using regular expressions with *
setopt nocaseglob # Case insensative globbing
setopt numericglobsort # Sort filenames numeracally when it makse sense
setopt nobeep # No beep
setopt appendhistory # Immediately append history instead of overwriting
setopt histignorealldups # If a new command is a duplicate, remove older one
setopt autocd # If only directory path is entered, cd there
setopt inc_append_history # Save commands are addded to the history immediately
setopt histignorespace # Don't save commands that start with space
setopt extendedglob # Extended globaling. Allows using regular expressions with *
setopt nocaseglob # Case insensative globbing
setopt numericglobsort # Sort filenames numeracally when it makse sense
setopt nobeep # No beep
setopt appendhistory # Immediately append history instead of overwriting
setopt histignorealldups # If a new command is a duplicate, remove older one
setopt autocd # If only directory path is entered, cd there
setopt inc_append_history # Save commands are addded to the history immediately
setopt histignorespace # Don't save commands that start with space
autoload -U select-word-style
@ -24,7 +21,7 @@ autoload -U colors && colors
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case sensetive TAB completions
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Colored completion (different colors fr dirs/files/etc)
zstyle ':completion:*' rehash true # Automaticly find new executables in path
zstyle ':completion:*' rehash true # Automaticly find new executables in path
# Speed up completions
zstyle ':completion:*' accept-exact '*(N)'
zstyle ':completion:*' use-cache on
@ -33,13 +30,12 @@ zstyle ':completion:*' menu select
autoload -U compinit
zmodload zsh/complist
compinit
_comp_options+=(globdots) # Include hidden files
_comp_options+=(globdots) # Include hidden files
HISTFILE=~/.config/zsh/.zshistory
HISTSIZE=10000
SAVEHIST=10000
WORDCHARS=${WORDCHARS//\/[&.;]} # Don't consider certain part of the word
WORDCHARS=${WORDCHARS//\/[&.;]/} # Don't consider certain part of the word
# theme/plugins
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh 2>/dev/null
@ -53,52 +49,50 @@ bindkey -e
bindkey -v
export KEYTIMEOUT=1
# Change cursor shape for different vi modes.
function zle-keymap-select {
case $KEYMAP in
vicmd) echo -ne "\e[1 q";; # block
viins|main) echo -ne "\e[5 q";; # beam
esac
case $KEYMAP in
vicmd) echo -ne '\e[1 q' ;; # block
viins | main) echo -ne '\e[5 q' ;; # beam
esac
}
zle -N zle-keymap-select
zle-line-init() {
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne "\e[5 q"
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne '\e[5 q'
}
zle -N zle-line-init
echo -ne "\e[5 q" # Use beam shape cursor on startup.
preexec() { echo -ne "\e[5 q" ;} # Use beam shape cursor for each new prompt.
echo -ne '\e[5 q' # Use beam shape cursor on startup.
preexec() { echo -ne '\e[5 q'; } # Use beam shape cursor for each new prompt.
# Run exa on directory change
function cd() {
new_directory="$*";
if [ $# -eq 0 ]; then
new_directory=${HOME};
fi;
builtin cd "${new_directory}" && exa -a --icons --group-directories-first
new_directory="$*"
if [ $# -eq 0 ]; then
new_directory=${HOME}
fi
builtin cd "${new_directory}" && exa -a --icons --group-directories-first
}
# Use lf to switch directories and bind it to ctrl-o
lfcd () {
tmp="$(mktemp)"
lfrun -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then
dir="$(cat "$tmp")"
rm -f "$tmp" >/dev/null
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi
function lfcd() {
tmp="$(mktemp)"
lfrun -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then
dir="$(bat "$tmp")"
rm -f "$tmp" >/dev/null
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi
}
# Navigate words with CTRL+ARROW keys
bindkey '^[Oc' forward-word
bindkey '^[Od' backward-word
bindkey '^[[1;5C' forward-word
bindkey '^[[1;5D' backward-word
bindkey '^H' backward-kill-word # delete previous word with CTRL+BACKSPACE
bindkey '^[[Z' undo # SHIFT+TAB undo last action
bindkey "^[[3~" delete-char
bindkey '^H' backward-kill-word # delete previous word with CTRL+BACKSPACE
bindkey '^[[Z' undo # SHIFT+TAB undo last action
bindkey '^[[3~' delete-char
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
@ -110,24 +104,25 @@ bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -v '^?' backward-delete-char
bindkey -s "^o" "^ulfcd\n"
bindkey -s "^a" "ubc -lq\n"
bindkey "^[[P" delete-char
bindkey -s '^o' '^ulfcd\n'
# bindkey -s '^a' 'ubc -lq\n'
bindkey '^[[P' delete-char
# Edit line in vim with ctrl-e
autoload edit-command-line; zle -N edit-command-line
bindkey "^e" edit-command-line
bindkey -M vicmd "^[[P" vi-delete-char
bindkey -M vicmd "^e" edit-command-line
bindkey -M visual "^[[P" vi-delete
autoload edit-command-line
zle -N edit-command-line
bindkey '^e' edit-command-line
bindkey -M vicmd '^[[P' vi-delete-char
bindkey -M vicmd '^e' edit-command-line
bindkey -M visual '^[[P' vi-delete
# Aliases
alias cp='cp -iv' # Confirm before overwriting something
alias mv="mv -iv"
alias rm="rm -vI"
alias mkdir="mkdir -pv"
alias df='df -h' # Human-readable sizes
alias free='free -m' # Show sizes in MB
alias cp='cp -iv' # Confirm before overwriting something
alias mv='mv -iv'
alias rm='rm -vI'
alias mkdir='mkdir -pv'
alias df='df -h' # Human-readable sizes
alias free='free -m' # Show sizes in MB
alias gitu='git add . && git commit && git push'
alias ls='exa -a --icons --group-directories-first'
alias lf='lfrun'
@ -138,18 +133,18 @@ alias pman='doas pacman'
alias battery='acpi'
alias airpods='bluetoothctl connect C8:B1:CD:E0:14:4F'
alias weather='curl wttr.in/'
alias ww="nvim ~/vimwiki/index.wiki"
alias py="python"
alias grep="grep --color=auto"
alias diff="diff --color=auto"
alias ip="ip -color=auto"
alias grep="rg"
alias code="vscodium"
alias ww='nvim ~/vimwiki/index.wiki'
alias py='python'
alias grep='grep --color=auto'
alias diff='diff --color=auto'
alias ip='ip -color=auto'
alias grep='rg'
alias code='vscodium'
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
autoload -U promptinit; promptinit
autoload -U promptinit
promptinit
prompt spaceship
# PROMPT
@ -225,4 +220,3 @@ SPACESHIP_VENV_SHOW=true
SPACESHIP_CONDA_SHOW=false
SPACESHIP_PYENV_SHOW=true
SPACESHIP_VI_MODE_SHOW=false

2
.gitignore vendored
View File

@ -1 +1 @@
vscodium/extensions

View File

@ -2,15 +2,15 @@
- Very useful scripts are in `~/.local/bin/`
- Settings for:
- vim/nvim (text editor)
- zsh (shell)
- lf (file manager)
- nsxiv (image/gif viewer)
- mpv (video player)
- vim/nvim (text editor)
- zsh (shell)
- lf (file manager)
- nsxiv (image/gif viewer)
- mpv (video player)
- I try to minimize what's directly in `~` so:
- All configs that can be in `~/.config/` are.
- Some environmental variables have been set in `~/.zprofile` to move configs into `~/.config/`
- All configs that can be in `~/.config/` are.
- Some environmental variables have been set in `~/.zprofile` to move configs into `~/.config/`
## Credits
- [lfimg by cirala](https://github.com/cirala/lfimg)