diff --git a/bin/install.ps1 b/bin/install.ps1 index be17a41..1726980 100644 --- a/bin/install.ps1 +++ b/bin/install.ps1 @@ -54,17 +54,22 @@ scoop import .\bin\windows\scoop_apps\scoop_minimal_apps.json New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\init.lua -Target (Resolve-Path .\dotfiles\neovim\init.lua) -Force New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lualine_setup.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lualine_setup.lua) -Force New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\term_powershell.lua -Target (Resolve-Path .\dotfiles\neovim\lua\term_powershell.lua) -Force +New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lsp_config.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lsp_config.lua) -Force +New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\local_settings.lua -Target (Resolve-Path .\dotfiles\neovim\lua\local_settings.lua) -Force New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lspconfig\server_configurations\satysfi_ls.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lspconfig\server_configurations\satysfi_ls.lua) -Force +New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lspconfig\server_configurations\jetls.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lspconfig\server_configurations\jetls.lua) -Force mkdir $env:LOCALAPPDATA\nvim\after\ftplugin New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\satysfi.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\satysfi.lua) New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\tex.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\tex.lua) New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\typst.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\typst.lua) +New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\org.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\org.lua) mkdir $env:LOCALAPPDATA\nvim\after\queries\satysfi Invoke-WebRequest -Uri "https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/highlights.scm" -OutFile $env:LOCALAPPDATA\nvim\after\queries\satysfi\highlights.scm Invoke-WebRequest -Uri "https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/indents.scm" -OutFile $env:LOCALAPPDATA\nvim\after\queries\satysfi\indents.scm Invoke-WebRequest -Uri "https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/matchup.scm" -OutFile $env:LOCALAPPDATA\nvim\after\queries\satysfi\matchup.scm mkdir $env:LOCALAPPDATA\nvim\after\queries\julia New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\queries\julia\injections.scm -Target (Resolve-Path .\dotfiles\neovim\after\queries\julia\injections.scm) + # pwsh New-Item -ItemType SymbolicLink -Path $PROFILE -Target (Resolve-Path .\dotfiles\pwsh\powershell_profile.ps1) -Force New-Item -ItemType SymbolicLink -Path ~\.config\powershell\chezmoi_completion.ps1 -Target (Resolve-Path .\dotfiles\pwsh\chezmoi_completion.ps1) -Force diff --git a/bin/install.sh b/bin/install.sh index 90626e9..964fe27 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -10,44 +10,49 @@ set -eu # exit 1 # fi # TODO: check git in path -cd $(git rev-parse --show-toplevel) +cd "$(git rev-parse --show-toplevel)" # ========================================================= # links # ========================================================= mkdir -p ~/.config/fish -ln -sf $(pwd)/dotfiles/fish/config.fish ~/.config/fish/config.fish -ln -sf $(pwd)/dotfiles/starship/starship.toml ~/.config/starship.toml -ln -sf $(pwd)/dotfiles/tmux.conf ~/.tmux.conf +ln -sf "$(pwd)/dotfiles/fish/config.fish" ~/.config/fish/config.fish +ln -sf "$(pwd)/dotfiles/starship/starship.toml" ~/.config/starship.toml +ln -sf "$(pwd)/dotfiles/tmux.conf" ~/.tmux.conf +# ln -s $(pwd)/dotfiles/neovim ~/.config/nvim mkdir -p ~/.config/nvim -ln -sf $(pwd)/dotfiles/neovim/init.lua ~/.config/nvim/init.lua +ln -sf "$(pwd)/dotfiles/neovim/init.lua" ~/.config/nvim/init.lua mkdir -p ~/.config/nvim/lua -ln -sf $(pwd)/dotfiles/neovim/lua/lualine_setup.lua ~/.config/nvim/lua/lualine_setup.lua -ln -sf $(pwd)/dotfiles/neovim/lua/term_powershell.lua ~/.config/nvim/lua/term_powershell.lua -ln -sf $(pwd)/dotfiles/neovim/lua/pluto_nvim.lua ~/.config/nvim/lua/pluto_nvim.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lualine_setup.lua" ~/.config/nvim/lua/lualine_setup.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/term_powershell.lua" ~/.config/nvim/lua/term_powershell.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lsp_config.lua" ~/.config/nvim/lua/lsp_config.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/pluto_nvim.lua" ~/.config/nvim/lua/pluto_nvim.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/local_settings.lua" ~/.config/nvim/lua/local_settings.lua mkdir -p ~/.config/nvim/lua/lspconfig/server_configurations -ln -sf $(pwd)/dotfiles/neovim/lua/lspconfig/server_configurations/satysfi_ls.lua ~/.config/nvim/lua/lspconfig/server_configurations/satysfi_ls.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lspconfig/server_configurations/satysfi_ls.lua" ~/.config/nvim/lua/lspconfig/server_configurations/satysfi_ls.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lspconfig/server_configurations/jetls.lua" ~/.config/nvim/lua/lspconfig/server_configurations/jetls.lua mkdir -p ~/.config/nvim/after/ftplugin -ln -sf $(pwd)/dotfiles/neovim/after/ftplugin/satysfi.lua ~/.config/nvim/after/ftplugin/satysfi.lua -ln -sf $(pwd)/dotfiles/neovim/after/ftplugin/tex.lua ~/.config/nvim/after/ftplugin/tex.lua -ln -sf $(pwd)/dotfiles/neovim/after/ftplugin/typst.lua ~/.config/nvim/after/ftplugin/typst.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/satysfi.lua" ~/.config/nvim/after/ftplugin/satysfi.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/tex.lua" ~/.config/nvim/after/ftplugin/tex.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/typst.lua" ~/.config/nvim/after/ftplugin/typst.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/org.lua" ~/.config/nvim/after/ftplugin/org.lua mkdir -p ~/.config/nvim/after/queries/satysfi curl -o ~/.config/nvim/after/queries/satysfi/highlights.scm https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/highlights.scm curl -o ~/.config/nvim/after/queries/satysfi/indents.scm https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/indents.scm curl -o ~/.config/nvim/after/queries/satysfi/matchup.scm https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/matchup.scm mkdir -p ~/.config/nvim/after/queries/julia -ln -sf $(pwd)/dotfiles/neovim/after/queries/julia/injections.scm ~/.config/nvim/after/queries/julia/injections.scm +ln -sf "$(pwd)/dotfiles/neovim/after/queries/julia/injections.scm" ~/.config/nvim/after/queries/julia/injections.scm mkdir -p ~/.config/nvim/luasnippets -ln -sf $(pwd)/dotfiles/neovim/luasnippets/all.lua ~/.config/nvim/luasnippets/all.lua +ln -sf "$(pwd)/dotfiles/neovim/luasnippets/all.lua" ~/.config/nvim/luasnippets/all.lua mkdir -p ~/.config/nvim/luasnippets/satysfi -ln -sf $(pwd)/dotfiles/neovim/luasnippets/satysfi/math.lua ~/.config/nvim/luasnippets/satysfi/math.lua +ln -sf "$(pwd)/dotfiles/neovim/luasnippets/satysfi/math.lua" ~/.config/nvim/luasnippets/satysfi/math.lua mkdir -p ~/.julia/config -ln -sf $(pwd)/dotfiles/startup_linux.jl ~/.julia/config/startup.jl +ln -sf "$(pwd)/dotfiles/startup_linux.jl" ~/.julia/config/startup.jl curl -o ~/.julia/config/catppuccin.jl https://raw.githubusercontent.com/catppuccin/ohmyrepl/refs/heads/main/catppuccin.jl mkdir -p ~/.config/lf -ln -sf $(pwd)/dotfiles/lf/lfrc ~/.config/lf/lfrc +ln -sf "$(pwd)/dotfiles/lf/lfrc" ~/.config/lf/lfrc -ln -sf $(pwd)/dotfiles/bat/config "$(bat --config-file)" +ln -sf "$(pwd)/dotfiles/bat/config" "$(bat --config-file)" diff --git a/bin/neovim/add_dependencies.jl b/bin/neovim/add_dependencies.jl index f4560c5..b3e39fa 100644 --- a/bin/neovim/add_dependencies.jl +++ b/bin/neovim/add_dependencies.jl @@ -6,27 +6,26 @@ using Pkg # add LanguageServer.jl Pkg.add("LanguageServer") -# add dependencies of LanguageServer.jl -pkg_ls = Pkg.project().dependencies["LanguageServer"] -pkg_ls_deps = Pkg.dependencies()[pkg_ls].dependencies |> keys -foreach(Pkg.add, pkg_ls_deps) +# add PackageCompiler.jl +Pkg.add("PackageCompiler") # add extra dependencies # these packages are manually collected -pkg_extra = ["Logging", "Sockets", "DataStructures", "Tar", "ArgTools", "Dates", "Downloads", "TOML"] -foreach(Pkg.add, pkg_extra) -@info "dependency added" +pkg_extra = ["Logging", "Sockets", "DataStructures", "Tar", "ArgTools", "Dates", "Downloads", "TOML", "JSONRPC", "SymbolServer", "CSTParser", "StaticLint", "JSON"] +Pkg.add(pkg_extra) +@info "added dependencies" + +# Extra package to be executed in precompiled code +pkg_precompiled = ["Pkg"] # save pkgs to be used for precompile functions with traced script out_path = joinpath(Pkg.project().path |> dirname, "precompile_exec_head.jl") @info "writing $(out_path)" open(out_path, "w") do io println(io, "using LanguageServer") - println(io, "using " * join(pkg_ls_deps, ", ")) println(io, "using " * join(pkg_extra, ", ")) - if Sys.iswindows() - println(io, "import FileWatching") - end + println(io, "using " * join(pkg_precompiled, ", ")) + println(io, "import FileWatching") end @info "finished writing precompile head file" diff --git a/bin/neovim/setup_julials.jl b/bin/neovim/setup_julials.jl index f6107bd..dbd44f3 100644 --- a/bin/neovim/setup_julials.jl +++ b/bin/neovim/setup_julials.jl @@ -5,7 +5,8 @@ if !ispath(project_path) @info "Created $(project_path)" touch(joinpath(project_path, "tracecompile.jl")) end -cmd = `julia --project=$(project_path) $(@__DIR__)/add_dependencies.jl` -@info cmd -run(cmd) + +using Pkg +Pkg.activate(project_path) +include("$(@__DIR__)/add_dependencies.jl") diff --git a/bin/neovim/update_julials.jl b/bin/neovim/update_julials.jl index 713c00b..77c157e 100644 --- a/bin/neovim/update_julials.jl +++ b/bin/neovim/update_julials.jl @@ -1,15 +1,18 @@ #!/usr/bin/julia project_path = joinpath(homedir(), ".julia", "environments", "nvim-lspconfig") +using Pkg +using PackageCompiler; cd(project_path) do @info "now at " pwd() - run(`julia --project=. -e 'using Pkg; Pkg.update()'`) + Pkg.activate(".") + Pkg.update() compile_traces = Iterators.filter(eachline("tracecompile.jl")) do line # Remove anonymous functions from compile trace !startswith(line, '#') && !occursin(r"\#\d+\#\d+", line) && !occursin(r"\#\#printstyled\#", line) end |> join read("precompile_exec_head.jl", String) * compile_traces |> (b -> write("precompile_exec.jl", b)) @info "compiling sysimage..." - run(`julia --project=. -e 'using PackageCompiler; create_sysimage(["LanguageServer"], sysimage_path = "sys-ls.so", precompile_execution_file = ["precompile_exec.jl"])'`) + create_sysimage(["LanguageServer"], sysimage_path = "sys-ls.so", precompile_execution_file = ["precompile_exec.jl"]) @info "post precompile" run(`julia --project=. -J sys-ls.so -e 'using Pkg; Pkg.precompile()'`) end diff --git a/dotfiles/bat/config b/dotfiles/bat/config index 7042fd2..a717d92 100644 --- a/dotfiles/bat/config +++ b/dotfiles/bat/config @@ -1,4 +1,4 @@ # use Catppuccin for bat # https://github.com/catppuccin/bat # Installation instruction on the readme ---theme="Catppuccin Latte" +--theme="Catppuccin Mocha" diff --git a/dotfiles/fish/config.fish b/dotfiles/fish/config.fish index 37148a4..f549acb 100644 --- a/dotfiles/fish/config.fish +++ b/dotfiles/fish/config.fish @@ -24,6 +24,25 @@ if status is-interactive # opam #source ~/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true + + function rga-fzf + set RG_PREFIX 'rga --files-with-matches' + if test (count $argv) -gt 1 + set RG_PREFIX "$RG_PREFIX $argv[1..-2]" + end + set -l file $file + set file ( + FZF_DEFAULT_COMMAND="$RG_PREFIX '$argv[-1]'" \ + fzf --sort \ + --preview='test ! -z {} && \ + rga --pretty --context 5 {q} {}' \ + --phony -q "$argv[-1]" \ + --bind "change:reload:$RG_PREFIX {q}" \ + --preview-window='50%:wrap' + ) && \ + echo "opening $file" && \ + open "$file" + end end # starship diff --git a/dotfiles/lf/lfrc b/dotfiles/lf/lfrc index a0ca2df..15b8558 100644 --- a/dotfiles/lf/lfrc +++ b/dotfiles/lf/lfrc @@ -1,47 +1,23 @@ cmap cmd-menu-complete cmap cmd-menu-complete-back -cmd fzf_search ${{ - cmd="rg --column --line-number --no-heading --color=always --smart-case" - fzf --ansi --disabled --layout=reverse --header="Search in files" --delimiter=: \ - --bind="start:reload([ -n {q} ] && $cmd -- {q} || true)" \ - --bind="change:reload([ -n {q} ] && $cmd -- {q} || true)" \ - --bind='enter:become(lf -remote "send $id select \"$(printf "%s" {1} | sed '\''s/\\/\\\\/g;s/"/\\"/g'\'')\"")' \ - --preview-window='+{2}-/2' \ - --preview='bat --color=always --highlight-line={2} -- {1}' - # --preview='cat -- {1}' # Use your favorite previewer here (bat, source-highlight, etc.), for example: - # --preview-window='+{2}-/2' \ - # --preview='bat --color=always --highlight-line={2} -- {1}' - # Alternatively you can even use the same previewer you've configured for lf - #--preview='~/.config/lf/cleaner; ~/.config/lf/previewer {1} "$FZF_PREVIEW_COLUMNS" "$FZF_PREVIEW_LINES" "$FZF_PREVIEW_LEFT" "$FZF_PREVIEW_TOP"')" -}} -map gs :fzf_search +## https://github.com/gokcehan/lf/wiki/Integrations#eza +#cmd on-select &{{ +# lf -remote "send $id set statfmt \"$(eza -ld --color=always "$f" | sed 's/\\/\\\\/g;s/"/\\"/g')\"" +#}} +# +#cmd git_branch ${{ +# git branch | fzf | xargs git checkout +# pwd_shell="$(pwd | sed 's/\\/\\\\/g;s/"/\\"/g')" +# lf -remote "send $id updir; cd \"$pwd_shell\"" +#}} +#map gb :git_branch +#map gp $clear; git pull --rebase || true; echo "press ENTER"; read ENTER +#map gs $clear; git status; echo "press ENTER"; read ENTER +#map gl $clear; git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit +# +#cmd on-cd &{{ +# fmt="$(STARSHIP_SHELL= starship prompt | sed 's/\\/\\\\/g;s/"/\\"/g')" +# lf -remote "send $id set promptfmt \"$fmt\"" +#}} -# https://github.com/gokcehan/lf/wiki/Integrations#eza -cmd on-select &{{ - lf -remote "send $id set statfmt \"$(eza -ld --color=always "$f" | sed 's/\\/\\\\/g;s/"/\\"/g')\"" -}} - -cmd git_branch ${{ - git branch | fzf | xargs git checkout - pwd_shell="$(pwd | sed 's/\\/\\\\/g;s/"/\\"/g')" - lf -remote "send $id updir; cd \"$pwd_shell\"" -}} -map gb :git_branch -map gp $clear; git pull --rebase || true; echo "press ENTER"; read ENTER -map gs $clear; git status; echo "press ENTER"; read ENTER -map gl $clear; git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit - -cmd on-cd &{{ - fmt="$(STARSHIP_SHELL= starship prompt | sed 's/\\/\\\\/g;s/"/\\"/g')" - lf -remote "send $id set promptfmt \"$fmt\"" -}} - -set sixel true -set previewer ~/.config/lf/previewer - -# https://github.com/gokcehan/lf/wiki/Previews#with-sixel -# set previewer ctpv -# set cleaner ctpvclear -# &ctpv -s $id -# &ctpvquit $id diff --git a/dotfiles/neovim/.gitignore b/dotfiles/neovim/.gitignore new file mode 100644 index 0000000..8089223 --- /dev/null +++ b/dotfiles/neovim/.gitignore @@ -0,0 +1 @@ +lua/local_settings.lua diff --git a/dotfiles/neovim/after/ftplugin/org.lua b/dotfiles/neovim/after/ftplugin/org.lua new file mode 100644 index 0000000..530b84c --- /dev/null +++ b/dotfiles/neovim/after/ftplugin/org.lua @@ -0,0 +1,2 @@ +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 diff --git a/dotfiles/neovim/init.lua b/dotfiles/neovim/init.lua index e4f7b46..6c5dd9c 100644 --- a/dotfiles/neovim/init.lua +++ b/dotfiles/neovim/init.lua @@ -114,6 +114,9 @@ require('lazy').setup({ build = ":TSUpdate", dependencies = { "nvim-treesitter/nvim-treesitter-textobjects", + { + "nvim-treesitter/nvim-treesitter-context" + } }, }, { @@ -122,14 +125,6 @@ require('lazy').setup({ }, { "andymass/vim-matchup", - config = function() - vim.g.matchup_matchparen_offscreen = { method = "popup" } - require 'nvim-treesitter.configs'.setup { - matchup = { - enable = true, - } - } - end, }, { 'nvim-telescope/telescope.nvim', @@ -193,29 +188,7 @@ require('lazy').setup({ -- see Julian/lean.nvim readme opts = { lsp = { - on_attach = function(client, bufnr) - -- Enable completion triggered by - --vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings - -- See `:help vim.lsp.*` for documentation on any of the below function - local bufopts = { noremap = true, silent = true, buffer = bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'g1', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, bufopts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'grf', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, bufopts) - end, + on_attach = require("lsp_config").on_attach, }, mappings = true, }, @@ -231,18 +204,9 @@ require('lazy').setup({ }, -- event = 'VeryLazy', -- doesn't work with existing comp and treesitter config = function() - -- Setup treesitter - require('nvim-treesitter.configs').setup({ - highlight = { - enable = true, - additional_vim_regex_highlighting = { 'org' }, - }, - ensure_installed = { 'org' }, - }) - -- Setup orgmode require('orgmode').setup({ - org_agenda_files = '~/orgfiles/**/*', + org_agenda_files = require("local_settings").org_agenda_files, org_default_notes_file = '~/orgfiles/refile.org', org_todo_keywords = { "TODO(t)", @@ -288,8 +252,9 @@ require('lazy').setup({ end, config = function() require 'typst-preview'.setup { - -- Setting this true will enable printing debug information with print() - debug = false, + -- Setting this true will enable logging debug information to + -- `vim.fn.stdpath 'data' .. '/typst-preview/log.txt'` + debug = true, -- Custom format string to open the output link provided with %s -- Example: open_cmd = 'firefox %s -P typst-preview --class typst-preview' @@ -311,8 +276,8 @@ require('lazy').setup({ -- Warning: Be aware that your version might be older than the one -- required. dependencies_bin = { - ['tinymist'] = nil, - ['websocat'] = nil + ['tinymist'] = 'tinymist', + ['websocat'] = nil, }, -- A list of extra arguments (or nil) to be passed to previewer. @@ -381,6 +346,7 @@ vim.o.errorbells = true vim.opt.undofile = true -- Save undo history vim.o.completeopt = 'menuone,noselect' -- for better completion experience vim.o.termguicolors = true +vim.o.exrc = true vim.keymap.set('n', 'H', 'tabp', { desc = 'tab previous' }) vim.keymap.set('n', 'L', 'tabn', { desc = 'tab next' }) @@ -389,11 +355,39 @@ vim.keymap.set('n', 'L', 'tabn', { desc = 'tab next' }) require('catppuccin').setup({ transparent_background = true, }) -vim.cmd.colorscheme "catppuccin-latte" +vim.cmd.colorscheme "catppuccin-mocha" +-- vim.cmd.colorscheme "catppuccin-latte" ----------------------------------------------------------- vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' +local virt_lines_ns = vim.api.nvim_create_namespace 'on_diagnostic_jump' +--- @param diagnostic? vim.Diagnostic +--- @param bufnr integer +local function on_jump(diagnostic, bufnr) + if not diagnostic then return end + vim.diagnostic.show( + virt_lines_ns, + bufnr, + { diagnostic }, + { virtual_lines = { current_line = true }, virtual_text = false } + ) +end +-- vim.diagnostic.config({ +-- jump = { on_jump = on_jump }, +-- }) +vim.keymap.set('n', ']d', function() + vim.diagnostic.jump({ + count = 1, + float = true, + }) +end) +vim.keymap.set('n', '[d', function() + vim.diagnostic.jump({ + count = -1, + float = true, + }) +end) -- some terminalmode settings vim.keymap.set('t', 'h', 'h', { noremap = true, desc = "Exit terminal-mode and move to left window." }) @@ -459,7 +453,7 @@ require('gitsigns').setup { ---@param mode string|string[] ---@param l string ---@param r any - ---@param opts table? + ---@param opts vim.keymap.set.Opts? local function map(mode, l, r, opts) opts = opts or {} opts.buffer = bufnr @@ -495,6 +489,7 @@ vim.keymap.set('n', 'fli', builtin.lsp_incoming_calls, { desc = "lsp inc vim.keymap.set('n', 'flo', builtin.lsp_outgoing_calls, { desc = "lsp outgoing calls" }) vim.keymap.set('n', 'fll', builtin.lsp_implementations, { desc = "lsp implementations" }) vim.keymap.set('n', 'fb', builtin.buffers, { desc = "buffers" }) +vim.keymap.set('n', 'fz', builtin.current_buffer_fuzzy_find, { desc = "current buffer fuzzy find" }) vim.keymap.set('n', 'fg', builtin.live_grep, { desc = "grep" }) vim.keymap.set('n', 'fh', builtin.help_tags, { desc = "help tags" }) vim.keymap.set('n', 'fc', builtin.git_commits, { desc = "git commit" }) @@ -620,29 +615,7 @@ vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer -local on_attach = function(client, bufnr) - -- Enable completion triggered by - --vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings - -- See `:help vim.lsp.*` for documentation on any of the below function - local bufopts = { noremap = true, silent = true, buffer = bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'g1', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, bufopts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'grf', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, bufopts) -end +local on_attach = require("lsp_config").on_attach -- cmp_nvim_lsp supports additional LSP completion capabilities local capabilities = require("cmp_nvim_lsp").default_capabilities() @@ -683,13 +656,16 @@ if julials_so_file then -- if sysimage doesn't exist, julials_so_file == nil end -- main lspconfig.julials.setup { - on_attach = on_attach, + on_attach = function(client, bufnr) + on_attach(client, bufnr) + vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) + end, capabilities = capabilities, cmd = { "julia", "--startup-file=no", "--history-file=no", julials_so_option[1], julials_so_option[2], -- use below 2 lines to collect script to be included in sysimage - -- '--trace-compile', - -- vim.env.HOME .. "/.julia/environments/nvim-lspconfig/tracecompile.jl", + '--trace-compile', + vim.env.HOME .. "/.julia/environments/nvim-lspconfig/tracecompile.jl", "-t4", "-e", [[ @@ -720,12 +696,22 @@ lspconfig.julials.setup { Base.load_path_expand("@v#.#"), )) end + ENV["JULIA_DEBUG"] = "LanguageServer" @info "Running language server" VERSION pwd() project_path depot_path server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path) server.runlinter = true run(server) ]] } } +-- JETLS +require 'lspconfig.server_configurations.jetls' +lspconfig.jetls.setup { + on_attach = function(client, bufnr) + on_attach(client, bufnr) + vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) + end, + capabilities = capabilities, +} -- SATySFi require 'lspconfig.server_configurations.satysfi_ls' lspconfig.satysfi_ls.setup { @@ -745,38 +731,39 @@ lspconfig.powershell_es.setup { bundle_path = vim.fn.has('win32') == 1 and win_pwsh_es_path or arch_pwsh_es_path, capabilities = capabilities, } --- ccls --- -- csharp --- lspconfig.omnisharp.setup { --- cmd = {'omnisharp'}, --- } --- lspconfig.typst_lsp.setup { --- on_attach = on_attach, --- capabilities = capabilities, --- single_file_support = true, --- } lspconfig.tinymist.setup { on_attach = on_attach, capabilities = capabilities, single_file_support = true, + -- offset_encoding = "utf-8", + settings = { + formatterMode = "typstyle", + }, } lspconfig.rust_analyzer.setup { - on_attach = on_attach, + on_attach = function(client, bufnr) + on_attach(client, bufnr) + vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) + end, capabilities = capabilities, settings = { ['rust-analyzer'] = { + cargo = { + features = "all", + }, check = { command = "clippy", - } - } - } + }, + }, + }, } local lss = { "pyright", "texlab", --[[ "ccls", ]] "clangd", "ts_ls", --[["tailwindcss"]] "hls", "cmake", - "csharp_ls", "html", "r_language_server", "cssls", "jsonls", "sqls", "vhdl_ls", "ruff", "lemminx" } + "csharp_ls", "html", "r_language_server", "cssls", "jsonls", "sqls", "vhdl_ls", "ruff", "lemminx", "nixd", "nil_ls", + "verible", "svls", "yamlls" } for _, ls in pairs(lss) do lspconfig[ls].setup { on_attach = on_attach, diff --git a/dotfiles/neovim/lua/lsp_config.lua b/dotfiles/neovim/lua/lsp_config.lua new file mode 100644 index 0000000..1f714f1 --- /dev/null +++ b/dotfiles/neovim/lua/lsp_config.lua @@ -0,0 +1,37 @@ +local M = {} + +---Add `desc` to bufopts table. +---@param bufopts vim.keymap.set.Opts +---@param desc string +---@return vim.keymap.set.Opts +local function with_desc(bufopts, desc) + return vim.tbl_extend("error", bufopts, { desc = desc }) +end + +M.on_attach = function(client, bufnr) + -- Enable completion triggered by + --vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings + -- See `:help vim.lsp.*` for documentation on any of the below function + local bufopts = { noremap = true, silent = true, buffer = bufnr } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, with_desc(bufopts, "goto declaration")) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, with_desc(bufopts, "goto definition")) + vim.keymap.set('n', 'gT', vim.lsp.buf.type_definition, with_desc(bufopts, "goto type definition")) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, with_desc(bufopts, "lsp hover")) + vim.keymap.set('n', 'g1', vim.lsp.buf.implementation, with_desc(bufopts, "lsp implementations")) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, with_desc(bufopts, "lsp signature help")) + vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, with_desc(bufopts, "lsp add_workspace_folder")) + vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, + with_desc(bufopts, "lsp remove_workspace_folder")) + vim.keymap.set('n', 'wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, with_desc(bufopts, "lsp list_workspace_folders")) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, with_desc(bufopts, "lsp type definition")) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, with_desc(bufopts, "lsp rename")) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, with_desc(bufopts, "lsp code_action")) + vim.keymap.set('n', 'grf', vim.lsp.buf.references, with_desc(bufopts, "lsp references")) + vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, with_desc(bufopts, "lsp format")) +end + +return M diff --git a/dotfiles/neovim/lua/lspconfig/server_configurations/jetls.lua b/dotfiles/neovim/lua/lspconfig/server_configurations/jetls.lua new file mode 100644 index 0000000..c2a66d1 --- /dev/null +++ b/dotfiles/neovim/lua/lspconfig/server_configurations/jetls.lua @@ -0,0 +1,37 @@ +local configs = require 'lspconfig.configs' +local util = require 'lspconfig.util' + +local root_files = { 'Project.toml', 'JuliaProject.toml' } + +configs.jetls = { + default_config = { + cmd = { + 'julia', + '+beta', + '--project=' .. vim.env.HOME .. '/work/julia/JETLS.jl', + '--startup-file=no', + '--history-file=no', + '-e', + [[ + using JETLS + runserver(stdin, stdout) + ]] + }, + filetypes = { 'julia' }, + root_dir = function(fname) + return util.root_pattern(unpack(root_files))(fname) + or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true, })[1]) + end, + single_file_support = true, + }, + commands = { + -- JuliaActivateEnv = { + -- activate_env + -- } + }, + docs = { + description = [[ +JETLS: https://github.com/aviatesk/JETLS.jl + ]], + }, +} diff --git a/dotfiles/pwsh/powershell_profile.ps1 b/dotfiles/pwsh/powershell_profile.ps1 index b9e0ae5..fa8f8ae 100644 --- a/dotfiles/pwsh/powershell_profile.ps1 +++ b/dotfiles/pwsh/powershell_profile.ps1 @@ -139,7 +139,7 @@ function Enable-SshAgent { .OUTPUTS no outputs #> - sudo Set-Service -Name ssh-agent -StartupType Manual && Start-Service ssh-agent + sudo run pwsh -c "Set-Service -Name ssh-agent -StartupType Manual && Start-Service ssh-agent" } # auto start ssh-agent and do ssh-add function Invoke-SshAdd { @@ -164,6 +164,8 @@ $env:LESS = "-i -M -R -S -W -z-4 -x4" $env:JL_SYSIMG_PATH = "$HOME/dotfiles/julia-sysimages" $env:JL_SYSIMG_PLT = "$HOME/dotfiles/julia-sysimages/sys-plotsmakie.so" $env:JL_SYSIMG_ETC = "$HOME/dotfiles/julia-sysimages/sys-etc.so" +# yazi file +$env:YAZI_FILE_ONE = "C:\Program Files\Git\usr\bin\file.exe" # ============================================================== diff --git a/dotfiles/startup_linux.jl b/dotfiles/startup_linux.jl index 9534be9..ce4427a 100644 --- a/dotfiles/startup_linux.jl +++ b/dotfiles/startup_linux.jl @@ -2,7 +2,7 @@ try using OhMyREPL enable_autocomplete_brackets(false) include("catppuccin.jl") - OhMyREPL.colorscheme!("CatppuccinLatte") + OhMyREPL.colorscheme!("CatppuccinMocha") catch e @warn "Failed to load OhMyREPL" end diff --git a/dotfiles/wezterm/wezterm.lua b/dotfiles/wezterm/wezterm.lua index c93fc86..b081795 100644 --- a/dotfiles/wezterm/wezterm.lua +++ b/dotfiles/wezterm/wezterm.lua @@ -44,11 +44,13 @@ return { -- } -- }, - -- color_scheme = "iceberg-dark", - color_scheme = "catppuccin-latte", + color_scheme = "iceberg-dark", + -- color_scheme = "catppuccin-macchiato", + -- color_scheme = "catppuccin-latte", + -- color_scheme = "Everforest Dark (Gogh)", use_fancy_tab_bar = false, tab_bar_at_bottom = true, - window_background_opacity = 0.85, + window_background_opacity = 0.90, -- font = wezterm.font 'FirgeNerd Console' font = wezterm.font_with_fallback { { diff --git a/extra_configs/qpdfview/update_config.py b/extra_configs/qpdfview/update_config.py index d6593e4..85e1506 100755 --- a/extra_configs/qpdfview/update_config.py +++ b/extra_configs/qpdfview/update_config.py @@ -68,6 +68,8 @@ shortcut_config["General"]["findPrevious"] = "Ctrl+Shift+G, Shift+Return" shortcut_config["General"]["jumpToPage"] = "Ctrl+J, G" shortcut_config["General"]["nextPage"] = "Space, N" shortcut_config["General"]["previousPage"] = "Backspace, P" +shortcut_config["General"]["zoomIn"] = "Ctrl+Up, Ctrl++" +shortcut_config["General"]["zoomOut"] = "Ctrl+Down, Ctrl+-" with open(QPDFVIEW_CONFIG_SHORTCUTS, "w") as file: shortcut_config.write(file, space_around_delimiters=False) diff --git a/extra_configs/xremap_config.yml b/extra_configs/xremap_config.yml index db85d9e..15ba982 100644 --- a/extra_configs/xremap_config.yml +++ b/extra_configs/xremap_config.yml @@ -16,6 +16,9 @@ modmap: Win_L: held: Win_L alone: Key_Chat + - name: left shift + remap: + Capslock: shift_l keymap: - name: ZenkakuHankaku to Esc remap: diff --git a/julia-sysimages b/julia-sysimages index 98581ab..4661893 160000 --- a/julia-sysimages +++ b/julia-sysimages @@ -1 +1 @@ -Subproject commit 98581abe7cb2baecd63e95c337da08778fec60ae +Subproject commit 4661893b2a71e30ee13197ff4fa6291d85d1a012 diff --git a/nix/flake.lock b/nix/flake.lock new file mode 100644 index 0000000..e89d268 --- /dev/null +++ b/nix/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1745391562, + "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/flake.nix b/nix/flake.nix index b43071e..a382c7d 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -15,7 +15,15 @@ nixpkgs.legacyPackages.x86_64-linux.curl nixpkgs.legacyPackages.x86_64-linux.neovim nixpkgs.legacyPackages.x86_64-linux.ripgrep + nixpkgs.legacyPackages.x86_64-linux.bat + nixpkgs.legacyPackages.x86_64-linux.eza + nixpkgs.legacyPackages.x86_64-linux.zoxide + nixpkgs.legacyPackages.x86_64-linux.yazi + nixpkgs.legacyPackages.x86_64-linux.hexyl nixpkgs.legacyPackages.x86_64-linux.fzf + nixpkgs.legacyPackages.x86_64-linux.difftastic + nixpkgs.legacyPackages.x86_64-linux.starship + nixpkgs.legacyPackages.x86_64-linux.lazygit nixpkgs.legacyPackages.x86_64-linux.clang-tools ];