updated yazi conf. nvim completions and latex
This commit is contained in:
@@ -576,11 +576,11 @@ sort = -r date
|
||||
|
||||
[viewer]
|
||||
# pager=less -Rc
|
||||
pager=pager = bat --style=plain --paging=always
|
||||
html-unsafe-images=false
|
||||
html-filter=dante
|
||||
pager= bat --style=plain --paging=always
|
||||
# html-unsafe-images=false
|
||||
# html-filter=dante
|
||||
image/*=chafa -f kitty -s ${width}x${height}
|
||||
text/html=dante
|
||||
text/html= ~/.local/bin/mailhtml2md
|
||||
application/pdf=zathura
|
||||
video/*=mpv
|
||||
header-layout=From,To,Subject,Date
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
/home/liph/.config/systemd/user/gammastep.service
|
||||
13
kanata/.config/systemd/user/gammastep.service
Normal file
13
kanata/.config/systemd/user/gammastep.service
Normal file
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Gamma-colour filter (red-shift) for Wayland
|
||||
After=graphical-session.target
|
||||
PartOf=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/gammastep -l 47.38:8.54 -t 6000:4000
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
83
kanata/.config/systemd/user/imple
Normal file
83
kanata/.config/systemd/user/imple
Normal file
@@ -0,0 +1,83 @@
|
||||
[m[38:2:144:140:170;48:2:42:39:63m [38:2:109:128:134m [22;1;38:2:144:140:170mwob.service[22m
|
||||
[m 1 [38:2:156:207:216m┆
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[38:2:110:106:134m~
|
||||
[m[22;1;38:2:35:33:54;48:2:234:154:151m NORMAL [22;38:2:234:154:151;48:2:42:39:63m[38:2:224:222:244m wob.service [38:2:57:53:82m[38:2:234:154:151;48:2:57:53:82m Top [22;1;38:2:35:33:54;48:2:234:154:151m 1:1
|
||||
@@ -1,47 +1,56 @@
|
||||
background #282828
|
||||
foreground #d4be98
|
||||
## name: Rosé Pine Moon
|
||||
## author: mvllow
|
||||
## license: MIT
|
||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine-moon.conf
|
||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
||||
|
||||
selection_background #d4be98
|
||||
selection_foreground #282828
|
||||
foreground #e0def4
|
||||
background #232136
|
||||
selection_foreground #e0def4
|
||||
selection_background #44415a
|
||||
|
||||
cursor #a89984
|
||||
cursor_text_color background
|
||||
cursor #56526e
|
||||
cursor_text_color #e0def4
|
||||
|
||||
active_tab_background #282828
|
||||
active_tab_foreground #d4be98
|
||||
active_tab_font_style bold
|
||||
inactive_tab_background #282828
|
||||
inactive_tab_foreground #a89984
|
||||
inactive_tab_font_style normal
|
||||
url_color #c4a7e7
|
||||
|
||||
# Black
|
||||
color0 #665c54
|
||||
color8 #928374
|
||||
active_tab_foreground #e0def4
|
||||
active_tab_background #393552
|
||||
inactive_tab_foreground #6e6a86
|
||||
inactive_tab_background #232136
|
||||
|
||||
# Red
|
||||
color1 #ea6962
|
||||
color9 #ea6962
|
||||
active_border_color #3e8fb0
|
||||
inactive_border_color #44415a
|
||||
|
||||
# Green
|
||||
color2 #a9b665
|
||||
color10 #a9b665
|
||||
# black
|
||||
color0 #393552
|
||||
color8 #6e6a86
|
||||
|
||||
# Yellow
|
||||
color3 #e78a4e
|
||||
color11 #d8a657
|
||||
# red
|
||||
color1 #eb6f92
|
||||
color9 #eb6f92
|
||||
|
||||
# Blue
|
||||
color4 #7daea3
|
||||
color12 #7daea3
|
||||
# green
|
||||
color2 #3e8fb0
|
||||
color10 #3e8fb0
|
||||
|
||||
# Magenta
|
||||
color5 #d3869b
|
||||
color13 #d3869b
|
||||
# yellow
|
||||
color3 #f6c177
|
||||
color11 #f6c177
|
||||
|
||||
# Cyan
|
||||
color6 #89b482
|
||||
color14 #89b482
|
||||
# blue
|
||||
color4 #9ccfd8
|
||||
color12 #9ccfd8
|
||||
|
||||
# magenta
|
||||
color5 #c4a7e7
|
||||
color13 #c4a7e7
|
||||
|
||||
# cyan
|
||||
color6 #ea9a97
|
||||
color14 #ea9a97
|
||||
|
||||
# white
|
||||
color7 #e0def4
|
||||
color15 #e0def4
|
||||
|
||||
# White
|
||||
color7 #d4be98
|
||||
color15 #d4be98
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# BEGIN_KITTY_THEME
|
||||
# Gruvbox Material
|
||||
# Rosé Pine Moon
|
||||
include current-theme.conf
|
||||
# END_KITTY_THEME
|
||||
#
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
# BEGIN_KITTY_THEME
|
||||
# Catppuccin-Mocha
|
||||
# Gruvbox Material
|
||||
include current-theme.conf
|
||||
# END_KITTY_THEME
|
||||
#
|
||||
shell zsh --login
|
||||
|
||||
font_family JetBrainsMono Nerd Font
|
||||
bold_font JetBrainsMono Nerd Font Bold
|
||||
italic_font JetBrainsMono Nerd Font Italic
|
||||
bold_italic_font JetBrainsMono Nerd Font Bold Italic
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
|
||||
font_size 12
|
||||
|
||||
# background_opacity 0.95
|
||||
background_opacity 0.90
|
||||
|
||||
term xterm-256color
|
||||
|
||||
# allow_hyperlinks yes
|
||||
allow_hyperlinks yes
|
||||
|
||||
# copy_on_select yes
|
||||
# paste_actions confirm-if-large
|
||||
copy_on_select yes
|
||||
paste_actions confirm-if-large
|
||||
|
||||
|
||||
@@ -34,14 +34,14 @@ environment {
|
||||
}
|
||||
output "eDP-1" {
|
||||
mode "2880x1800@59.990"
|
||||
scale 1.2
|
||||
scale 1.1
|
||||
position x=0 y=0
|
||||
focus-at-startup
|
||||
}
|
||||
output "HDMI-A-1" {
|
||||
output "DP-4" {
|
||||
mode "2560x1440@59.951"
|
||||
position x=1645 y=0
|
||||
scale 1.0
|
||||
scale 0.8
|
||||
}
|
||||
layout {
|
||||
gaps 2
|
||||
@@ -79,6 +79,7 @@ spawn-at-startup "waybar" "-c" "/home/liph/.config/niri/waybar-niri/config.jsonc
|
||||
spawn-at-startup "swaync"
|
||||
// spawn-at-startup "kanshi"
|
||||
spawn-at-startup "swww-daemon"
|
||||
spawn-at-startup "xwayland-satellite"
|
||||
spawn-at-startup "kitty"
|
||||
spawn-at-startup "librewolf"
|
||||
spawn-at-startup "sh" "-c" "sleep 5 && exec swayidle -w timeout 300 hyprlock timeout 600 'niri msg action power-off-monitors' resume 'niri msg action power-on-monitors' timeout 3600 'systemctl suspend'"
|
||||
@@ -140,35 +141,35 @@ window-rule {
|
||||
window-rule {
|
||||
match app-id="floating_btop"
|
||||
default-column-width {
|
||||
proportion 0.5
|
||||
proportion 0.6667
|
||||
}
|
||||
open-floating true
|
||||
}
|
||||
window-rule {
|
||||
match app-id="floating_htop"
|
||||
default-column-width {
|
||||
proportion 0.5
|
||||
proportion 0.6667
|
||||
}
|
||||
open-floating true
|
||||
}
|
||||
window-rule {
|
||||
match app-id="floating_bluetui"
|
||||
default-column-width {
|
||||
proportion 0.5
|
||||
proportion 0.6667
|
||||
}
|
||||
open-floating true
|
||||
}
|
||||
window-rule {
|
||||
match app-id="floating_pulsemixer"
|
||||
default-column-width {
|
||||
proportion 0.5
|
||||
proportion 0.6667
|
||||
}
|
||||
open-floating true
|
||||
}
|
||||
window-rule {
|
||||
match app-id="floating_wavemon"
|
||||
default-column-width {
|
||||
proportion 0.5
|
||||
proportion 0.6667
|
||||
}
|
||||
open-floating true
|
||||
}
|
||||
@@ -217,6 +218,9 @@ binds {
|
||||
Mod+Mod5+R hotkey-overlay-title="Open Bluetui" {
|
||||
spawn "kitty" "--class" "floating_bluetui" "-e" "bluetui"
|
||||
}
|
||||
Mod+Mod5+T hotkey-overlay-title="Open Wavemon" {
|
||||
spawn "kitty" "--class" "floating_wavemon" "-e" "wavemon"
|
||||
}
|
||||
// Brightness Controll
|
||||
Mod+Ctrl+0 {
|
||||
spawn "sh" "-c" "~/scripts/layer_notify.sh 0"
|
||||
@@ -528,6 +532,10 @@ binds {
|
||||
Mod+Shift+4 {
|
||||
spawn "sh" "-c" "grim -g \"$(slurp)\" - | wl-copy && notify-send -t 2000 'Screenshot' 'Area copied to clipboard'"
|
||||
}
|
||||
// area screenshot → annotate in swappy
|
||||
Mod+Shift+5 {
|
||||
spawn "sh" "-c" "grim -g \"$(slurp)\" - | swappy -f -"
|
||||
}
|
||||
Mod+Escape allow-inhibiting=false {
|
||||
toggle-keyboard-shortcuts-inhibit
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
],
|
||||
"runtime.unicodeName": true,
|
||||
"diagnostics.disable": [
|
||||
"undefined-doc-name"
|
||||
"undefined-doc-name",
|
||||
"assign-type-mismatch"
|
||||
]
|
||||
}
|
||||
89
nvim/.config/nvim/after/ftplugin/html.lua
Normal file
89
nvim/.config/nvim/after/ftplugin/html.lua
Normal file
@@ -0,0 +1,89 @@
|
||||
-- after/ftplugin/html.lua (or just :source % once)
|
||||
local port = 8085
|
||||
local root = vim.loop.cwd()
|
||||
local job_id = nil
|
||||
|
||||
vim.api.nvim_create_user_command("Serve", function()
|
||||
-- kill previous python instance
|
||||
if job_id then
|
||||
vim.fn.jobstop(job_id)
|
||||
end
|
||||
|
||||
-- one-liner HTTP server + websocket broadcast
|
||||
local script = ([[
|
||||
import http.server, os, subprocess, threading, time, mimetypes, json
|
||||
from http.server import HTTPServer, SimpleHTTPRequestHandler
|
||||
import websockets, asyncio, pathlib
|
||||
|
||||
ROOT = %q
|
||||
PORT = %d
|
||||
clients = set()
|
||||
|
||||
class Handler(SimpleHTTPRequestHandler):
|
||||
def log_message(self, fmt, *args): pass # shut up
|
||||
def do_GET(self):
|
||||
if self.path == '/':
|
||||
self.path = '/index.html'
|
||||
# inject tiny reload script into every HTML
|
||||
if self.path.endswith('.html'):
|
||||
ctype = 'text/html; charset=utf-8'
|
||||
with open(os.path.join(ROOT, self.path.lstrip('/')), 'rb') as f:
|
||||
content = f.read().decode()
|
||||
inject = '<script>let ws=new WebSocket("ws://localhost:%d/ws");ws.onmessage=()=>location.reload()</script>'
|
||||
content = content.replace('</body>', inject .. '</body>')
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', ctype)
|
||||
self.end_headers()
|
||||
self.wfile.write(content.encode())
|
||||
else:
|
||||
super().do_GET()
|
||||
|
||||
async def ws_handler(websocket):
|
||||
clients.add(websocket)
|
||||
try:
|
||||
await websocket.wait_closed()
|
||||
finally:
|
||||
clients.remove(websocket)
|
||||
|
||||
async def websocket_main():
|
||||
await websockets.serve(ws_handler, "localhost", %d, path="/ws")
|
||||
|
||||
def broadcast_reload():
|
||||
for c in clients:
|
||||
asyncio.run(c.send("reload"))
|
||||
clients.clear()
|
||||
|
||||
def reload_loop():
|
||||
while True:
|
||||
time.sleep(0.05)
|
||||
try:
|
||||
subprocess.check_call(["inotifywait", "-e", "close_write", "-t", "0", ROOT],
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
broadcast_reload()
|
||||
except: pass # inotify not installed → noop (manual F5 still works)
|
||||
|
||||
def main():
|
||||
threading.Thread(target=reload_loop, daemon=True).start()
|
||||
asyncio.set_event_loop(asyncio.new_event_loop())
|
||||
threading.Thread(target=lambda: asyncio.run(websocket_main()), daemon=True).start()
|
||||
HTTPServer(("", PORT), Handler).serve_forever()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
]]):format(root, port, port, port)
|
||||
|
||||
job_id = vim.fn.jobstart({ "python", "-c", script }, { stdout_buffered = true })
|
||||
vim.fn.jobstart({ "sleep", "0.2" }, {
|
||||
on_exit = function()
|
||||
vim.ui.open(("http://localhost:%d"):format(port))
|
||||
end,
|
||||
})
|
||||
vim.notify("Serving → http://localhost:" .. port, vim.log.levels.INFO)
|
||||
end, {})
|
||||
|
||||
vim.api.nvim_create_user_command("ServeStop", function()
|
||||
if job_id then
|
||||
vim.fn.jobstop(job_id)
|
||||
job_id = nil
|
||||
end
|
||||
end, {})
|
||||
@@ -21,7 +21,7 @@ function _G.mail_complete(findstart, base)
|
||||
if findstart == 1 then
|
||||
-- Find start of word
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
local col = vim.fn.col('.')
|
||||
local col = vim.fn.col(".")
|
||||
local line_to_cursor = line:sub(1, col - 1)
|
||||
|
||||
-- Only on header lines
|
||||
@@ -60,15 +60,15 @@ function _G.mail_complete(findstart, base)
|
||||
end
|
||||
|
||||
-- Set omnifunc
|
||||
vim.bo.omnifunc = 'v:lua.mail_complete'
|
||||
vim.bo.omnifunc = "v:lua.mail_complete"
|
||||
|
||||
-- Map Tab to trigger completion on header lines
|
||||
vim.keymap.set('i', '<Tab>', function()
|
||||
vim.keymap.set("i", "<Tab>", function()
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
if line:match("^%s*[ToCcBcFrom]+:%s*") then
|
||||
return '<C-x><C-o>'
|
||||
return "<C-x><C-o>"
|
||||
else
|
||||
return '<Tab>'
|
||||
return "<Tab>"
|
||||
end
|
||||
end, { expr = true, buffer = true })
|
||||
|
||||
@@ -120,9 +120,7 @@ local function pick_email()
|
||||
end
|
||||
|
||||
-- Map Ctrl+f to pick email (Option 3)
|
||||
vim.keymap.set('i', '<C-f>', pick_email, { buffer = true, desc = "Pick email address with fzf" })
|
||||
vim.keymap.set("i", "<C-f>", pick_email, { buffer = true, desc = "Pick email address with fzf" })
|
||||
|
||||
-- Optional: Map Ctrl+a for Tab completion manually (in case Tab doesn't work)
|
||||
vim.keymap.set('i', '<C-a>', '<C-x><C-o>', { buffer = true, desc = "Trigger address completion" })
|
||||
```
|
||||
im.keymap.set("i", "<C-a>", "<C-x><C-o>", { buffer = true, desc = "Trigger address completion" })
|
||||
vim.keymap.set("i", "<C-a>", "<C-x><C-o>", { buffer = true, desc = "Trigger address completion" })
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
|
||||
"R.nvim": { "branch": "main", "commit": "80268b5a66ad48e308513cb0ebccc16d5e1e7d5a" },
|
||||
"R.nvim": { "branch": "main", "commit": "659dc18aba2d2b799c04efbce66a15ea87bd6ec6" },
|
||||
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
|
||||
"catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
@@ -10,7 +10,8 @@
|
||||
"cmp-nvim-lua": { "branch": "main", "commit": "e3a22cb071eb9d6508a156306b102c45cd2d573d" },
|
||||
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||
"cmp-r": { "branch": "main", "commit": "70bfe8f4c062acc10266e24825439c009a0b1b89" },
|
||||
"cmp-tabnine": { "branch": "main", "commit": "c0167cdc86c15e782c5461ee62aebee89231c2ed" },
|
||||
"cmp-vimtex": { "branch": "master", "commit": "5283bf9108ef33d41e704027b9ef22437ce7a15b" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" },
|
||||
"dashboard-nvim": { "branch": "master", "commit": "0775e567b6c0be96d01a61795f7b64c1758262f6" },
|
||||
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||
@@ -19,14 +20,15 @@
|
||||
"everforest": { "branch": "master", "commit": "b03a03148c8b34c24c96960b93da9c8883d11f54" },
|
||||
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||
"fzf-lua": { "branch": "main", "commit": "c86b72c62b01d2242cafa45fb0d1fc3bf66e6a2b" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "1ce96a464fdbc24208e24c117e2021794259005d" },
|
||||
"fzf-lua": { "branch": "main", "commit": "fb8c50ba62a0daa433b7ac2b78834f318322b879" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "31217271a7314c343606acb4072a94a039a19fb5" },
|
||||
"grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" },
|
||||
"gruvbox-mat": { "branch": "master", "commit": "790afe9dd085aa04eccd1da3626c5fa05c620e53" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||
"kanagawa.nvim": { "branch": "master", "commit": "aef7f5cec0a40dbe7f3304214850c472e2264b10" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
|
||||
"live-preview.nvim": { "branch": "main", "commit": "f056b4b859d54595afce53e67129f7684380d3ba" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
||||
"luvit-meta": { "branch": "main", "commit": "0ea4ff636c5bb559ffa78108561d0976f4de9682" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "ae609525ddf01c153c39305730b1791800ffe4fe" },
|
||||
@@ -41,20 +43,22 @@
|
||||
"nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||
"nvim-lint": { "branch": "master", "commit": "bcd1a44edbea8cd473af7e7582d3f7ffc60d8e81" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "0480b120318ec8bab27b530ffab6ee76a8c4d806" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "f4e9d367d4e067d7a5fabc9fd3f1349b291eb718" },
|
||||
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
|
||||
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
|
||||
"nvim-spectre": { "branch": "master", "commit": "72f56f7585903cd7bf92c665351aa585e150af0f" },
|
||||
"nvim-surround": { "branch": "main", "commit": "1098d7b3c34adcfa7feb3289ee434529abd4afd1" },
|
||||
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "70a9fecaf5aeae70c765d4c51a8038165a91aa06" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "9f2dad22ef8bb14fd1e0a3aa8859cdc88170668b" },
|
||||
"nvim-treesitter-textobjects": { "branch": "main", "commit": "a0e182ae21fda68c59d1f36c9ed45600aef50311" },
|
||||
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
|
||||
"nvim-ufo": { "branch": "main", "commit": "ab3eb124062422d276fae49e0dd63b3ad1062cfc" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "746ffbb17975ebd6c40142362eee1b0249969c5c" },
|
||||
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
||||
"onedark-warm": { "branch": "master", "commit": "213c23ae45a04797572242568d5d51937181792d" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"portal.nvim": { "branch": "main", "commit": "77d9d53fec945bfa407d5fd7120f1b4f117450ed" },
|
||||
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "d6b802552cbe7d643a3b6b31f419c248d1f1e220" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "48b4175dbca8439d30c1f52231cbe5a712c8f9d9" },
|
||||
"rose-pine": { "branch": "main", "commit": "cf2a288696b03d0934da713d66c6d71557b5c997" },
|
||||
@@ -62,9 +66,11 @@
|
||||
"sonokai": { "branch": "master", "commit": "b023c5280b16fe2366f5e779d8d2756b3e5ee9c3" },
|
||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "ad7d9580338354ccc136e5b8f0aa4f880434dcdc" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||
"tokyonight": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"vimtex": { "branch": "master", "commit": "f707368022cdb851716be0d2970b90599c84a6a6" },
|
||||
"vimtex": { "branch": "master", "commit": "95b93a24740f7b89dd8331326b41bdd1337d79f6" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
|
||||
"yazi.nvim": { "branch": "main", "commit": "b3df5d00bbf5cd862b853993135598f12b2eb3b5" }
|
||||
"yazi.nvim": { "branch": "main", "commit": "a3fe7b5855254974837c23c915865478b0d54534" }
|
||||
}
|
||||
|
||||
65
nvim/.config/nvim/lua/plugins.inactive/completions_1.lua
Normal file
65
nvim/.config/nvim/lua/plugins.inactive/completions_1.lua
Normal file
@@ -0,0 +1,65 @@
|
||||
-- completions.lua: Provides intelligent code completion via LSP or snippet engines.
|
||||
-- completion.lua (nvim-cmp + LuaSnip)
|
||||
return {
|
||||
------------------------------------------------------------------
|
||||
-- 1. Snippet engine & pre-made snippets
|
||||
------------------------------------------------------------------
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
version = "v2.*",
|
||||
build = "make install_jsregexp",
|
||||
dependencies = { "rafamadriz/friendly-snippets" },
|
||||
},
|
||||
------------------------------------------------------------------
|
||||
-- 2. Core completion engine + standard sources
|
||||
------------------------------------------------------------------
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
"hrsh7th/cmp-buffer",
|
||||
"hrsh7th/cmp-path",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
"hrsh7th/cmp-nvim-lua",
|
||||
"micangl/cmp-vimtex",
|
||||
},
|
||||
------------------------------------------------------------------
|
||||
-- 3. nvim-cmp setup
|
||||
------------------------------------------------------------------
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<Tab>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||
["<S-Tab>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<C-e>"] = cmp.mapping.abort(),
|
||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
{ name = "vimtex" },
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip" },
|
||||
{ name = "nvim_lua" },
|
||||
}, {
|
||||
{ name = "buffer" },
|
||||
{ name = "path" },
|
||||
}),
|
||||
})
|
||||
-- cmd-line completion
|
||||
cmp.setup.cmdline({ "/", "?" }, { sources = { { name = "buffer" } } })
|
||||
cmp.setup.cmdline(":", { sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } }) })
|
||||
end,
|
||||
},
|
||||
}
|
||||
92
nvim/.config/nvim/lua/plugins.inactive/dap.lua
Normal file
92
nvim/.config/nvim/lua/plugins.inactive/dap.lua
Normal file
@@ -0,0 +1,92 @@
|
||||
-- lua/plugins/dap.lua
|
||||
return {
|
||||
{ "mfussenegger/nvim-dap" }, -- core debugger client
|
||||
{ "rcarriga/nvim-dap-ui", dependencies = { "mfussenegger/nvim-dap" } },
|
||||
|
||||
-- Adapter bridge (Mason downloads the compiled server for us)
|
||||
{
|
||||
"mxsdev/nvim-dap-vscode-js",
|
||||
dependencies = { "mfussenegger/nvim-dap" },
|
||||
config = function()
|
||||
local mason_js = vim.fn.stdpath "data"
|
||||
.. "/mason/packages/js-debug-adapter" -- Mason path
|
||||
require("dap-vscode-js").setup {
|
||||
node_path = "node", -- node binary
|
||||
debugger_path = mason_js, -- root dir of js-debug
|
||||
adapters = { "pwa-node","pwa-chrome","pwa-msedge","node-terminal" }
|
||||
}
|
||||
end
|
||||
},
|
||||
|
||||
-- Ensure js-debug-adapter is present (Mason does the download)
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
cmd = { "Mason" },
|
||||
config = true,
|
||||
},
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim", -- pull Mason registry
|
||||
opts = function(_, o)
|
||||
o.ensure_installed = o.ensure_installed or {}
|
||||
vim.list_extend(o.ensure_installed, { "js-debug-adapter" })
|
||||
end
|
||||
},
|
||||
|
||||
-- Optional key-maps (adapt to your taste)
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
keys = {
|
||||
{ "<F5>", function() require("dap").continue() end, desc="Start / Continue" },
|
||||
{ "<F9>", function() require("dap").toggle_breakpoint() end, desc="Toggle BP" },
|
||||
{ "<F10>", function() require("dap").step_over() end, desc="Step over" },
|
||||
{ "<F11>", function() require("dap").step_into() end, desc="Step into" },
|
||||
{ "<S-F11>",function() require("dap").step_out() end, desc="Step out" },
|
||||
}
|
||||
},
|
||||
|
||||
-- Debugger UI (optional)
|
||||
{
|
||||
"rcarriga/nvim-dap-ui",
|
||||
opts = {},
|
||||
keys = {
|
||||
{ "<leader>du", function() require("dapui").toggle() end, desc="Dap-UI" },
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-- -------------------------------------------------------------
|
||||
-- Launch / attach configurations
|
||||
-- -------------------------------------------------------------
|
||||
local dap = require "dap"
|
||||
|
||||
dap.configurations.javascript = {
|
||||
-- 1. Run current file with node
|
||||
{
|
||||
name = "Launch Node file",
|
||||
type = "pwa-node",
|
||||
request = "launch",
|
||||
program = "${file}",
|
||||
cwd = "${workspaceFolder}",
|
||||
stopOnEntry = false,
|
||||
},
|
||||
-- 2. Attach to an existing node process (started with --inspect)
|
||||
{
|
||||
name = "Attach to node process",
|
||||
type = "pwa-node",
|
||||
request = "attach",
|
||||
processId = require("dap.utils").pick_process
|
||||
},
|
||||
-- 3. Launch Chrome and attach to page
|
||||
{
|
||||
name = "Launch Chrome & attach",
|
||||
type = "pwa-chrome",
|
||||
request = "launch",
|
||||
url = "http://localhost:8080",
|
||||
webRoot = "${workspaceFolder}",
|
||||
userDataDir = false -- reuse your normal profile
|
||||
}
|
||||
}
|
||||
|
||||
-- share same configs for TS
|
||||
dap.configurations.typescript = dap.configurations.javascript
|
||||
dap.configurations.typescriptreact = dap.configurations.javascript
|
||||
71
nvim/.config/nvim/lua/plugins.inactive/emmet.lua
Normal file
71
nvim/.config/nvim/lua/plugins.inactive/emmet.lua
Normal file
@@ -0,0 +1,71 @@
|
||||
return {
|
||||
"olimorris/emmet-ls",
|
||||
ft = {
|
||||
"html",
|
||||
"htm",
|
||||
"css",
|
||||
"scss",
|
||||
"sass",
|
||||
"less",
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"vue",
|
||||
"svelte",
|
||||
"php",
|
||||
"xml",
|
||||
"xsl",
|
||||
},
|
||||
config = function()
|
||||
-- Enable snippet support
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||
|
||||
-- Set up emmet-ls using the new method
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = {
|
||||
"html",
|
||||
"htm",
|
||||
"css",
|
||||
"scss",
|
||||
"sass",
|
||||
"less",
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"vue",
|
||||
"svelte",
|
||||
"php",
|
||||
"xml",
|
||||
"xsl",
|
||||
},
|
||||
callback = function(args)
|
||||
vim.lsp.start({
|
||||
name = "emmet-ls",
|
||||
cmd = { "emmet-ls", "--stdio" },
|
||||
root_dir = vim.fs.dirname(vim.fs.find({ ".git" }, { upward = true })[1]),
|
||||
capabilities = capabilities,
|
||||
filetypes = {
|
||||
"html",
|
||||
"htm",
|
||||
"css",
|
||||
"scss",
|
||||
"sass",
|
||||
"less",
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"vue",
|
||||
"svelte",
|
||||
"php",
|
||||
"xml",
|
||||
"xsl",
|
||||
},
|
||||
})
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
17
nvim/.config/nvim/lua/plugins.inactive/noice.lua
Normal file
17
nvim/.config/nvim/lua/plugins.inactive/noice.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
-- noice.lua: Replaces default UI messages with polished, keyboard-friendly notifications.
|
||||
|
||||
return { -- lazy.nvim
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- OPTIONAL:
|
||||
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||
-- If not available, we use `mini` as the fallback
|
||||
"rcarriga/nvim-notify",
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
-- ~/.config/nvim/lua/plugins/nvim-ufo.lua
|
||||
return {
|
||||
"kevinhwang91/nvim-ufo",
|
||||
dependencies = "kevinhwang91/promise-async",
|
||||
@@ -26,13 +27,14 @@ return {
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local ufo = require("ufo")
|
||||
ufo.setup({
|
||||
provider_selector = function(bufnr, filetype, buftype)
|
||||
-- prefer LSP, fall back to treesitter
|
||||
return { "lsp", "treesitter" }
|
||||
require("ufo").setup({
|
||||
provider_selector = function(_, filetype)
|
||||
-- File-types that constantly throw UfoFallbackException → skip TS
|
||||
local noisy = { "html", "css", "json", "yaml", "txt", "md" }
|
||||
if vim.tbl_contains(noisy, filetype) then
|
||||
return { "lsp", "indent" } -- 2 providers max → no warning
|
||||
end
|
||||
end,
|
||||
fold_virt_text_handler = ufo.handler, -- default virtual text
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
88
nvim/.config/nvim/lua/plugins.inactive/vimtex.lua
Normal file
88
nvim/.config/nvim/lua/plugins.inactive/vimtex.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
-- vimtex.lua: Full LaTeX editing support (compiling, viewing, and syntax).
|
||||
|
||||
return {
|
||||
"lervag/vimtex",
|
||||
ft = "tex",
|
||||
config = function()
|
||||
-- PDF viewer
|
||||
vim.g.vimtex_view_method = "zathura"
|
||||
|
||||
-- Compiler settings
|
||||
vim.g.vimtex_compiler_latexmk = {
|
||||
continuous = 1,
|
||||
callback = 1,
|
||||
options = {
|
||||
"-pdf",
|
||||
"-shell-escape",
|
||||
"-verbose",
|
||||
"-file-line-error",
|
||||
"-synctex=1",
|
||||
"-interaction=nonstopmode",
|
||||
},
|
||||
}
|
||||
-- Concealment (makes LaTeX prettier to read)
|
||||
vim.g.vimtex_syntax_conceal = {
|
||||
accents = 1,
|
||||
math_symbols = 1,
|
||||
math_fracs = 1,
|
||||
math_super_sub = 1,
|
||||
}
|
||||
|
||||
vim.g.vimtex_toc_config = {
|
||||
name = "TOC",
|
||||
layers = { "content", "todo", "include" },
|
||||
split_width = 25,
|
||||
todo_sorted = 0,
|
||||
show_help = 1,
|
||||
show_numbers = 1,
|
||||
}
|
||||
|
||||
-- Don't open quickfix window automatically
|
||||
vim.g.vimtex_quickfix_mode = 0
|
||||
|
||||
-- kenable folding
|
||||
vim.g.vimtex_fold_enabled = 1
|
||||
|
||||
-- What to fold (customize as needed)
|
||||
vim.g.vimtex_fold_types = {
|
||||
envs = {
|
||||
enabled = 1,
|
||||
whitelist = {}, -- Empty = all environments
|
||||
blacklist = {},
|
||||
},
|
||||
sections = {
|
||||
enabled = 1,
|
||||
sections = {
|
||||
"%(add)?part",
|
||||
"%(chapter|%(sub)*section|%(sub)?paragraph)",
|
||||
"appendix",
|
||||
},
|
||||
},
|
||||
items = {
|
||||
enabled = 0, -- Don't fold individual list items
|
||||
},
|
||||
}
|
||||
|
||||
-- Disable some features for better performance (optional)
|
||||
vim.g.vimtex_indent_enabled = 1
|
||||
vim.g.vimtex_syntax_enabled = 1
|
||||
|
||||
vim.g.vimtex_syntax_conceal = {
|
||||
accents = 1,
|
||||
ligatures = 1,
|
||||
cites = 1,
|
||||
fancy = 1,
|
||||
spacing = 1,
|
||||
greek = 1,
|
||||
math_bounds = 1,
|
||||
math_delimiters = 1,
|
||||
math_fracs = 1,
|
||||
math_super_sub = 1,
|
||||
math_symbols = 1,
|
||||
sections = 0,
|
||||
styles = 1,
|
||||
}
|
||||
|
||||
vim.opt.conceallevel = 2
|
||||
end,
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
-- completions.lua: Provides intelligent code completion via LSP or snippet engines.
|
||||
-- completion.lua (nvim-cmp + LuaSnip)
|
||||
|
||||
return {
|
||||
------------------------------------------------------------------
|
||||
-- 1. Snippet engine & pre-made snippets
|
||||
@@ -9,8 +10,14 @@ return {
|
||||
version = "v2.*",
|
||||
build = "make install_jsregexp",
|
||||
dependencies = { "rafamadriz/friendly-snippets" },
|
||||
config = function()
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
require("luasnip.loaders.from_lua").load({
|
||||
paths = { vim.fn.stdpath("config") .. "/snippets" },
|
||||
})
|
||||
end,
|
||||
},
|
||||
------------------------------------------------------------------
|
||||
--------------------------------------------------------------
|
||||
-- 2. Core completion engine + standard sources
|
||||
------------------------------------------------------------------
|
||||
{
|
||||
@@ -21,43 +28,59 @@ return {
|
||||
"hrsh7th/cmp-path",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
"hrsh7th/cmp-nvim-lua",
|
||||
"micangl/cmp-vimtex",
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
},
|
||||
------------------------------------------------------------------
|
||||
-- 3. nvim-cmp setup
|
||||
------------------------------------------------------------------
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body)
|
||||
luasnip.lsp_expand(args.body) -- Correctly calls LuaSnip [3]
|
||||
end,
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<Tab>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||
["<S-Tab>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<C-e>"] = cmp.mapping.abort(),
|
||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
|
||||
-- Fix: Tab now handles expansion and jumping
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip" },
|
||||
{ name = "nvim_lua" },
|
||||
{ name = "luasnip", priority = 1000 }, -- Priority 2: Standard Snippets
|
||||
{ name = "nvim_lsp", priority = 750 }, -- Priority 1: LSP (Snippets)
|
||||
{ name = "vimtex", priority = 500 }, -- Priority 3: Vimtex (Text/Commands)
|
||||
{ name = "nvim_lua", priority = 250 },
|
||||
}, {
|
||||
{ name = "buffer" },
|
||||
{ name = "path" },
|
||||
}),
|
||||
})
|
||||
-- cmd-line completion
|
||||
cmp.setup.cmdline({ "/", "?" }, { sources = { { name = "buffer" } } })
|
||||
cmp.setup.cmdline(":", { sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } }) })
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -77,15 +77,15 @@ return {
|
||||
key_hl = "Number",
|
||||
action = "ObsidianQuickSwitch",
|
||||
},
|
||||
-- {
|
||||
-- icon = " ",
|
||||
-- icon_hl = "Title",
|
||||
-- desc = "Projects (SPC fp) ", -- Note: shows keymap
|
||||
-- desc_hl = "String",
|
||||
-- key = "p",
|
||||
-- key_hl = "Number",
|
||||
-- action = "Telescope projections", -- Will lazy-load when pressed
|
||||
-- },
|
||||
{
|
||||
icon = " ",
|
||||
icon_hl = "Title",
|
||||
desc = "Projects (SPC fp) ", -- Note: shows keymap
|
||||
desc_hl = "String",
|
||||
key = "p",
|
||||
key_hl = "Number",
|
||||
action = "Telescope projections", -- Will lazy-load when pressed
|
||||
},
|
||||
{
|
||||
icon = " ",
|
||||
icon_hl = "Title",
|
||||
|
||||
26
nvim/.config/nvim/lua/plugins/live-preview.lua
Normal file
26
nvim/.config/nvim/lua/plugins/live-preview.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
-- ~/.config/nvim/lua/plugins/live-preview.lua
|
||||
return {
|
||||
"brianhuster/live-preview.nvim",
|
||||
dev = false,
|
||||
cmd = { "LivePreview", "LivePreviewStop" },
|
||||
keys = {
|
||||
{ "<leader>lp", "<cmd>LivePreview<CR>", desc = "Start live HTML preview" },
|
||||
},
|
||||
config = function()
|
||||
require("live-preview").setup({
|
||||
port = 3027, -- local server port
|
||||
browser = "default", -- system browser
|
||||
dynamic_root = true, -- serve from the project root
|
||||
autokill = false, -- keep server alive when you leave nvim
|
||||
})
|
||||
|
||||
-- (optional) auto-save on change so the browser refreshes
|
||||
vim.o.autowriteall = true
|
||||
vim.api.nvim_create_autocmd({ "InsertLeavePre", "TextChanged" }, {
|
||||
pattern = "*.{html,htm,css,js,md}",
|
||||
callback = function()
|
||||
vim.cmd("silent! write")
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -95,7 +95,7 @@ return {
|
||||
language = "en-US",
|
||||
enabled = { "latex", "tex", "bib", "markdown", "mail", "text" },
|
||||
checkFrequency = "save", -- Only check when you save, not on every keystroke
|
||||
diagnosticSeverity = "hint", -- Less intrusive
|
||||
diagnosticSeverity = "warning", -- Less intrusive
|
||||
completionEnabled = true,
|
||||
additionalRules = {
|
||||
enablePickyRules = true,
|
||||
|
||||
@@ -15,6 +15,7 @@ return {
|
||||
ensure_installed = {
|
||||
"lua_ls",
|
||||
"pyright",
|
||||
"emmet_ls",
|
||||
"bashls",
|
||||
"ts_ls",
|
||||
"solargraph",
|
||||
|
||||
@@ -1,18 +1,32 @@
|
||||
-- noice.lua: Replaces default UI messages with polished, keyboard-friendly notifications.
|
||||
|
||||
return { -- lazy.nvim
|
||||
return {
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
-- add any options here
|
||||
cmdline = {
|
||||
view = "cmdline_popup",
|
||||
opts = { border = { style = "rounded", padding = { 0, 1 } } },
|
||||
},
|
||||
messages = {
|
||||
view = "notify",
|
||||
view_opts = { border = { style = "rounded", padding = { 0, 1 } } },
|
||||
},
|
||||
popupmenu = {
|
||||
backend = "nui",
|
||||
nui = { border = { style = "rounded", padding = { 0, 1 } } },
|
||||
},
|
||||
lsp = {
|
||||
hover = { opts = { border = { style = "rounded", padding = { 0, 1 } } } },
|
||||
signature = { opts = { border = { style = "rounded", padding = { 0, 1 } } } },
|
||||
},
|
||||
presets = {
|
||||
lsp_doc_border = true, -- adds border to hover/signature automatically
|
||||
},
|
||||
},
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- OPTIONAL:
|
||||
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||
-- If not available, we use `mini` as the fallback
|
||||
"rcarriga/nvim-notify",
|
||||
},
|
||||
},
|
||||
|
||||
@@ -12,8 +12,8 @@ return {
|
||||
opts = {
|
||||
workspaces = {
|
||||
{
|
||||
name = "personal",
|
||||
path = "/mnt/flash1/podman/nextcloud/config/obsidian/vaults/Phil/",
|
||||
name = "liph",
|
||||
path = "/mnt/flash1/podman/nextcloud/config/obsidian/vaults",
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
68
nvim/.config/nvim/lua/plugins/todo-comments.lua
Normal file
68
nvim/.config/nvim/lua/plugins/todo-comments.lua
Normal file
@@ -0,0 +1,68 @@
|
||||
return {
|
||||
"folke/todo-comments.nvim",
|
||||
event = "VeryLazy", -- start only after UI is ready
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
opts = {
|
||||
signs = true, -- show icons in the sign column
|
||||
sign_priority = 10,
|
||||
keywords = {
|
||||
FIX = { icon = " ", color = "error", alt = { "FIXME", "BUG", "FIXIT", "ISSUE" } },
|
||||
TODO = { icon = " ", color = "info", alt = { "todo" } },
|
||||
HACK = { icon = " ", color = "warning", alt = { "hack" } },
|
||||
WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
|
||||
PERF = { icon = " ", color = "#e6645a", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
||||
NOTE = { icon = " ", color = "hint", alt = { "INFO", "NOTE" } },
|
||||
TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
|
||||
},
|
||||
merge_keywords = true, -- merge with default list above
|
||||
highlight = {
|
||||
before = "", -- "fg" or "bg" or ""
|
||||
keyword = "wide", -- "fg", "bg", "wide" or ""
|
||||
after = "fg", -- "fg" or "bg" or ""
|
||||
pattern = [[.*<(KEYWORDS)\s*:]],
|
||||
comments_only = true, -- highlight only inside comments
|
||||
max_line_len = 400,
|
||||
exclude = {}, -- list of filetypes to exclude
|
||||
},
|
||||
colors = {
|
||||
error = { "DiagnosticError", "#e6645a" },
|
||||
warning = { "DiagnosticWarn", "#ff9e64" },
|
||||
info = { "DiagnosticInfo", "#7aa2f7" },
|
||||
hint = { "DiagnosticHint", "#9ece6a" },
|
||||
test = { "#d4ae5b" },
|
||||
},
|
||||
search = {
|
||||
command = "rg",
|
||||
args = {
|
||||
"--color=never",
|
||||
"--no-heading",
|
||||
"--with-filename",
|
||||
"--line-number",
|
||||
"--column",
|
||||
},
|
||||
pattern = [[\b(KEYWORDS):]], -- ripgrep regex
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
-- navigation between todo-comments
|
||||
{
|
||||
"]t",
|
||||
function()
|
||||
require("todo-comments").jump_next()
|
||||
end,
|
||||
desc = "Next todo comment",
|
||||
},
|
||||
{
|
||||
"[t",
|
||||
function()
|
||||
require("todo-comments").jump_prev()
|
||||
end,
|
||||
desc = "Previous todo comment",
|
||||
},
|
||||
-- telescope / fzf-lua live search
|
||||
{ "<leader>st", "<cmd>TodoTelescope<CR>", desc = "Todo comments (Telescope)" },
|
||||
{ "<leader>sT", "<cmd>TodoFzfLua<CR>", desc = "Todo comments (FzfLua)" },
|
||||
-- Trouble.nvim integration
|
||||
{ "<leader>xt", "<cmd>TodoTrouble<CR>", desc = "Todo comments (Trouble)" },
|
||||
},
|
||||
}
|
||||
59
nvim/.config/nvim/lua/plugins/toggleterm.lua
Normal file
59
nvim/.config/nvim/lua/plugins/toggleterm.lua
Normal file
@@ -0,0 +1,59 @@
|
||||
return {
|
||||
"akinsho/toggleterm.nvim",
|
||||
version = "*",
|
||||
cmd = { "ToggleTerm", "TermExec" },
|
||||
keys = {
|
||||
-- normal terminal (horizontal split)
|
||||
{ "<C-t>", "<cmd>ToggleTerm direction=horizontal<CR>", desc = "Toggle horizontal terminal" },
|
||||
-- floating terminal
|
||||
{ "<C-f>", "<cmd>ToggleTerm direction=float<CR>", desc = "Toggle floating terminal" },
|
||||
-- vertical terminal
|
||||
{ "<leader>tv", "<cmd>ToggleTerm direction=vertical size=60<CR>", desc = "Toggle vertical terminal" },
|
||||
},
|
||||
opts = {
|
||||
size = function(term)
|
||||
if term.direction == "horizontal" then
|
||||
return 15
|
||||
elseif term.direction == "vertical" then
|
||||
return vim.o.columns * 0.4
|
||||
end
|
||||
end,
|
||||
open_mapping = [[<C-t>]],
|
||||
shading_factor = 2,
|
||||
direction = "horizontal",
|
||||
float_opts = {
|
||||
border = "rounded",
|
||||
width = math.floor(vim.o.columns * 0.9),
|
||||
height = math.floor(vim.o.lines * 0.9),
|
||||
winblend = 0,
|
||||
},
|
||||
highlights = {
|
||||
FloatBorder = { link = "FloatBorder" },
|
||||
},
|
||||
persist_size = true,
|
||||
persist_mode = true,
|
||||
shell = vim.o.shell,
|
||||
auto_scroll = true,
|
||||
close_on_exit = true,
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("toggleterm").setup(opts)
|
||||
|
||||
-- send escape to leave terminal mode
|
||||
vim.keymap.set("t", "<Esc>", [[<C-\><C-n>]])
|
||||
|
||||
-- quick access to lazygit (requires lazygit binary)
|
||||
vim.keymap.set("n", "<leader>gg", function()
|
||||
local Terminal = require("toggleterm.terminal").Terminal
|
||||
local lazygit = Terminal:new({
|
||||
cmd = "lazygit",
|
||||
direction = "float",
|
||||
hidden = true,
|
||||
on_open = function(t)
|
||||
vim.api.nvim_buf_set_keymap(t.bufnr, "t", "<Esc>", [[<C-\><C-n>]], { noremap = true, silent = true })
|
||||
end,
|
||||
})
|
||||
lazygit:toggle()
|
||||
end, { desc = "LazyGit floating window" })
|
||||
end,
|
||||
}
|
||||
61
nvim/.config/nvim/lua/plugins/ufo.lua
Normal file
61
nvim/.config/nvim/lua/plugins/ufo.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
return {
|
||||
"kevinhwang91/nvim-ufo",
|
||||
dependencies = "kevinhwang91/promise-async",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
keys = {
|
||||
{
|
||||
"zR",
|
||||
function()
|
||||
require("ufo").openAllFolds()
|
||||
end,
|
||||
desc = "Ufo: open all folds",
|
||||
},
|
||||
{
|
||||
"zM",
|
||||
function()
|
||||
require("ufo").closeAllFolds()
|
||||
end,
|
||||
desc = "Ufo: close all folds",
|
||||
},
|
||||
{
|
||||
"zr",
|
||||
function()
|
||||
require("ufo").openFoldsExceptKinds()
|
||||
end,
|
||||
desc = "Ufo: open outer folds",
|
||||
},
|
||||
|
||||
------------------------------------------------------------------
|
||||
-- 1. Close everything *outside* the current fold hierarchy
|
||||
------------------------------------------------------------------
|
||||
{
|
||||
"zX",
|
||||
function()
|
||||
require("ufo").closeAllFolds() -- close every fold
|
||||
vim.cmd("normal! l") -- ONE right press
|
||||
vim.cmd("normal! zo") -- open fold under cursor
|
||||
vim.cmd("normal! zz") -- keep it centred
|
||||
end,
|
||||
desc = "Close folds outside current (+1 right)",
|
||||
},
|
||||
------------------------------------------------------------------
|
||||
-- 3. helpers you already had
|
||||
------------------------------------------------------------------
|
||||
{ "zt", "za", desc = "Toggle fold under cursor" },
|
||||
},
|
||||
|
||||
config = function()
|
||||
require("ufo").setup({
|
||||
foldlevel = 99,
|
||||
foldlevelstart = 99,
|
||||
provider_selector = function(_, ft)
|
||||
-- Silence the fallback spam by skipping Treesitter for noisy types
|
||||
local noisy = { "html", "css", "json", "yaml", "txt", "markdown", "zsh" }
|
||||
if vim.tbl_contains(noisy, ft) then
|
||||
return { "lsp", "indent" } -- max 2 providers
|
||||
end
|
||||
return { "lsp" }
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -6,7 +6,6 @@ return {
|
||||
config = function()
|
||||
-- PDF viewer
|
||||
vim.g.vimtex_view_method = "zathura"
|
||||
|
||||
-- Compiler settings
|
||||
vim.g.vimtex_compiler_latexmk = {
|
||||
continuous = 1,
|
||||
@@ -27,7 +26,6 @@ return {
|
||||
math_fracs = 1,
|
||||
math_super_sub = 1,
|
||||
}
|
||||
|
||||
vim.g.vimtex_toc_config = {
|
||||
name = "TOC",
|
||||
layers = { "content", "todo", "include" },
|
||||
@@ -36,13 +34,10 @@ return {
|
||||
show_help = 1,
|
||||
show_numbers = 1,
|
||||
}
|
||||
|
||||
-- Don't open quickfix window automatically
|
||||
vim.g.vimtex_quickfix_mode = 0
|
||||
|
||||
-- kenable folding
|
||||
-- Enable folding
|
||||
vim.g.vimtex_fold_enabled = 1
|
||||
|
||||
-- What to fold (customize as needed)
|
||||
vim.g.vimtex_fold_types = {
|
||||
envs = {
|
||||
@@ -62,11 +57,11 @@ return {
|
||||
enabled = 0, -- Don't fold individual list items
|
||||
},
|
||||
}
|
||||
|
||||
-- Disable some features for better performance (optional)
|
||||
vim.g.vimtex_indent_enabled = 1
|
||||
vim.g.vimtex_syntax_enabled = 1
|
||||
|
||||
-- Enhanced concealment settings - ADD THESE OPTIONS
|
||||
vim.g.vimtex_syntax_conceal = {
|
||||
accents = 1,
|
||||
ligatures = 1,
|
||||
@@ -83,6 +78,44 @@ return {
|
||||
styles = 1,
|
||||
}
|
||||
|
||||
-- Set conceal level (2 = moderate concealment)
|
||||
vim.opt.conceallevel = 2
|
||||
|
||||
-- KEYBINDS FOR UNFOLDING AND CONCEALMENT TOGGLE
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "tex",
|
||||
callback = function()
|
||||
-- Toggle all folds open/close
|
||||
vim.keymap.set("n", "<leader>fo", "zR", { buffer = true, desc = "Open all folds" })
|
||||
vim.keymap.set("n", "<leader>fc", "zM", { buffer = true, desc = "Close all folds" })
|
||||
|
||||
-- Toggle concealment (show/hide LaTeX commands)
|
||||
vim.keymap.set("n", "<leader>tc", function()
|
||||
if vim.opt.conceallevel:get() == 0 then
|
||||
vim.opt.conceallevel = 2
|
||||
print("Concealment enabled")
|
||||
else
|
||||
vim.opt.conceallevel = 0
|
||||
print("Concealment disabled")
|
||||
end
|
||||
end, { buffer = true, desc = "Toggle concealment" })
|
||||
|
||||
-- Alternative: Quick toggle for specific vimtex concealment
|
||||
vim.keymap.set("n", "<leader>tv", function()
|
||||
if vim.g.vimtex_syntax_conceal_enabled == 1 then
|
||||
vim.g.vimtex_syntax_conceal_enabled = 0
|
||||
print("VimTeX concealment disabled")
|
||||
else
|
||||
vim.g.vimtex_syntax_conceal_enabled = 1
|
||||
print("VimTeX concealment enabled")
|
||||
end
|
||||
end, { buffer = true, desc = "Toggle vimtex conceal" })
|
||||
end,
|
||||
})
|
||||
|
||||
-- -- You can also add global keybinds if preferred
|
||||
-- vim.keymap.set("n", "<leader>lt", "<cmd>VimtexTocToggle<cr>", { desc = "LaTeX TOC" })
|
||||
-- vim.keymap.set("n", "<leader>lc", "<cmd>VimtexCompile<cr>", { desc = "LaTeX compile" })
|
||||
-- vim.keymap.set("n", "<leader>lv", "<cmd>VimtexView<cr>", { desc = "LaTeX view" })
|
||||
end,
|
||||
}
|
||||
|
||||
70
nvim/.config/nvim/lua/snippetse/tex.lua
Normal file
70
nvim/.config/nvim/lua/snippetse/tex.lua
Normal file
@@ -0,0 +1,70 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
local fmt = require("luasnip.extras.fmt").fmt
|
||||
|
||||
ls.add_snippets("tex", {
|
||||
|
||||
-- \beg → full figure environment
|
||||
s(
|
||||
"beg",
|
||||
fmt(
|
||||
[[
|
||||
\begin{{{}}}{}
|
||||
{}
|
||||
\end{{{}}}]],
|
||||
{
|
||||
i(1, "environment"),
|
||||
i(2, ""),
|
||||
i(3, ""),
|
||||
-- mirror node 1 so \end matches \begin automatically
|
||||
require("luasnip.extras").rep(1),
|
||||
}
|
||||
)
|
||||
),
|
||||
|
||||
-- fig → full figure block
|
||||
s(
|
||||
"fig",
|
||||
fmt(
|
||||
[[
|
||||
\begin{{figure}}[htbp]
|
||||
\centering
|
||||
\includegraphics[width={}]{{{}}
|
||||
\caption{{{}}}
|
||||
\label{{fig:{}}}
|
||||
\end{{figure}}]],
|
||||
{
|
||||
i(1, "0.8\\textwidth"),
|
||||
i(2, "file"),
|
||||
i(3, "caption"),
|
||||
i(4, "label"),
|
||||
}
|
||||
)
|
||||
),
|
||||
|
||||
-- eq → equation
|
||||
s(
|
||||
"eq",
|
||||
fmt(
|
||||
[[
|
||||
\begin{{equation}}
|
||||
{}
|
||||
\end{{equation}}]],
|
||||
{ i(1, "") }
|
||||
)
|
||||
),
|
||||
|
||||
-- ali → align
|
||||
s(
|
||||
"ali",
|
||||
fmt(
|
||||
[[
|
||||
\begin{{align}}
|
||||
{} &= {} \\
|
||||
\end{{align}}]],
|
||||
{ i(1, ""), i(2, "") }
|
||||
)
|
||||
),
|
||||
})
|
||||
@@ -17,6 +17,32 @@ vim.keymap.set("n", "<c-l>", ":wincmd l<CR>")
|
||||
vim.keymap.set("n", "<leader>h", ":nohlsearch<CR>")
|
||||
vim.wo.number = true
|
||||
|
||||
-- In your keybindings file
|
||||
vim.keymap.set("n", "<leader>lc", ":!pdflatex %<CR>", { desc = "Compile LaTeX" })
|
||||
vim.keymap.set("n", "<leader>lv", ":!zathura %:r.pdf &<CR>", { desc = "View PDF" })
|
||||
-- latex pdf compile and live preview
|
||||
-- vimtex already provides these — just map them to your preferred keys
|
||||
vim.keymap.set("n", "<leader>lc", "<cmd>VimtexCompile<CR>", { desc = "Compile LaTeX (toggle)" })
|
||||
vim.keymap.set("n", "<leader>lv", "<cmd>VimtexView<CR>", { desc = "View PDF in Zathura" })
|
||||
vim.keymap.set("n", "<leader>le", "<cmd>VimtexErrors<CR>", { desc = "Show errors" })
|
||||
vim.keymap.set("n", "<leader>lk", "<cmd>VimtexStop<CR>", { desc = "Stop compiler" })
|
||||
vim.keymap.set("n", "<leader>lK", "<cmd>VimtexStopAll<CR>", { desc = "Stop all compilers" })
|
||||
vim.keymap.set("n", "<leader>lx", "<cmd>VimtexClean<CR>", { desc = "Clean aux files" })
|
||||
vim.keymap.set("n", "<leader>lt", "<cmd>VimtexTocToggle<CR>", { desc = "Toggle TOC" })
|
||||
-- vim.keymap.set("n", "<leader>lc", ":!pdflatex %<CR>", { desc = "Compile LaTeX" })
|
||||
-- vim.keymap.set("n", "<leader>lv", ":!zathura %:r.pdf &<CR>", { desc = "View PDF" })
|
||||
-- vim.g.vimtex_fold_enabled = 1
|
||||
-- vim.g.vimtex_fold_types = {
|
||||
-- sections = {
|
||||
-- parse_levels = 1,
|
||||
-- sections = { "section", "subsection", "subsubsection" },
|
||||
-- },
|
||||
-- envs = {
|
||||
-- blacklist = { "document" },
|
||||
-- },
|
||||
-- }
|
||||
-- -- vimtex knows these environment names and will expand them fully
|
||||
-- vim.g.vimtex_complete_enabled = 1
|
||||
-- vim.g.vimtex_complete_close_braces = 1
|
||||
|
||||
vim.o.foldcolumn = "1" -- small gutter with +/- signs
|
||||
vim.o.foldlevel = 99 -- start with all folds open
|
||||
vim.o.foldlevelstart = 99
|
||||
vim.o.foldtext = "" -- use default line
|
||||
|
||||
0
scripts/scripts/a.out
Normal file
0
scripts/scripts/a.out
Normal file
5
scripts/scripts/email2vcf.sh
Executable file
5
scripts/scripts/email2vcf.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
# Convert your aerc/maildir to vCards
|
||||
em2vcf /mnt/flash1/mail-server/mail/maildir/ \
|
||||
--output-folder ~/.contacts_mail/ \
|
||||
--no-duplicates \
|
||||
--overwrite
|
||||
43
scripts/scripts/maildir2vcf.sh
Executable file
43
scripts/scripts/maildir2vcf.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python3
|
||||
# ~/.local/bin/maildir2vcf
|
||||
import email, os, sys, pathlib, fileinput
|
||||
|
||||
MAILDIR = pathlib.Path.home()/ "Mail" # ← change if your mail sits elsewhere
|
||||
OUTDIR = pathlib.Path.home()/ ".contacts_mail"
|
||||
OUTDIR.mkdir(exist_ok=True)
|
||||
|
||||
seen = set() # de-duplicate on lower-case e-mail
|
||||
|
||||
def vcard(name, mail):
|
||||
safe_name = name.replace(";", " ").strip() or "No Name"
|
||||
safe_mail = mail.strip().lower()
|
||||
if safe_mail in seen: # already exported
|
||||
return
|
||||
seen.add(safe_mail)
|
||||
fn = OUTDIR/f"{safe_mail}.vcf"
|
||||
fn.write_text(f"""\
|
||||
BEGIN:VCARD
|
||||
VERSION:3.0
|
||||
FN:{safe_name}
|
||||
EMAIL:{safe_mail}
|
||||
END:VCARD
|
||||
""")
|
||||
|
||||
def addresses_from_msg(path):
|
||||
with open(path, "rb") as f:
|
||||
msg = email.message_from_binary_file(f)
|
||||
for hdr in ("From", "To", "Cc", "Bcc"):
|
||||
for addr in email.utils.getaddresses(msg.get_all(hdr, [])):
|
||||
name, mail = addr
|
||||
if "@" in mail:
|
||||
vcard(name, mail)
|
||||
|
||||
# walk cur/ + new/ (typical Maildir layout)
|
||||
for sub in ("cur", "new"):
|
||||
for root, _, files in os.walk(MAILDIR/sub):
|
||||
for file in files:
|
||||
if file.startswith("."):
|
||||
continue
|
||||
addresses_from_msg(pathlib.Path(root)/file)
|
||||
|
||||
print("Exported", len(seen), "unique addresses →", OUTDIR)
|
||||
0
scripts/scripts/newfile.vcf
Normal file
0
scripts/scripts/newfile.vcf
Normal file
Submodule yazi/.config/yazi/flavors/dracula.yazi deleted from 1b1a8d1083
21
yazi/.config/yazi/flavors/rose-pine-moon.yazi/LICENSE
Normal file
21
yazi/.config/yazi/flavors/rose-pine-moon.yazi/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Mintass
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Rosé Pine
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
36
yazi/.config/yazi/flavors/rose-pine-moon.yazi/README.md
Normal file
36
yazi/.config/yazi/flavors/rose-pine-moon.yazi/README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
<div align="center">
|
||||
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
|
||||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
Rosé Pine Moon Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
|
||||
</h3>
|
||||
|
||||
## 👀 Preview
|
||||
|
||||
<img src="preview.png" width="600" />
|
||||
|
||||
## 🎨 Installation
|
||||
|
||||
```sh
|
||||
ya pkg add Mintass/rose-pine-moon
|
||||
```
|
||||
|
||||
## ⚙️ Usage
|
||||
|
||||
To set it as your dark flavor, change the content of your `theme.toml` to:
|
||||
|
||||
```toml
|
||||
[flavor]
|
||||
dark = "rose-pine-moon"
|
||||
```
|
||||
|
||||
Make sure your `theme.toml` doesn't contain anything other than `[flavor]`, unless you want to override certain styles of this flavor.
|
||||
|
||||
See the [Yazi flavor documentation](https://yazi-rs.github.io/docs/flavors/overview) for more details.
|
||||
|
||||
## 📜 License
|
||||
|
||||
The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed.
|
||||
|
||||
Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details.
|
||||
253
yazi/.config/yazi/flavors/rose-pine-moon.yazi/flavor.toml
Normal file
253
yazi/.config/yazi/flavors/rose-pine-moon.yazi/flavor.toml
Normal file
@@ -0,0 +1,253 @@
|
||||
# vim:fileencoding=utf-8:foldmethod=marker
|
||||
|
||||
# : App {{{
|
||||
|
||||
[app]
|
||||
overall = { bg = "#232136" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Manager {{{
|
||||
|
||||
[mgr]
|
||||
cwd = { fg = "#9ccfd8" }
|
||||
|
||||
# Find
|
||||
find_keyword = { fg = "#f6c177", bold = true, italic = true, underline = true }
|
||||
find_position = { fg = "#c4a7e7", bg = "reset", bold = true, italic = true }
|
||||
|
||||
# Symlink
|
||||
symlink_target = { italic = true }
|
||||
|
||||
# Marker
|
||||
marker_copied = { fg = "#3e8fb0", bg = "#3e8fb0" }
|
||||
marker_cut = { fg = "#eb6f92", bg = "#eb6f92" }
|
||||
marker_marked = { fg = "#ea9a97", bg = "#ea9a97" }
|
||||
marker_selected = { fg = "#f6c177", bg = "#f6c177" }
|
||||
|
||||
# Count
|
||||
count_copied = { fg = "#e0def4", bg = "#3e8fb0" }
|
||||
count_cut = { fg = "#e0def4", bg = "#eb6f92" }
|
||||
count_selected = { fg = "#232136", bg = "#f6c177" }
|
||||
|
||||
# Border
|
||||
border_symbol = "│"
|
||||
border_style = { fg = "#56526e" }
|
||||
|
||||
# Highlighting
|
||||
syntect_theme = ""
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Tabs {{{
|
||||
|
||||
[tabs]
|
||||
active = { fg = "#e0def4", bg = "#3e8fb0", bold = true }
|
||||
inactive = { fg = "#3e8fb0", bg = "#e0def4" }
|
||||
|
||||
# Separator
|
||||
sep_inner = { open = "", close = "" }
|
||||
sep_outer = { open = "", close = "" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Mode {{{
|
||||
|
||||
[mode]
|
||||
normal_main = { fg = "#232136", bg = "#9ccfd8", bold = true }
|
||||
normal_alt = { fg = "#232136", bg = "#e0def4", bold = true }
|
||||
|
||||
# Select mode
|
||||
select_main = { fg = "#232136", bg = "#eb6f92", bold = true }
|
||||
select_alt = { fg = "#232136", bg = "#e0def4", bold = true }
|
||||
|
||||
# Unset mode
|
||||
unset_main = { fg = "#232136", bg = "#eb6f92", bold = true }
|
||||
unset_alt = { fg = "#232136", bg = "#e0def4", bold = true }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Indicator of hovered file {{{
|
||||
|
||||
[indicator]
|
||||
parent = { reversed = true }
|
||||
current = { reversed = true }
|
||||
preview = { underline = true }
|
||||
padding = { open = "", close = "" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Status bar {{{
|
||||
|
||||
[status]
|
||||
overall = { bg = "#232136" }
|
||||
sep_left = { open = "", close = "" }
|
||||
sep_right = { open = "", close = "" }
|
||||
|
||||
# Permissions
|
||||
perm_sep = { fg = "#6e6a86" }
|
||||
perm_type = { fg = "#c4a7e7" }
|
||||
perm_read = { fg = "#f6c177" }
|
||||
perm_write = { fg = "#eb6f92" }
|
||||
perm_exec = { fg = "#9ccfd8" }
|
||||
|
||||
# Progress
|
||||
progress_label = { fg = "#e0def4", bold = true }
|
||||
progress_normal = { fg = "#3e8fb0", bg = "#2a283e" }
|
||||
progress_error = { fg = "#eb6f92", bg = "#2a283e" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Which {{{
|
||||
|
||||
[which]
|
||||
cols = 3
|
||||
mask = { bg = "#2a273f" }
|
||||
cand = { fg = "#9ccfd8" }
|
||||
rest = { fg = "#6e6a86" }
|
||||
desc = { fg = "#f6c177" }
|
||||
separator = " "
|
||||
separator_style = { fg = "#6e6a86" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Confirmation {{{
|
||||
|
||||
[confirm]
|
||||
border = { fg = "#56526e" }
|
||||
title = { fg = "#eb6f92", bold = true }
|
||||
body = { fg = "#e0def4" }
|
||||
list = { fg = "#e0def4" }
|
||||
btn_yes = { fg = "#232136", bg = "#3e8fb0", bold = true }
|
||||
btn_no = { fg = "#232136", bg = "#e0def4", bold = true }
|
||||
btn_labels = [ " [y]es ", " (n)o " ]
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Spotter {{{
|
||||
|
||||
[spot]
|
||||
border = { fg = "#56526e" }
|
||||
title = { fg = "#9ccfd8", bold = true }
|
||||
|
||||
# Table
|
||||
tbl_col = { fg = "#9ccfd8" }
|
||||
tbl_cell = { fg = "#232136", bg = "#f6c177", bold = true }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Notification {{{
|
||||
|
||||
[notify]
|
||||
title_info = { fg = "#3e8fb0" }
|
||||
title_warn = { fg = "#f6c177" }
|
||||
title_error = { fg = "#eb6f92" }
|
||||
|
||||
# Icons
|
||||
icon_info = ""
|
||||
icon_warn = ""
|
||||
icon_error = ""
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Picker {{{
|
||||
|
||||
[pick]
|
||||
border = { fg = "#3e8fb0" }
|
||||
active = { fg = "#c4a7e7", bold = true }
|
||||
inactive = { fg = "#908caa" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Input {{{
|
||||
|
||||
[input]
|
||||
border = { fg = "#3e8fb0" }
|
||||
title = { bold = true }
|
||||
value = { fg = "#e0def4" }
|
||||
selected = { reversed = true }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Completion {{{
|
||||
|
||||
[cmp]
|
||||
border = { fg = "#3e8fb0" }
|
||||
active = { bg = "#e0def4", fg = "#232136", bold = true }
|
||||
inactive = { fg = "#908caa" }
|
||||
|
||||
# Icons
|
||||
icon_file = ""
|
||||
icon_folder = ""
|
||||
icon_command = ""
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Task manager {{{
|
||||
|
||||
[tasks]
|
||||
border = { fg = "#3e8fb0" }
|
||||
title = { bold = true }
|
||||
hovered = { fg = "#c4a7e7", bold = true, reversed = true }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Help menu {{{
|
||||
|
||||
[help]
|
||||
on = { fg = "#9ccfd8" }
|
||||
run = { fg = "#c4a7e7" }
|
||||
desc = { fg = "#f6c177" }
|
||||
hovered = { reversed = true, bold = true }
|
||||
footer = { fg = "#232136", bg = "#e0def4" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : File-specific styles {{{
|
||||
|
||||
[filetype]
|
||||
rules = [
|
||||
# Images
|
||||
{ mime = "image/*", fg = "#c4a7e7" },
|
||||
|
||||
# Media
|
||||
{ mime = "{audio,video}/*", fg = "#f6c177" },
|
||||
|
||||
# Archives
|
||||
{ mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#eb6f92" },
|
||||
|
||||
# Documents
|
||||
{ mime = "application/{pdf,doc,rtf}", fg = "#ea9a97" },
|
||||
|
||||
# Empty files
|
||||
# { mime = "inode/empty", fg = "#eb6f92" },
|
||||
|
||||
# Special files
|
||||
{ url = "*", is = "orphan", fg = "#232136", bg = "#eb6f92" },
|
||||
{ url = "*", is = "exec", fg = "#9ccfd8" },
|
||||
|
||||
# Dummy files
|
||||
{ url = "*", is = "dummy", fg = "#232136", bg = "#eb6f92" },
|
||||
{ url = "*/", is = "dummy", fg = "#232136", bg = "#eb6f92" },
|
||||
|
||||
# Fallback
|
||||
{ url = "*", fg = "#e0def4" },
|
||||
{ url = "*/", fg = "#3e8fb0" }
|
||||
]
|
||||
|
||||
# : }}}
|
||||
BIN
yazi/.config/yazi/flavors/rose-pine-moon.yazi/preview.png
Normal file
BIN
yazi/.config/yazi/flavors/rose-pine-moon.yazi/preview.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 985 KiB |
316
yazi/.config/yazi/flavors/rose-pine-moon.yazi/tmtheme.xml
Normal file
316
yazi/.config/yazi/flavors/rose-pine-moon.yazi/tmtheme.xml
Normal file
@@ -0,0 +1,316 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Rosé Pine Moon</string>
|
||||
<key>settings</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>background</key>
|
||||
<string>#232136</string>
|
||||
<key>caret</key>
|
||||
<string>#56526e</string>
|
||||
<key>foreground</key>
|
||||
<string>#e0def4</string>
|
||||
<key>invisibles</key>
|
||||
<string>#2a273f</string>
|
||||
<key>lineHighlight</key>
|
||||
<string>#2a283e</string>
|
||||
<key>selection</key>
|
||||
<string>#6e6a86</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Comment</string>
|
||||
<key>scope</key>
|
||||
<string>comment</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>italic</string>
|
||||
<key>foreground</key>
|
||||
<string>#908caa</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>String</string>
|
||||
<key>scope</key>
|
||||
<string>string, punctuation.definition.string</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#f6c177</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Number</string>
|
||||
<key>scope</key>
|
||||
<string>constant.numeric</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#f6c177</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Built-in constant</string>
|
||||
<key>scope</key>
|
||||
<string>constant.language</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>bold</string>
|
||||
<key>foreground</key>
|
||||
<string>#f6c177</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>User-defined constant</string>
|
||||
<key>scope</key>
|
||||
<string>constant.character, constant.other</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#f6c177</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Variable</string>
|
||||
<key>scope</key>
|
||||
<string>variable</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>italic</string>
|
||||
<key>foreground</key>
|
||||
<string>#e0def4</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Keyword</string>
|
||||
<key>scope</key>
|
||||
<string>keyword</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#3e8fb0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Storage</string>
|
||||
<key>scope</key>
|
||||
<string>storage</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string></string>
|
||||
<key>foreground</key>
|
||||
<string>#9ccfd8</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Storage type</string>
|
||||
<key>scope</key>
|
||||
<string>storage.type</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string></string>
|
||||
<key>foreground</key>
|
||||
<string>#9ccfd8</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Class name</string>
|
||||
<key>scope</key>
|
||||
<string>entity.name.class</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>bold</string>
|
||||
<key>foreground</key>
|
||||
<string>#3e8fb0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Inherited class</string>
|
||||
<key>scope</key>
|
||||
<string>entity.other.inherited-class</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>italic </string>
|
||||
<key>foreground</key>
|
||||
<string>#3e8fb0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Function name</string>
|
||||
<key>scope</key>
|
||||
<string>entity.name.function</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>italic</string>
|
||||
<key>foreground</key>
|
||||
<string>#ea9a97</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Function argument</string>
|
||||
<key>scope</key>
|
||||
<string>variable.parameter</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string></string>
|
||||
<key>foreground</key>
|
||||
<string>#c4a7e7</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Tag name</string>
|
||||
<key>scope</key>
|
||||
<string>entity.name.tag</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>bold</string>
|
||||
<key>foreground</key>
|
||||
<string>#3e8fb0</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Tag attribute</string>
|
||||
<key>scope</key>
|
||||
<string>entity.other.attribute-name</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string></string>
|
||||
<key>foreground</key>
|
||||
<string>#c4a7e7</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Library function</string>
|
||||
<key>scope</key>
|
||||
<string>support.function</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>bold</string>
|
||||
<key>foreground</key>
|
||||
<string>#ea9a97</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Library constant</string>
|
||||
<key>scope</key>
|
||||
<string>support.constant</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>bold</string>
|
||||
<key>foreground</key>
|
||||
<string>#f6c177</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Library class/type</string>
|
||||
<key>scope</key>
|
||||
<string>support.type, support.class</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>bold</string>
|
||||
<key>foreground</key>
|
||||
<string>#9ccfd8</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Library variable</string>
|
||||
<key>scope</key>
|
||||
<string>support.other.variable</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>fontStyle</key>
|
||||
<string>bold</string>
|
||||
<key>foreground</key>
|
||||
<string>#eb6f92</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Invalid</string>
|
||||
<key>scope</key>
|
||||
<string>invalid</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>background</key>
|
||||
<string>#eb6f92</string>
|
||||
<key>fontStyle</key>
|
||||
<string></string>
|
||||
<key>foreground</key>
|
||||
<string>#e0def4</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Invalid deprecated</string>
|
||||
<key>scope</key>
|
||||
<string>invalid.deprecated</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>background</key>
|
||||
<string>#c4a7e7</string>
|
||||
<key>foreground</key>
|
||||
<string>#e0def4</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Punctuation, Operators</string>
|
||||
<key>scope</key>
|
||||
<string>punctuation, keyword.operator</string>
|
||||
<key>settings</key>
|
||||
<dict>
|
||||
<key>foreground</key>
|
||||
<string>#908caa</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
<key>colorSpaceName</key>
|
||||
<string>sRGB</string>
|
||||
<key>semanticClass</key>
|
||||
<string>theme.dark.rosé-pine-moon</string>
|
||||
<key>author</key>
|
||||
<string>arrrgi</string>
|
||||
<key>comment</key>
|
||||
<string>All natural pine, faux fur and a bit of soho vibes for the classy minimalist</string>
|
||||
<key>uuid</key>
|
||||
<string>CC28B8FB-96BA-43EB-B71F-5AA3D3EBB0BB</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -93,7 +93,7 @@ require("recycle-bin"):setup({
|
||||
trash_dir = "~/.local/share/Trash/",
|
||||
})
|
||||
|
||||
-- require("omp"):setup({ config = "/home/liph/.config/yazi/omp/omp.toml" })
|
||||
require("omp"):setup({ config = "/home/liph/.config/yazi/omp/omp.toml" })
|
||||
|
||||
require("mime-ext"):setup({
|
||||
-- with_files = {
|
||||
|
||||
@@ -3,12 +3,12 @@ pwd = "osc7"
|
||||
version = 3
|
||||
|
||||
[palette]
|
||||
gb_bright_path = "#89b4fa"
|
||||
gb_bright_git = "#f9e2af"
|
||||
gb_dark0_hard = "#1d2021"
|
||||
gb_bright_path = "#9ccdf8"
|
||||
gb_bright_git = "#f6c177"
|
||||
gb_dark0_hard = "#3e7fb0"
|
||||
gb_faded_green = "#79740e"
|
||||
gb_faded_red = "#9d0006"
|
||||
gb_text = "#ebdbb2"
|
||||
gb_faded_red = "#ea9a97"
|
||||
gb_text = "#c4a7e7"
|
||||
|
||||
[var]
|
||||
user = ""
|
||||
@@ -19,12 +19,19 @@ ssh = "🌐"
|
||||
type = "prompt"
|
||||
alignment = "left"
|
||||
|
||||
# [[blocks.segments]]
|
||||
# template = "{{ if .Root }}# {{ else }}{{ end }}{{ .UserName }}{{ if .SSHSession }} {{.Var.ssh}}{{ end }} "
|
||||
# foreground = "p:gb_text"
|
||||
# background = "transparent"
|
||||
# type = "session"
|
||||
# style = "plain"
|
||||
[[blocks.segments]]
|
||||
template = '{{ .HostName }} '
|
||||
foreground = 'p:gb_text'
|
||||
background = 'transparent'
|
||||
type = 'text'
|
||||
style = 'plain'
|
||||
|
||||
[[blocks.segments]]
|
||||
template = '{{ .UserName }} '
|
||||
foreground = 'p:gb_text'
|
||||
background = 'transparent'
|
||||
type = 'text'
|
||||
style = 'plain'
|
||||
|
||||
# [blocks.segments.properties]
|
||||
# cache_duration = "none"
|
||||
@@ -41,7 +48,7 @@ style = "full"
|
||||
enable_hyperlink = true
|
||||
|
||||
[[blocks.segments]]
|
||||
template = "{{ .HEAD }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }} "
|
||||
template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} <cyan>{{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}</>'
|
||||
foreground = "p:gb_bright_git"
|
||||
background = "transparent"
|
||||
type = "git"
|
||||
|
||||
@@ -137,3 +137,8 @@ hash = "5cfd9b2bd3f8ec4e3245e3426a967f82"
|
||||
use = "yazi-rs/flavors:catppuccin-mocha"
|
||||
rev = "4a1802a"
|
||||
hash = "b951d27afe197d154f6da9683b46c5f8"
|
||||
|
||||
[[flavor.deps]]
|
||||
use = "Mintass/rose-pine-moon"
|
||||
rev = "94385fe"
|
||||
hash = "edbe0dfb5db8ff37281dba62adc7e750"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"\\x73\\x74\\x79\\x6C\\x65\\x73\\x2E\\x63\\x73\\x73":["\\x31"]}
|
||||
@@ -1,72 +1,4 @@
|
||||
# Gruvbox Material Dark theme for Yazi
|
||||
# Based on https://github.com/sainnhe/gruvbox-material
|
||||
|
||||
[manager]
|
||||
cwd = { fg = "#d8a657" } # yellow
|
||||
|
||||
# Hovered
|
||||
hovered = { fg = "#282828", bg = "#a9b665" } # green background
|
||||
preview_hovered = { underline = true }
|
||||
|
||||
# Find
|
||||
find_keyword = { fg = "#282828", bg = "#d8a657" } # yellow
|
||||
find_position = { fg = "#282828", bg = "#7daea3" } # aqua
|
||||
|
||||
# Marker
|
||||
marker_copied = { fg = "#a9b665", bg = "#a9b665" } # green
|
||||
marker_cut = { fg = "#ea6962", bg = "#ea6962" } # red
|
||||
marker_marked = { fg = "#7daea3", bg = "#7daea3" } # aqua
|
||||
marker_selected = { fg = "#d8a657", bg = "#d8a657" } # yellow
|
||||
|
||||
# Tab
|
||||
tab_active = { fg = "#282828", bg = "#a9b665" } # green
|
||||
tab_inactive = { fg = "#d4be98", bg = "#3c3836" } # fg on bg1
|
||||
tab_width = 1
|
||||
|
||||
# Count
|
||||
count_copied = { fg = "#282828", bg = "#a9b665" } # green
|
||||
count_cut = { fg = "#282828", bg = "#ea6962" } # red
|
||||
count_selected = { fg = "#282828", bg = "#7daea3" } # aqua
|
||||
|
||||
# Border
|
||||
border_symbol = "│"
|
||||
border_style = { fg = "#504945" } # bg2
|
||||
|
||||
# Syntect theme for preview
|
||||
syntect_theme = "~/.config/yazi/Gruvbox-Material-Dark.tmTheme"
|
||||
|
||||
[status]
|
||||
separator_open = ""
|
||||
separator_close = ""
|
||||
separator_style = { fg = "#504945", bg = "#504945" } # bg2
|
||||
|
||||
# Mode
|
||||
mode_normal = { fg = "#282828", bg = "#7daea3", bold = true } # aqua
|
||||
mode_select = { fg = "#282828", bg = "#d8a657", bold = true } # yellow
|
||||
mode_unset = { fg = "#282828", bg = "#ea6962", bold = true } # red
|
||||
|
||||
# Progress
|
||||
progress_label = { fg = "#d4be98", bold = true } # fg
|
||||
progress_normal = { fg = "#7daea3", bg = "#3c3836" } # aqua on bg1
|
||||
progress_error = { fg = "#ea6962", bg = "#3c3836" } # red on bg1
|
||||
|
||||
# Permissions
|
||||
permissions_t = { fg = "#a9b665" } # green
|
||||
permissions_r = { fg = "#d8a657" } # yellow
|
||||
permissions_w = { fg = "#ea6962" } # red
|
||||
permissions_x = { fg = "#7daea3" } # aqua
|
||||
permissions_s = { fg = "#504945" } # bg2
|
||||
|
||||
[input]
|
||||
border = { fg = "#7daea3" } # aqua
|
||||
title = { fg = "#d4be98" } # fg
|
||||
value = { fg = "#d4be98" } # fg
|
||||
selected = { reversed = true }
|
||||
|
||||
[select]
|
||||
border = { fg = "#7daea3" } # aqua
|
||||
active = { fg = "#d8a657" } # yellow
|
||||
inactive = { fg = "#7c6f64" } # bg3
|
||||
|
||||
[completion]
|
||||
border = { fg = "#7daea3" } # aqua
|
||||
[flavor]
|
||||
dark = "rose-pine-moon"
|
||||
# or "rose-pine-moon"
|
||||
# or light = "rose-pine-dawn"
|
||||
|
||||
@@ -108,8 +108,7 @@ alias lsm='sudo mount /dev/'
|
||||
alias lsu='sudo umount /mount/'
|
||||
|
||||
# streamrip
|
||||
alias ripp='cd ~/streamrip/ && rip search tidal album'
|
||||
alias rip='pyenv exec rip'
|
||||
alias ripp='rip search tidal album'
|
||||
alias ripc='nvim ~/.config/streamrip/config.toml'
|
||||
|
||||
# paru
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# java jdk adaption
|
||||
export JDK_TOOL_OPTIONS="-Djdk.xml.totalEntitySizeLimit=0"
|
||||
# FZF
|
||||
export FZF_CTRL_T_OPTS="--preview 'bat -n --color=always --line-range :500 {}'"
|
||||
export FZF_ALT_C_OPTS="--preview 'eza --tree --color=always {} | head -200'"
|
||||
|
||||
Reference in New Issue
Block a user