This commit is contained in:
nazrin 2025-08-10 20:39:20 +00:00
parent 6c8d2048e2
commit 5f25fb511f
8 changed files with 334 additions and 60 deletions

2
.gitignore vendored
View file

@ -4,3 +4,5 @@ old
~
after
spell
.msc/

View file

@ -1,6 +1,7 @@
{
"suggest.enablePreselect": false,
"suggest.noselect": true,
"diagnostic.displayByAle": true,
"languageserver": {
"ccls": {
"command": "ccls",
@ -31,16 +32,23 @@
],
"filetypes": ["julia"]
},
"lua": {
"command": "lua-language-server",
"args": [],
"rootPatterns": [".git"],
"filetypes": ["lua"]
"haxe": {
"command": "node",
"args": ["/mnt/3tb/git/haxe-language-server/bin/server.js"],
"filetypes": ["haxe"],
"trace.server": "verbose",
"initializationOptions": {
"displayArguments": ["build.hxml"]
},
"settings": {
"haxe.executable": "haxe"
}
}
},
"d.servedPath": "/usr/local/bin/serve-d",
"d.dcdServerPath": "/home/eiko/.local/share/code-d/bin/dcd-server",
"d.dcdClientPath": "/home/eiko/.local/share/code-d/bin/dcd-client",
"d.dubBuildType": "unittest",
"dscanner.ignoredKeys": [
"dscanner.suspicious.unused_parameter",
"dscanner.style.long_line",

View file

@ -1,8 +1,30 @@
local vim = _G["vim"]
package.path = package.path .. (";%s/.config/nvim/?.lua"):format(os.getenv("HOME"))
require "plugins"
require "options"
require "keys"
require "theme"
local gerr
local function check(ok, err)
if not ok then
gerr = err
end
end
check(pcall(require, "plugins"))
check(pcall(require, "options"))
check(pcall(require, "keys"))
check(pcall(require, "theme"))
local function loadSyntaxFiles(dir)
local files = vim.fn.globpath(dir, "*.vim", 0, 1)
for _, file in ipairs(files) do
vim.cmd("source " .. file)
end
end
local syntaxDir = vim.fn.stdpath("config") .. "/syntax"
loadSyntaxFiles(syntaxDir)
if gerr then
error(gerr)
end

View file

@ -1,17 +1,22 @@
local vim = _G["vim"]
vim.api.nvim_set_keymap("n", "<A-j>", ":m .+1<CR>==", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<A-k>", ":m .-2<CR>==", { noremap = true, silent = true })
vim.api.nvim_set_keymap("v", "<A-j>", ":m '>+1<CR>gv=gv", { noremap = true, silent = true })
vim.api.nvim_set_keymap("v", "<A-k>", ":m '<-2<CR>gv=gv", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<A-J>", ":m .+1<CR>==", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<A-K>", ":m .-2<CR>==", { noremap = true, silent = true })
vim.api.nvim_set_keymap("v", "<A-J>", ":m '>+1<CR>gv=gv", { noremap = true, silent = true })
vim.api.nvim_set_keymap("v", "<A-K>", ":m '<-2<CR>gv=gv", { noremap = true, silent = true })
vim.cmd([[
nmap <silent> <C-k> <Plug>(ale_previous_wrap)
nmap <silent> <C-j> <Plug>(ale_next_wrap)
digraphs de 916
nnoremap <leader>h :noh<CR>
nnoremap <leader>y "+y
nnoremap <leader>y% gg"+yG<C-o>
nnoremap <leader>t :tabe
nnoremap <leader>t :tabe ]] .. [[
nnoremap <leader>T :tabe<CR>
nnoremap <leader>o :tabe .<CR>
vnoremap <leader>eas :'<,'>EasyAlign \ <CR>
@ -20,28 +25,37 @@ vnoremap <leader>eac :'<,'>EasyAlign ,<CR>
vnoremap <leader>eaas :'<,'>EasyAlign *\ <CR>
vnoremap <leader>eaae :'<,'>EasyAlign *=<CR>
vnoremap <leader>eaac :'<,'>EasyAlign *,<CR>
map <Space> <leader><leader>w
noremap <F1> :w<CR>
inoremap <F1> <esc>:w<CR>a
nnoremap <F5> :tabmove -1<CR>
nnoremap <F6> :tabmove +1<CR>
noremap gtn :tabnew<CR>
noremap gto :tabedit
noremap gto :tabedit
noremap gtc :tabclose<CR>
noremap <F2> gT
noremap <F3> gt
noremap <F14> :tabm -<CR>
noremap <F15> :tabm +<CR>
nnoremap <A-1> 1gt
nnoremap <A-2> 2gt
nnoremap <A-3> 3gt
nnoremap <A-4> 4gt
nnoremap <A-5> 5gt
nnoremap <A-6> 6gt
nnoremap <A-7> 7gt
nnoremap <A-8> 8gt
nnoremap <A-9> 9gt
nnoremap <A-0> 10gt
noremap <silent> <F2> gT
noremap <silent> <F3> gt
nnoremap <silent> <A-1> 1gt
nnoremap <silent> <A-2> 2gt
nnoremap <silent> <A-3> 3gt
nnoremap <silent> <A-4> 4gt
nnoremap <silent> <A-5> 5gt
nnoremap <silent> <A-6> 6gt
nnoremap <silent> <A-7> 7gt
nnoremap <silent> <A-8> 8gt
nnoremap <silent> <A-9> 9gt
nnoremap <silent> <A-0> 10gt
nnoremap <silent> <F4> :Telescope buffers<CR>
nnoremap <silent> <A-p> <Cmd>BufferPin<CR>
nnoremap <silent> <Space>bb <Cmd>BufferOrderByBufferNumber<CR>
nnoremap <silent> <Space>bn <Cmd>BufferOrderByName<CR>
nnoremap <silent> <Space>bd <Cmd>BufferOrderByDirectory<CR>
nnoremap <silent> <Space>bl <Cmd>BufferOrderByLanguage<CR>
nnoremap <silent> <Space>bw <Cmd>BufferOrderByWindowNumber<CR>
nnoremap ZZ :q<CR>
nnoremap ZQ :q<CR>
@ -55,6 +69,5 @@ vnoremap <Tab> >gv
vnoremap < <gv
vnoremap > >gv
"nnoremap gt :NvimTreeOpen<CR>
]])

View file

@ -1,3 +1,5 @@
local vim = _G["vim"]
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
@ -31,19 +33,27 @@ vim.opt.swapfile = false
vim.opt.cmdheight = 2
vim.opt.updatetime = 300
vim.opt.mouse = ""
vim.opt.showtabline = 2
vim.opt.viminfo:append("f1")
vim.cmd([[
autocmd BufRead,BufNewFile * set autoindent noexpandtab tabstop=4 shiftwidth=4
autocmd BufRead,BufNewFile * if &filetype !=# 'TelescopePrompt' && &filetype !=# 'TelescopeResults' | set autoindent noexpandtab tabstop=4 shiftwidth=4
augroup remember_folds
autocmd!
autocmd BufWinLeave * if &filetype !=# 'TelescopePrompt' && &filetype !=# 'TelescopeResults' && bufname('%') != '' | mkview
autocmd BufWinEnter * if &filetype !=# 'TelescopePrompt' && &filetype !=# 'TelescopeResults' && bufname('%') != '' | silent! loadview
augroup END
]])
vim.api.nvim_create_augroup("CaddyFileType", { clear = true })
vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, {
pattern = "/etc/caddy/conf.d/*",
callback = function()
vim.opt_local.filetype = "caddyfile"
end,
group = "CaddyFileType",
})
-- vim.api.nvim_create_augroup("CaddyFileType", { clear = true })
-- vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, {
-- pattern = "/etc/caddy/conf.d/*",
-- callback = function()
-- vim.opt_local.filetype = "caddyfile"
-- end,
-- group = "CaddyFileType",
-- })

View file

@ -1,17 +1,18 @@
local vim = _G["vim"]
local util = require("util")
local Plug = vim.fn["plug#"]
vim.call("plug#begin")
Plug("RRethy/vim-illuminate")
Plug("neoclide/coc.nvim", { ["do"] = vim.fn["coc#util#install()"]})
Plug("nvim-treesitter/nvim-treesitter", { ["do"] = vim.fn["TSUpdate"]})
Plug("Shirk/vim-gas")
Plug("Sirsireesh/vim-dlang-phobos-highlighter")
Plug("airblade/vim-gitgutter")
Plug("frazrepo/vim-rainbow")
Plug("vim-airline/vim-airline")
Plug("vim-airline/vim-airline-themes")
Plug("nvim-lualine/lualine.nvim")
Plug("junegunn/vim-easy-align")
Plug("junegunn/vim-peekaboo")
Plug("michaeljsmith/vim-indent-object")
Plug("neoclide/coc.nvim", { ['do'] = vim.fn['coc#util#install()']})
Plug("sheerun/vim-polyglot")
Plug("tikhomirov/vim-glsl")
Plug("tomasr/molokai")
@ -21,27 +22,216 @@ vim.call("plug#begin")
Plug("tpope/vim-surround")
Plug("tpope/vim-fugitive")
Plug("tbastos/vim-lua")
Plug("godlygeek/tabular")
Plug("yuezk/vim-js")
Plug("ctrlpvim/ctrlp.vim")
Plug("ryanoasis/vim-webdevicons")
Plug("kylelaker/riscv.vim")
Plug("dart-lang/dart-vim-plugin")
Plug("JuliaEditorSupport/julia-vim")
Plug("godlygeek/tabular")
Plug("preservim/vim-markdown")
Plug("dense-analysis/ale")
Plug("nvim-tree/nvim-web-devicons")
Plug("lewis6991/gitsigns.nvim")
Plug("BurntSushi/ripgrep")
Plug("nvim-lua/plenary.nvim")
Plug("nvim-telescope/telescope.nvim", { tag = "master" })
Plug("nanozuki/tabby.nvim")
Plug("petertriho/nvim-scrollbar")
Plug("neovim/nvim-lspconfig")
vim.call("plug#end")
vim.g["airline#extensions#tabline#enabled"] = 0
vim.g["airline#extensions#tabline#show_close_button"] = 0
vim.g["airline#extensions#tabline#tabs_label"] = ""
vim.g["airline#extensions#tabline#buffers_label"] = ""
vim.g["airline#extensions#tabline#formatter"] = "unique_tail_improved"
vim.g.airline_theme = "bubblegum"
vim.g.airline_powerline_fonts = 1
vim.g.airline_skip_empty_sections = 1
vim.g.airline_section_z = "%l:%c/%L %p%%"
require("lualine").setup({
options = {
theme = "modus-vivendi",
},
})
require("nvim-treesitter.configs").setup({
ensure_installed = "all",
sync_install = false,
auto_install = true,
sign_column_always = true,
disable_lsp = true,
use_neovim_diagnostics_api = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = true,
},
indent = {
enable = false
}
})
vim.wo.foldmethod = "expr"
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
-- local lspconfig = require('lspconfig')
--lspconfig.lua_ls.setup {
-- settings = {
-- Lua = {
-- runtime = {
-- -- Tell the language server which version of Lua you're using
-- -- (most likely LuaJIT in the case of Neovim)
-- version = 'LuaJIT',
-- },
-- diagnostics = {
-- -- Get the language server to recognize the `vim` global
-- globals = {
-- 'vim',
-- 'require'
-- },
-- },
-- workspace = {
-- -- Make the server aware of Neovim runtime files
-- library = vim.api.nvim_get_runtime_file("", true),
-- },
-- -- Do not send telemetry data containing a randomized but unique identifier
-- telemetry = {
-- enable = false,
-- },
-- },
-- },
--}
local devicons = require("nvim-web-devicons")
devicons.setup({
override = {
sdl = {
color = "#4f88dd",
name = "SDLang",
icon = "󰈮",
},
d = {
color = "#fa645a",
name = "D",
icon = ""
},
};
})
-- require("ale").setup({
-- completion_enabled = false,
-- maximum_file_size = 1024 * 1024 * 8,
-- fix_on_save = true,
-- -- linters_explicit = true,
-- -- linters = {},
-- linters_disable = {
-- "dls", "dmd", "luacheck", "lua_language_server", "luac", "selene"
-- },
-- linters_ignore = {
-- "dls", "dmd", "luacheck", "lua_language_server", "luac", "selene"
-- },
-- fixers = {
-- ["*"] = "trim_whitespace",
-- markdown = "prettier",
-- json = "prettier",
-- },
-- lua_language_server_config = {
-- }
-- })
-- vim.g["g:airline#extensions#ale#enabled"] = 1
-- vim.g["airline#extensions#tabline#enabled"] = 0
-- vim.g["airline#extensions#tabline#show_close_button"] = 0
-- vim.g["airline#extensions#tabline#tabs_label"] = ""
-- vim.g["airline#extensions#tabline#buffers_label"] = ""
-- vim.g["airline#extensions#tabline#formatter"] = "unique_tail_improved"
-- vim.g.airline_theme = "bubblegum"
-- vim.g.airline_powerline_fonts = 1
-- vim.g.airline_skip_empty_sections = 1
-- vim.g.airline_section_z = "%l:%c/%L %p%%"
vim.g.rainbow_guifgs = { "#dddddd", "#bbbbbb", "#cccccc", "#aaaaaa" }
-- require("barbar").setup({
-- highlight_inactive_file_icons = true,
-- clickable = false,
-- maximum_padding = 0,
-- semantic_letters = true,
-- icons = {
-- inactive = { button = "" },
-- current = { button = "" },
-- },
-- })
do
local theme = {
fill = { bg = "#333333", fg = "#b2b2b2" },
head = "TabLine",
tab = "TabLine",
win = "TabLine",
tail = "TabLine",
}
require("tabby").setup({
line = function(line)
return {
{ " ", hl = { bg = theme.fill.bg, fg = theme.fill.fg } },
line.tabs().foreach(function(tab, i)
local hl = { bg = theme.fill.bg, fg = theme.fill.fg }
local buf = tab.current_win().buf()
local _, typeColour = devicons.get_icon_color(buf.name())
typeColour = typeColour or hl.fg
typeColour = util.lightenColour(typeColour, 100)
if tab.is_current() then
hl.fg = hl.bg
hl.bg = typeColour
else
hl.fg = typeColour
if i % 2 == 1 then
hl.bg = "#252525"
end
end
return {
line.sep("", hl, theme.fill),
#buf.file_icon() > 0 and buf.file_icon() or "",
{ tab.name(), hl = { fg = hl.fg, bg = hl.bg, style = buf.is_changed() and "underline" or "" } },
line.sep("", hl, theme.fill),
hl = hl,
margin = " ",
}
end),
line.spacer(),
hl = theme.fill,
}
end,
})
end
local builtin = require('telescope.builtin')
vim.keymap.set("n", ",ff", builtin.find_files, { desc = "Telescope find files" })
vim.keymap.set("n", ",fg", builtin.live_grep, { desc = "Telescope live grep" })
vim.keymap.set("n", ",fh", builtin.help_tags, { desc = "Telescope help tags" })
vim.keymap.set("n", ",fb", builtin.current_buffer_fuzzy_find, { desc = "Telescope fzf" })
local actions = require("telescope.actions")
require("telescope").setup({
pickers = {
buffers = {
mappings = {
i = { ["<CR>"] = actions.select_tab_drop }
}
},
find_files = {
mappings = {
i = { ["<CR>"] = actions.select_tab_drop }
}
},
git_files = {
mappings = {
i = { ["<CR>"] = actions.select_tab_drop }
}
},
old_files = {
mappings = {
i = { ["<CR>"] = actions.select_tab_drop }
}
},
},
})
do -- COC
-- Some servers have issues with backup files, see #649
vim.opt.backup = false
@ -49,7 +239,7 @@ do -- COC
-- Having longer updatetime (default is 4000 ms = 4s) leads to noticeable
-- delays and poor user experience
vim.opt.updatetime = 300
vim.opt.updatetime = 500
-- Always show the signcolumn, otherwise it would shift the text each time
-- diagnostics appeared/became resolved
@ -82,8 +272,8 @@ do -- COC
-- Use `[g` and `]g` to navigate diagnostics
-- Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
keyset("n", "[g", "<Plug>(coc-diagnostic-prev)", {silent = true})
keyset("n", "]g", "<Plug>(coc-diagnostic-next)", {silent = true})
keyset("n", "ge", "<Plug>(coc-diagnostic-prev)", {silent = true})
keyset("n", "gE", "<Plug>(coc-diagnostic-next)", {silent = true})
-- GoTo code navigation
keyset("n", "gd", "<Plug>(coc-definition)", {silent = true})
@ -142,7 +332,7 @@ do -- COC
-- Apply codeAction to the selected region
-- Example: `<leader>aap` for current paragraph
local opts = {silent = true, nowait = true}
opts = {silent = true, nowait = true}
keyset("x", "<leader>a", "<Plug>(coc-codeaction-selected)", opts)
keyset("n", "<leader>a", "<Plug>(coc-codeaction-selected)", opts)
@ -229,3 +419,5 @@ do -- COC
keyset("n", "<space>p", ":<C-u>CocListResume<cr>", opts)
end
require("scrollbar").setup()

View file

@ -1,3 +1,5 @@
local vim = _G["vim"]
vim.cmd([[
function! AdaptColorscheme()
@ -48,7 +50,5 @@ highlight GitGutterDelete guifg=#ff2222 ctermfg=1
highlight GitGutterChange guifg=#bbbb00 ctermfg=3
highlight GitGutterAdd guifg=#009900 ctermfg=2
let g:lightline = {'colorscheme': 'wombat'}
]])

27
util.lua Normal file
View file

@ -0,0 +1,27 @@
local util = {}
function util.hexTorgb(str)
if str:sub(1, 1) == "#" then
str = str:sub(2, -1)
end
local r = tonumber(str:sub(1, 2), 16)
local g = tonumber(str:sub(3, 4), 16)
local b = tonumber(str:sub(5, 6), 16)
return r, g, b
end
function util.rgbToHex(r, g, b)
return ("#%02x%02x%02x"):format(r, g, b)
end
function util.lightenColour(c, n)
local r, g, b = util.hexTorgb(c)
r = math.min(math.max(r, n*1.1), 0xff)
g = math.max(g, n)
b = math.max(b, n*0.9)
return util.rgbToHex(r, g, b)
end
return util