feat(nvim): convert config to Lua with lazy.nvim

Renames nvim/ → nvim.old/ (preserving init.vim + incomplete prior attempts)
and creates a fresh nvim/ with init.lua. All settings, keymaps, and plugin
declarations are converted from VimScript to Lua idioms. Plugin manager
migrated from vim-plug to lazy.nvim, which self-bootstraps on first launch.

shell-setup.sh updated to drop the vim-plug curl install; the symlink and
airline theme copy are retained (path updated for lazy's data directory).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main
The_miro 2026-05-19 08:56:43 +02:00
parent b629697ddd
commit 20cf670adb
11 changed files with 625 additions and 8 deletions

View File

@ -0,0 +1,3 @@
{
"snippets.ultisnips.pythonPrompt": false
}

View File

@ -0,0 +1,113 @@
" vim-airline template by danrneal (http://github.com/danrneal)
" cyberqueer by Tai Groot
let g:airline#themes#cyberqueer#palette = {}
" Define the true colors
let s:AQUA = '#E40046'
let s:BEIGE = '#d6abab'
let s:BLACK = '#2c2c2c'
let s:BLUE = '#E40046'
let s:DGREY = '#2c2c2c'
let s:GREEN = '#f50505'
let s:LGREY = '#666666'
let s:LIME = '#87F025'
let s:MAGENTA = '#E40046'
let s:PINK = '#E40046'
let s:PURPLE = '#5018dd'
let s:RED = '#f50505'
let s:WHITE = '#d6abab'
let s:YELLOW = '#5018dd'
" Define the 256-color fallbacks
let s:TERM_AQUA = 14
let s:BEIGE = 224
let s:TERM_BLACK = 233
let s:TERM_BLUE = 75
let s:TERM_DGREY = 240
let s:TERM_GREEN = 70
let s:TERM_LGREY = 246
let s:TERM_LIME = 82
let s:TERM_MAGENTA = 90
let s:TERM_PINK = 199
let s:TERM_PURPLE = 54
let s:TERM_RED = 9
let s:TERM_WHITE = 231
let s:TERM_YELLOW = 226
" Some default text colors for readability
let s:GREY0 = s:WHITE
let s:GREY1 = s:LGREY
let s:GREY2 = s:DGREY
let s:BG = s:BLACK
" 256-color fallbacks for text
let s:TERM_GREY0 = s:TERM_WHITE
let s:TERM_GREY1 = s:TERM_LGREY
let s:TERM_GREY2 = s:TERM_DGREY
let s:TERM_BG = s:TERM_BLACK
let s:unmodified = [ s:GREY1, s:GREY2, s:TERM_GREY1, s:TERM_GREY2 ]
let s:modified = {
\ 'airline_b': [ s:AQUA, s:BG, s:TERM_AQUA, s:TERM_BG, '' ],
\ 'airline_y': [ s:AQUA, s:BG, s:TERM_AQUA, s:TERM_BG, '' ],
\ }
let s:W = [ s:LIME, s:PURPLE, s:TERM_LIME, s:TERM_PURPLE ]
let s:E = [ s:RED, s:PURPLE, s:TERM_RED, s:TERM_PURPLE ]
let s:modified.airline_warning = s:W
let s:modified.airline_error = s:E
" Normal mode settings
let s:N1 = [ s:BLUE, s:YELLOW, s:TERM_YELLOW, s:TERM_BLUE ]
let s:N2 = s:unmodified
let s:N3 = s:N1
let g:airline#themes#cyberqueer#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#cyberqueer#palette.normal.airline_warning = s:W
let g:airline#themes#cyberqueer#palette.normal.airline_error = s:E
let g:airline#themes#cyberqueer#palette.normal_modified = s:modified
" Insert mode settings
let s:I1 = [ s:YELLOW, s:BLUE, s:TERM_BLUE, s:TERM_YELLOW ]
let s:I2 = s:unmodified
let s:I3 = s:I1
let g:airline#themes#cyberqueer#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#cyberqueer#palette.insert.airline_warning = s:W
let g:airline#themes#cyberqueer#palette.insert.airline_error = s:E
let g:airline#themes#cyberqueer#palette.insert_modified = s:modified
" Replace mode settings
let s:R1 = [ s:BG, s:RED, s:TERM_BG, s:TERM_RED ]
let s:R2 = s:unmodified
let s:R3 = s:R1
let g:airline#themes#cyberqueer#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#cyberqueer#palette.replace.airline_warning = s:W
let g:airline#themes#cyberqueer#palette.replace.airline_error = s:E
let g:airline#themes#cyberqueer#palette.replace_modified = s:modified
" Commandline mode settings
let s:C1 = [ s:BG, s:RED, s:TERM_BG, s:TERM_RED ]
let s:C2 = s:unmodified
let s:C3 = s:C1
let g:airline#themes#cyberqueer#palette.commandline = airline#themes#generate_color_map(s:C1, s:C2, s:C3)
let g:airline#themes#cyberqueer#palette.commandline.airline_warning = s:W
let g:airline#themes#cyberqueer#palette.commandline.airline_error = s:E
let g:airline#themes#cyberqueer#palette.commandline_modified = s:modified
" Visual mode settings
let s:V1 = [ s:BG, s:GREEN, s:TERM_BG, s:TERM_GREEN ]
let s:V2 = s:unmodified
let s:V3 = s:V1
let g:airline#themes#cyberqueer#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#cyberqueer#palette.visual.airline_warning = s:W
let g:airline#themes#cyberqueer#palette.visual.airline_error = s:E
let g:airline#themes#cyberqueer#palette.visual_modified = s:modified
" Inactive settings
let s:IA1 = [ s:BG, s:GREY2, s:TERM_BG, s:TERM_GREY2 ]
let s:IA2 = s:unmodified
let s:IA3 = [ s:GREY2, s:BG, s:TERM_GREY2, s:TERM_BG ]
let g:airline#themes#cyberqueer#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
let g:airline#themes#cyberqueer#palette.inactive_modified = s:modified

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 The_miro
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.

View File

@ -0,0 +1,5 @@
A Lush Theme for Neovim.
===
See: http://git.io/lush.nvim for more information on Lush and a helper script
to setup your repo clone.

View File

@ -0,0 +1,21 @@
-- You probably always want to set this in your vim file
vim.opt.background = 'dark'
vim.g.colors_name = 'cyberqueer'
-- By setting our module to nil, we clear lua's cache,
-- which means the require ahead will *always* occur.
--
-- This isn't strictly required but it can be a useful trick if you are
-- incrementally editing your config a lot and want to be sure your themes
-- changes are being picked up without restarting neovim.
--
-- Note if you're working in on your theme and have :Lushify'd the buffer,
-- your changes will be applied with our without the following line.
--
-- The performance impact of this call can be measured in the hundreds of
-- *nanoseconds* and such could be considered "production safe".
package.loaded['lush_theme.cyberqueer'] = nil
-- include our theme file and pass it to lush to apply
require('lush')(require('lush_theme.cyberqueer'))

View File

@ -0,0 +1,321 @@
--
-- Built with,
--
-- ,gggg,
-- d8" "8I ,dPYb,
-- 88 ,dP IP'`Yb
-- 8888888P" I8 8I
-- 88 I8 8'
-- 88 gg gg ,g, I8 dPgg,
-- ,aa,_88 I8 8I ,8'8, I8dP" "8I
-- dP" "88P I8, ,8I ,8' Yb I8P I8
-- Yb,_,d88b,,_ ,d8b, ,d8b,,8'_ 8) ,d8 I8,
-- "Y8P" "Y888888P'"Y88P"`Y8P' "YY8P8P88P `Y8
--
-- This is a starter colorscheme for use with Lush,
-- for usage guides, see :h lush or :LushRunTutorial
--
-- Note: Because this is a lua file, vim will append it to the runtime,
-- which means you can require(...) it in other lua code (this is useful),
-- but you should also take care not to conflict with other libraries.
--
-- (This is a lua quirk, as it has somewhat poor support for namespacing.)
--
-- Basically, name your file,
--
-- "super_theme/lua/lush_theme/super_theme_dark.lua",
--
-- not,
--
-- "super_theme/lua/dark.lua".
--
-- With that caveat out of the way...
--
-- Enable lush.ify on this file, run:
--
-- `:Lushify`
--
-- or
--
-- `:lua require('lush').ify()`
local lush = require('lush')
local hsl = lush.hsl
-- LSP/Linters mistakenly show `undefined global` errors in the spec, they may
-- support an annotation like the following. Consult your server documentation.
---@diagnostic disable: undefined-global
local darkpurple = hsl("#5018dd")
local QWhite = hsl("#d6abab")
local RedHV = hsl("#f50505")
local PinkHL = hsl("#E40046")
local BG = hsl("#2c2c2c")
local green = hsl("#0cff00")
local neutralblu = hsl("#a6d1eb")
local theme = lush(function(injected_functions)
local sym = injected_functions.sym
return {
Normal { bg = BG, fg = QWhite },
CursorLine { bg = BG.lighten(20), fg = PinkHL },
CursorColumn { bg = CursorLine.bg, fg = Normal.fg },
Visual { bg = darkpurple, fg = PinkHL },
Comment { bg = BG, fg = QWhite.darken(20)},
CursorLineNr { fg = PinkHL, bg = darkpurple},
LineNr { fg = QWhite, bg = BG},
Cursor { fg = Visual.fg, bg=Visual.bg},
Type { fg = RedHV, bg = BG},
-- The following are the Neovim (as of 0.8.0-dev+100-g371dfb174) highlight
-- groups, mostly used for styling UI elements.
-- Comment them out and add your own properties to override the defaults.
-- An empty definition `{}` will clear all styling, leaving elements looking
-- like the 'Normal' group.
-- To be able to link to a group, it must already be defined, so you may have
-- to reorder items as you go.
--
-- See :h highlight-groups
--
-- ColorColumn { }, -- Columns set with 'colorcolumn'
Conceal { fg = Comment.fg.darken(30), bg = BG }, -- Placeholder characters substituted for concealed text (see 'conceallevel')
-- Cursor { }, -- Character under the cursor
CurSearch { fg = Cursor.fg, bg = Cursor.bg }, -- Highlighting a search pattern under the cursor (see 'hlsearch')
-- lCursor { }, -- Character under the curslljkhor when |language-mapping| is used (see 'guicursor')
-- CursorIM { }, -- Like Cursor, but used when in IME mode |CursorIM|
-- CursorColumn { }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
-- CursorLine { }, -- Screen-line at the cursor, when 'cursorline' is set. Low-priority if foreground (ctermfg OR guifg) is not set.
Directory { fg = darkpurple, bg = BG.li(30) }, -- Directory names (and other special names in listings)
DiffAdd { bg = BG, fg = green}, -- Diff mode: Added line |diff.txt|
DiffChange { bg = BG, fg = neutralblu}, -- Diff mode: Changed line |diff.txt|
DiffDelete { bg = BG, fg = RedHV.da(20)}, -- Diff mode: Deleted line |diff.txt|
DiffText { bg = neutralblu, fg = BG }, -- Diff mode: Changed text within a changed line |diff.txt|
-- EndOfBuffer { }, -- Filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
-- TermCursor { }, -- Cursor in a focused terminal
-- TermCursorNC { }, -- Cursor in an unfocused terminal
ErrorMsg { fg = RedHV, bg=RedHV.da(60) }, -- Error messages on the command line
-- VertSplit { }, -- Column separating vertically split windows
-- Folded { }, -- Line used for closed folds
-- FoldColumn { }, -- 'foldcolumn'
-- SignColumn { }, -- Column where |signs| are displayed
-- IncSearch { }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
-- Substitute { }, -- |:substitute| replacement text highlighting
-- LineNr { }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
-- LineNrAbove { }, -- Line number for when the 'relativenumber' option is set, above the cursor line
-- LineNrBelow { }, -- Line number for when the 'relativenumber' option is set, below the cursor line
-- CursorLineNr { }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
-- CursorLineFold { }, -- Like FoldColumn when 'cursorline' is set for the cursor line
-- CursorLineSign { }, -- Like SignColumn when 'cursorline' is set for the cursor line
-- MatchParen { }, -- Character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
ModeMsg { fg = RedHV, bg = darkpurple}, -- 'showmode' message (e.g., "-- INSERT -- ")
-- MsgArea { }, -- Area for messages and cmdline
MsgSeparator { fg = Cursor.bg, bg = Cursor.fg}, -- Separator for scrolled messages, `msgsep` flag of 'display'
-- MoreMsg { }, -- |more-prompt|
-- NonText { }, -- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). See also |hl-EndOfBuffer|.
-- Normal { }, -- Normal text
-- NormalFloat { }, -- Normal text in floating windows.
-- FloatBorder { }, -- Border of floating windows.
-- FloatTitle { }, -- Title of floating windows.
-- NormalNC { }, -- normal text in non-current windows
-- Pmenu { }, -- Popup menu: Normal item.
PmenuSel { fg = Cursor.fg, bg = Cursor.bg}, -- Popup menu: Selected item.
-- PmenuKind { }, -- Popup menu: Normal item "kind"
-- PmenuKindSel { }, -- Popup menu: Selected item "kind"
-- PmenuExtra { }, -- Popup menu: Normal item "extra text"
-- PmenuExtraSel { }, -- Popup menu: Selected item "extra text"
-- PmenuSbar { }, -- Popup menu: Scrollbar.
-- PmenuThumb { }, -- Popup menu: Thumb of the scrollbar.
-- Question { }, -- |hit-enter| prompt and yes/no questions
-- QuickFixLine { }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
-- Search { }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
-- SpecialKey { }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' whitespace. |hl-Whitespace|
-- SpellBad { }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.
-- SpellCap { }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise.
-- SpellLocal { }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
-- SpellRare { }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise.
StatusLine { fg = Cursor.bg, bg = Cursor.fg}, -- Status line of current window
-- StatusLineNC { }, -- Status lines of not-current windows. Note: If this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
-- TabLine { }, -- Tab pages line, not active tab page label
-- TabLineFill { }, -- Tab pages line, where there are no labels
-- TabLineSel { }, -- Tab pages line, active tab page label
-- Title { }, -- Titles for output from ":set all", ":autocmd" etc.
-- Visual { }, -- Visual mode selection
-- VisualNOS { }, -- Visual mode selection when vim is "Not Owning the Selection".
-- WarningMsg { }, -- Warning messages
-- Whitespace { }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
-- Winseparator { }, -- Separator between window splits. Inherts from |hl-VertSplit| by default, which it will replace eventually.
-- WildMenu { }, -- Current match in 'wildmenu' completion
-- WinBar { }, -- Window bar of current window
-- WinBarNC { }, -- Window bar of not-current windows
-- Common vim syntax groups used for all kinds of code and markup.
-- Commented-out groups should chain up to their preferred (*) group
-- by default.
--
-- See :h group-name
--
-- Uncomment and edit if you want more specific syntax highlighting.
-- Comment { }, -- Any comment
-- Constant { }, -- (*) Any constant
-- String { }, -- A string constant: "this is a string"
-- Character { }, -- A character constant: 'c', '\n'
-- Number { }, -- A number constant: 234, 0xff
-- Boolean { }, -- A boolean constant: TRUE, false
-- Float { }, -- A floating point constant: 2.3e10
-- Identifier { }, -- (*) Any variable name
-- Function { }, -- Function name (also: methods for classes)
-- Statement { }, -- (*) Any statement
-- Conditional { }, -- if, then, else, endif, switch, etc.
-- Repeat { }, -- for, do, while, etc.
-- Label { }, -- case, default, etc.
-- Operator { }, -- "sizeof", "+", "*", etc.
-- Keyword { }, -- any other keyword
-- Exception { }, -- try, catch, throw
-- PreProc { }, -- (*) Generic Preprocessor
-- Include { }, -- Preprocessor #include
-- Define { }, -- Preprocessor #define
-- Macro { }, -- Same as Define
-- PreCondit { }, -- Preprocessor #if, #else, #endif, etc.
-- Type { }, -- (*) int, long, char, etc.
-- StorageClass { }, -- static, register, volatile, etc.
-- Structure { }, -- struct, union, enum, etc.
-- Typedef { }, -- A typedef
-- Special { }, -- (*) Any special symbol
-- SpecialChar { }, -- Special character in a constant
-- Tag { }, -- You can use CTRL-] on this
-- Delimiter { }, -- Character that needs attention
-- SpecialComment { }, -- Special things inside a comment (e.g. '\n')
-- Debug { }, -- Debugging statements
-- Underlined { gui = "underline" }, -- Text that stands out, HTML links
-- Ignore { }, -- Left blank, hidden |hl-Ignore| (NOTE: May be invisible here in template)
-- Error { }, -- Any erroneous construct
-- Todo { }, -- Anything that needs extra attention; mostly the keywords TODO FIXME and XXX
-- These groups are for the native LSP client and diagnostic system. Some
-- other LSP clients may use these groups, or use their own. Consult your
-- LSP client's documentation.
-- See :h lsp-highlight, some groups may not be listed, submit a PR fix to lush-template!
--
-- LspReferenceText { } , -- Used for highlighting "text" references
-- LspReferenceRead { } , -- Used for highlighting "read" references
-- LspReferenceWrite { } , -- Used for highlighting "write" references
-- LspCodeLens { } , -- Used to color the virtual text of the codelens. See |nvim_buf_set_extmark()|.
-- LspCodeLensSeparator { } , -- Used to color the seperator between two or more code lens.
-- LspSignatureActiveParameter { } , -- Used to highlight the active parameter in the signature help. See |vim.lsp.handlers.signature_help()|.
-- See :h diagnostic-highlights, some groups may not be listed, submit a PR fix to lush-template!
--
-- DiagnosticError { } , -- Used as the base highlight group. Other Diagnostic highlights link to this by default (except Underline)
-- DiagnosticWarn { } , -- Used as the base highlight group. Other Diagnostic highlights link to this by default (except Underline)
-- DiagnosticInfo { } , -- Used as the base highlight group. Other Diagnostic highlights link to this by default (except Underline)
-- DiagnosticHint { } , -- Used as the base highlight group. Other Diagnostic highlights link to this by default (except Underline)
-- DiagnosticOk { } , -- Used as the base highlight group. Other Diagnostic highlights link to this by default (except Underline)
-- DiagnosticVirtualTextError { } , -- Used for "Error" diagnostic virtual text.
-- DiagnosticVirtualTextWarn { } , -- Used for "Warn" diagnostic virtual text.
-- DiagnosticVirtualTextInfo { } , -- Used for "Info" diagnostic virtual text.
-- DiagnosticVirtualTextHint { } , -- Used for "Hint" diagnostic virtual text.
-- DiagnosticVirtualTextOk { } , -- Used for "Ok" diagnostic virtual text.
-- DiagnosticUnderlineError { } , -- Used to underline "Error" diagnostics.
-- DiagnosticUnderlineWarn { } , -- Used to underline "Warn" diagnostics.
-- DiagnosticUnderlineInfo { } , -- Used to underline "Info" diagnostics.
-- DiagnosticUnderlineHint { } , -- Used to underline "Hint" diagnostics.
-- DiagnosticUnderlineOk { } , -- Used to underline "Ok" diagnostics.
-- DiagnosticFloatingError { } , -- Used to color "Error" diagnostic messages in diagnostics float. See |vim.diagnostic.open_float()|
-- DiagnosticFloatingWarn { } , -- Used to color "Warn" diagnostic messages in diagnostics float.
-- DiagnosticFloatingInfo { } , -- Used to color "Info" diagnostic messages in diagnostics float.
-- DiagnosticFloatingHint { } , -- Used to color "Hint" diagnostic messages in diagnostics float.
-- DiagnosticFloatingOk { } , -- Used to color "Ok" diagnostic messages in diagnostics float.
-- DiagnosticSignError { } , -- Used for "Error" signs in sign column.
-- DiagnosticSignWarn { } , -- Used for "Warn" signs in sign column.
-- DiagnosticSignInfo { } , -- Used for "Info" signs in sign column.
-- DiagnosticSignHint { } , -- Used for "Hint" signs in sign column.
-- DiagnosticSignOk { } , -- Used for "Ok" signs in sign column.
-- Tree-Sitter syntax groups.
--
-- See :h treesitter-highlight-groups, some groups may not be listed,
-- submit a PR fix to lush-template!
--
-- Tree-Sitter groups are defined with an "@" symbol, which must be
-- specially handled to be valid lua code, we do this via the special
-- sym function. The following are all valid ways to call the sym function,
-- for more details see https://www.lua.org/pil/5.html
--
-- sym("@text.literal")
-- sym('@text.literal')
-- sym"@text.literal"
-- sym'@text.literal'
--
-- For more information see https://github.com/rktjmp/lush.nvim/issues/109
-- sym"@text.literal" { }, -- Comment
-- sym"@text.reference" { }, -- Identifier
-- sym"@text.title" { }, -- Title
-- sym"@text.uri" { }, -- Underlined
-- sym"@text.underline" { }, -- Underlined
-- sym"@text.todo" { }, -- Todo
-- sym"@comment" { }, -- Comment
-- sym"@punctuation" { }, -- Delimiter
-- sym"@constant" { }, -- Constant
-- sym"@constant.builtin" { }, -- Special
-- sym"@constant.macro" { }, -- Define
-- sym"@define" { }, -- Define
-- sym"@macro" { }, -- Macro
-- sym"@string" { }, -- String
-- sym"@string.escape" { }, -- SpecialChar
-- sym"@string.special" { }, -- SpecialChar
-- sym"@character" { }, -- Character
-- sym"@character.special" { }, -- SpecialChar
-- sym"@number" { }, -- Number
-- sym"@boolean" { }, -- Boolean
-- sym"@float" { }, -- Float
-- sym"@function" { }, -- Function
-- sym"@function.builtin" { }, -- Special
-- sym"@function.macro" { }, -- Macro
-- sym"@parameter" { }, -- Identifier
-- sym"@method" { }, -- Function
-- sym"@field" { }, -- Identifier
-- sym"@property" { }, -- Identifier
-- sym"@constructor" { }, -- Special
-- sym"@conditional" { }, -- Conditional
-- sym"@repeat" { }, -- Repeat
-- sym"@label" { }, -- Label
-- sym"@operator" { }, -- Operator
-- sym"@keyword" { }, -- Keyword
-- sym"@exception" { }, -- Exception
-- sym"@variable" { }, -- Identifier
-- sym"@type" { }, -- Type
-- sym"@type.definition" { }, -- Typedef
-- sym"@storageclass" { }, -- StorageClass
-- sym"@structure" { }, -- Structure
-- sym"@namespace" { }, -- Identifier
-- sym"@include" { }, -- Include
-- sym"@preproc" { }, -- PreProc
-- sym"@debug" { }, -- Debug
-- sym"@tag" { }, -- Tag
}
end)
-- Return our parsed theme for extension or use elsewhere.
return theme
-- vi:nowrap

137
nvim/init.lua Normal file
View File

@ -0,0 +1,137 @@
-- ── Bootstrap lazy.nvim ───────────────────────────────────────────────────────
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- ── Plugins ───────────────────────────────────────────────────────────────────
require("lazy").setup({
{ dir = vim.fn.expand("~/Dotfiles/nvim/theme/cyberqueer.nvim") },
"rktjmp/lush.nvim",
"tpope/vim-sensible",
"junegunn/goyo.vim",
"arecarn/vim-crunch",
"preservim/nerdtree",
"ryanoasis/vim-devicons",
{ "junegunn/fzf", build = function() vim.fn["fzf#install"]() end },
"junegunn/fzf.vim",
"vim-airline/vim-airline",
"vim-airline/vim-airline-themes",
"voldikss/vim-floaterm",
"rust-lang/rust.vim",
"norcalli/nvim-colorizer.lua",
{ "neoclide/coc.nvim", branch = "release" },
{ "mg979/vim-visual-multi", branch = "master" },
"SirVer/ultisnips",
"honza/vim-snippets",
"mfussenegger/nvim-dap",
"elihunter173/dirbuf.nvim",
"tpope/vim-dadbod",
"kristijanhusak/vim-dadbod-ui",
"kristijanhusak/vim-dadbod-completion",
"nvim-mini/mini.icons",
"tadmccorkle/markdown.nvim",
{ "ellisonleao/glow.nvim", config = true },
}, {
-- keep lazy's own UI out of the way on first install
install = { colorscheme = { "habamax" } },
})
-- ── Colorscheme & UI ──────────────────────────────────────────────────────────
vim.cmd("colorscheme cyberqueer")
vim.g.airline_powerline_fonts = 1
vim.g.airline_theme = "cyberqueer"
local ipaddr = vim.trim(vim.fn.system("hostname -i"))
local hostname = vim.trim(vim.fn.system("hostname -s"))
vim.g.airline_section_x = "IP:" .. ipaddr .. " DNS:" .. hostname
-- ── Providers ─────────────────────────────────────────────────────────────────
vim.g.loaded_ruby_provider = 0
vim.g.loaded_perl_provider = 0
-- ── Editor options ────────────────────────────────────────────────────────────
vim.cmd("filetype plugin indent on")
vim.cmd("syntax enable")
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.cursorline = true
vim.opt.cursorcolumn = true
vim.opt.showmode = false
vim.opt.shiftwidth = 4
vim.opt.scrolloff = 5
vim.opt.wrap = false
vim.opt.incsearch = true
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.showcmd = true
vim.opt.showmatch = true
vim.opt.hlsearch = true
vim.opt.history = 1000
vim.opt.wildmenu = true
vim.opt.wildmode = "list:longest"
-- ── Keymaps ───────────────────────────────────────────────────────────────────
-- window navigation
vim.keymap.set("n", "<C-l>", "<C-w>w")
vim.keymap.set("n", "<C-h>", "<C-w>h")
vim.keymap.set("n", "<C-j>", "<C-w>j")
vim.keymap.set("n", "<C-k>", "<C-w>k")
-- quick actions
vim.keymap.set("n", "t", ":FloatermNew<CR>", { silent = true })
vim.keymap.set("n", "e", ":NERDTreeToggle<CR><C-W>l", { silent = true })
vim.keymap.set("n", "s", ":DBUIToggle<CR>", { silent = true })
vim.keymap.set("n", "x", "<Plug>(DBUI_ExecuteQuery)", { remap = true })
vim.keymap.set("n", "q", ":wq<CR>", { silent = true })
-- insert mode completion
vim.keymap.set("i", "<TAB>", "<C-N>")
vim.keymap.set("i", "<S-TAB>", "<TAB>")
-- sudo save
vim.cmd("ca w!! w !sudo tee '%'")
-- visual block shorthand
vim.cmd("command! Vb normal! <C-v>")
-- ── UltiSnips ─────────────────────────────────────────────────────────────────
vim.g.UltiSnipsExpandTrigger = "<C-tab>"
vim.g.UltiSnipsJumpForwardTrigger = "<c-b>"
vim.g.UltiSnipsJumpBackwardTrigger = "<c-z>"
vim.g.UltiSnipsEditSplit = "vertical"
-- ── CoC ───────────────────────────────────────────────────────────────────────
vim.g.coc_global_extensions = {
"coc-snippets", "coc-powershell", "coc-sh", "coc-omnisharp",
"coc-clangd", "coc-json", "coc-css", "coc-git", "coc-pyright", "coc-sql",
}
vim.g.coc_snippet_next = "<c-j>"
vim.g.coc_snippet_prev = "<c-k>"
vim.keymap.set("i", "<C-l>", "<Plug>(coc-snippets-expand)", { remap = true })
vim.keymap.set("v", "<C-j>", "<Plug>(coc-snippets-select)", { remap = true })
vim.keymap.set("i", "<C-j>", "<Plug>(coc-snippets-expand-jump)", { remap = true })
vim.keymap.set("x", "<leader>x", "<Plug>(coc-convert-snippet)", { remap = true })
-- tab/s-tab navigate CoC pum, else fall through
vim.keymap.set("i", "<Tab>", function()
return vim.fn["coc#pum#visible"]() == 1 and vim.fn["coc#pum#next"](1) or "<Tab>"
end, { expr = true, silent = true })
vim.keymap.set("i", "<S-Tab>", function()
return vim.fn["coc#pum#visible"]() == 1 and vim.fn["coc#pum#prev"](1) or "<S-Tab>"
end, { expr = true, silent = true })
-- CR confirms CoC selection
vim.keymap.set("i", "<CR>", function()
return vim.fn.pumvisible() == 1 and "<C-Y>" or "<CR>"
end, { expr = true })

View File

@ -69,17 +69,13 @@ ln -sf ~/Dotfiles/starship.toml ~/.config/starship.toml
rm -rf ~/.config/micro rm -rf ~/.config/micro
cp -r ~/Dotfiles/micro ~/.config/ cp -r ~/Dotfiles/micro ~/.config/
# vim-plug # nvim — lazy.nvim bootstraps itself on first launch via init.lua
if [ ! -f ~/.local/share/nvim/site/autoload/plug.vim ]; then
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
fi
rm -rf ~/.config/nvim rm -rf ~/.config/nvim
ln -sf ~/Dotfiles/nvim ~/.config/nvim ln -sf ~/Dotfiles/nvim ~/.config/nvim
mkdir -p ~/.local/share/nvim/site/plugged/vim-airline-themes/autoload/airline/themes # airline theme: copied to both the lazy and legacy plugged paths so it works regardless
mkdir -p ~/.local/share/nvim/lazy/vim-airline-themes/autoload/airline/themes
cp -f ~/Dotfiles/nvim/cyberqueer-airline.vim \ cp -f ~/Dotfiles/nvim/cyberqueer-airline.vim \
~/.local/share/nvim/site/plugged/vim-airline-themes/autoload/airline/themes/ ~/.local/share/nvim/lazy/vim-airline-themes/autoload/airline/themes/
rm -rf ~/.config/yazi rm -rf ~/.config/yazi
ln -sf ~/Dotfiles/yazi ~/.config/yazi ln -sf ~/Dotfiles/yazi ~/.config/yazi