commit
6a934ff6c6
9 changed files with 615 additions and 150 deletions
|
@ -52,9 +52,8 @@ scoop import .\bin\windows\scoop_apps\scoop_minimal_apps.json
|
||||||
# make symbolic links
|
# make symbolic links
|
||||||
# neovim
|
# neovim
|
||||||
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\init.lua -Target (Resolve-Path .\dotfiles\neovim\init.lua) -Force
|
||||||
New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\plugins.lua -Target (Resolve-Path .\dotfiles\neovim\lua\plugins.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\lualine_setup.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lualine_setup.lua) -Force
|
||||||
New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lsp_client_config.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lsp_client_config.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
|
||||||
# pwsh
|
# pwsh
|
||||||
New-Item -ItemType SymbolicLink -Path $PROFILE -Target (Resolve-Path .\dotfiles\pwsh\powershell_profile.ps1) -Force
|
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
|
New-Item -ItemType SymbolicLink -Path ~\.config\powershell\chezmoi_completion.ps1 -Target (Resolve-Path .\dotfiles\pwsh\chezmoi_completion.ps1) -Force
|
||||||
|
|
|
@ -22,6 +22,15 @@ ln -sf $(pwd)/dotfiles/tmux.conf ~/.tmux.conf
|
||||||
mkdir -p ~/.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
|
mkdir -p ~/.config/nvim/lua
|
||||||
ln -sf $(pwd)/dotfiles/neovim/lua/plugins.lua ~/.config/nvim/lua/plugins.lua
|
|
||||||
ln -sf $(pwd)/dotfiles/neovim/lua/lualine_setup.lua ~/.config/nvim/lua/lualine_setup.lua
|
ln -sf $(pwd)/dotfiles/neovim/lua/lualine_setup.lua ~/.config/nvim/lua/lualine_setup.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/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
|
||||||
|
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
|
||||||
|
|
||||||
|
|
7
dotfiles/neovim/after/ftplugin/satysfi.lua
Normal file
7
dotfiles/neovim/after/ftplugin/satysfi.lua
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
-- filetype plugin for satysfi
|
||||||
|
-- loaded after
|
||||||
|
|
||||||
|
-- tab
|
||||||
|
vim.o.tabstop = 2
|
||||||
|
vim.o.shiftwidth = 2
|
||||||
|
|
23
dotfiles/neovim/after/ftplugin/tex.lua
Normal file
23
dotfiles/neovim/after/ftplugin/tex.lua
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
-- restore completion order of nvim-cmp
|
||||||
|
-- source from `:help vimtex-complete-nvim-cmp`
|
||||||
|
local cmp = require'cmp'
|
||||||
|
cmp.setup.buffer {
|
||||||
|
formatting = {
|
||||||
|
format = function(entry, vim_item)
|
||||||
|
vim_item.menu = ({
|
||||||
|
omni = (vim.inspect(vim_item.menu):gsub('%"', "")),
|
||||||
|
buffer = "[Buffer]",
|
||||||
|
-- formatting for other sources
|
||||||
|
})[entry.source.name]
|
||||||
|
return vim_item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = cmp.config.sources{
|
||||||
|
{ name = 'omni' },
|
||||||
|
{ name = 'buffer' },
|
||||||
|
-- { name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'buffer' },
|
||||||
|
{ name = 'path' },
|
||||||
|
},
|
||||||
|
}
|
|
@ -1,4 +1,133 @@
|
||||||
--print("init.lua loaded")
|
-----------------------------------------------------------
|
||||||
|
-- Installing plugin manager 'lazy.nvim'
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--filter=blob:none",
|
||||||
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
|
"--branch=stable", -- latest stable release
|
||||||
|
lazypath,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
-- Installing plugins
|
||||||
|
require('lazy').setup({
|
||||||
|
{ "catppuccin/nvim", name = "catppuccin" }, -- Color scheme
|
||||||
|
{
|
||||||
|
'folke/which-key.nvim',
|
||||||
|
config = function()
|
||||||
|
vim.o.timeout = true
|
||||||
|
vim.o.timeoutlen = 300
|
||||||
|
require('which-key').setup {
|
||||||
|
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{ 'RRethy/vim-illuminate', }, -- highlight keywords under cursor
|
||||||
|
{ -- comment
|
||||||
|
'numToStr/Comment.nvim',
|
||||||
|
config = function ()
|
||||||
|
require('Comment').setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{ -- auto pair
|
||||||
|
'windwp/nvim-autopairs',
|
||||||
|
config = function()
|
||||||
|
require('nvim-autopairs').setup {
|
||||||
|
check_ts = true, -- use treesitter
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
event = "InsertEnter",
|
||||||
|
},
|
||||||
|
{ -- lualine(statusline)
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
dependencies = { 'kyazdani42/nvim-web-devicons', lazy = true }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'lervag/vimtex',
|
||||||
|
ft = { 'tex', 'latex' },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
-- 'kdheepak/JET.nvim',
|
||||||
|
'qwjyh/JET.nvim',
|
||||||
|
dir = '~/work/julia/JET.nvim',
|
||||||
|
dev = false, -- set true to use dir
|
||||||
|
lazy = true,
|
||||||
|
dependencies = {
|
||||||
|
'jose-elias-alvarez/null-ls.nvim',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("jet").setup {
|
||||||
|
timeout = 15000,
|
||||||
|
-- disable setup since null-ls doesn't support lspconfig
|
||||||
|
-- https://github.com/jose-elias-alvarez/null-ls.nvim/commit/656e5cb554fed1eb2f398f325511601fab988ce0
|
||||||
|
setup_lspconfig = false,
|
||||||
|
debug = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
-- build process(make environments and add JET.jl)
|
||||||
|
build = [[mkdir -p ~/.julia/environments/nvim-null-ls && julia --startup-file=no --project=~/.julia/environments/nvim-null-ls -e 'using Pkg; Pkg.add("JET")']],
|
||||||
|
-- ft = { 'julia', },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'hkupty/iron.nvim',
|
||||||
|
ft = { 'julia', 'python', 'ruby', },
|
||||||
|
},
|
||||||
|
{ 'lewis6991/gitsigns.nvim', },
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
{
|
||||||
|
'hrsh7th/nvim-cmp',
|
||||||
|
event = "InsertEnter",
|
||||||
|
dependencies = {
|
||||||
|
'hrsh7th/cmp-nvim-lsp', -- LSP
|
||||||
|
'L3MON4D3/LuaSnip', -- snippets
|
||||||
|
'saadparwaiz1/cmp_luasnip', -- nvim-cmp source for LuaSnip
|
||||||
|
'hrsh7th/cmp-buffer', -- nvim-cmp source for buffer words
|
||||||
|
'hrsh7th/cmp-path', -- nvim-cmp source for filesystem paths
|
||||||
|
'hrsh7th/cmp-cmdline', -- command line
|
||||||
|
'hrsh7th/cmp-omni', -- source for omnifunc
|
||||||
|
'hrsh7th/cmp-nvim-lua', -- nvim lua
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'kdheepak/cmp-latex-symbols', -- latex math
|
||||||
|
ft = { 'julia', },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
build = ":TSUpdate",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'folke/trouble.nvim',
|
||||||
|
-- config = function
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
-- Adding filetype 'satysfi'
|
||||||
|
vim.filetype.add {
|
||||||
|
extension = {
|
||||||
|
saty = 'satysfi',
|
||||||
|
satyh = 'satysfi',
|
||||||
|
satyg = 'satysfi',
|
||||||
|
},
|
||||||
|
pattern = {
|
||||||
|
['.*%.satyh%-%a+'] = 'satysfi',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- basic configurations
|
-- basic configurations
|
||||||
vim.o.number = true
|
vim.o.number = true
|
||||||
|
@ -19,8 +148,26 @@ highlight cursorcolumn ctermbg=235
|
||||||
]])
|
]])
|
||||||
vim.o.mouse = 'a'
|
vim.o.mouse = 'a'
|
||||||
vim.o.signcolumn = 'yes'
|
vim.o.signcolumn = 'yes'
|
||||||
vim.o.ignorecase = true
|
vim.o.ignorecase = true -- keep signcolumn on
|
||||||
vim.o.smartcase = true
|
vim.o.smartcase = true
|
||||||
|
vim.o.errorbells = true
|
||||||
|
-- vim.o.visualbell = false -- this is default
|
||||||
|
vim.opt.undofile = true -- Save undo history
|
||||||
|
vim.o.completeopt = 'menuone,noselect' -- for better completion experience
|
||||||
|
vim.o.termguicolors = true
|
||||||
|
|
||||||
|
-- color scheme
|
||||||
|
require('catppuccin').setup({
|
||||||
|
transparent_background = true,
|
||||||
|
})
|
||||||
|
vim.cmd.colorscheme "catppuccin"
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
-- some terminalmode settings
|
||||||
|
vim.keymap.set('t', '<C-w>h', '<C-\\><C-N><C-w>h', { noremap = true, desc = "Exit terminal-mode and move to left window."})
|
||||||
|
vim.keymap.set('t', '<C-w>j', '<C-\\><C-N><C-w>j', { noremap = true, desc = "Exit terminal-mode and move to down window."})
|
||||||
|
vim.keymap.set('t', '<C-w>k', '<C-\\><C-N><C-w>k', { noremap = true, desc = "Exit terminal-mode and move to up window."})
|
||||||
|
vim.keymap.set('t', '<C-w>l', '<C-\\><C-N><C-w>l', { noremap = true, desc = "Exit terminal-mode and move to right window."})
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- to use PowerShell on Windows
|
-- to use PowerShell on Windows
|
||||||
|
@ -28,130 +175,354 @@ vim.o.smartcase = true
|
||||||
-- vim script func returns 1/0, while lua evals false only if gets false or nil
|
-- vim script func returns 1/0, while lua evals false only if gets false or nil
|
||||||
-- so be sure to compare with 1/0
|
-- so be sure to compare with 1/0
|
||||||
if vim.fn.has('win32') == 1 then
|
if vim.fn.has('win32') == 1 then
|
||||||
if vim.fn.executable('pwsh') == 1 then
|
if vim.fn.executable('pwsh') == 1 then
|
||||||
vim.opt.shell = 'pwsh'
|
vim.opt.shell = 'pwsh'
|
||||||
else
|
else
|
||||||
vim.opt.shell = 'powershell'
|
vim.opt.shell = 'powershell'
|
||||||
end
|
end
|
||||||
vim.opt.shellcmdflag = '-NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;'
|
vim.opt.shellcmdflag = '-NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;'
|
||||||
vim.opt.shellredir = '-RedirectStandardOutput %s -NoNewWindow -Wait'
|
vim.opt.shellredir = '-RedirectStandardOutput %s -NoNewWindow -Wait'
|
||||||
vim.opt.shellpipe = '2>&1 | Out-File -Encoding UTF8 %s; exit $LastExitCode'
|
vim.opt.shellpipe = '2>&1 | Out-File -Encoding UTF8 %s; exit $LastExitCode'
|
||||||
vim.opt.shellquote = ''
|
vim.opt.shellquote = ''
|
||||||
vim.opt.shellxquote = ''
|
vim.opt.shellxquote = ''
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
-- comment setting for satysfi
|
||||||
|
local ft = require('Comment.ft')
|
||||||
|
ft.set('satysfi', '%%s')
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- Plugins
|
-- vimtex
|
||||||
require 'plugins'
|
vim.g.vimtex_view_method = 'general' -- which is installed on both win and linux
|
||||||
vim.cmd [[autocmd BufWritePost plugins.lua PackerCompile]]
|
|
||||||
|
|
||||||
|
|
||||||
-- LSP
|
|
||||||
-- https://zenn.dev/botamotch/articles/21073d78bc68bf
|
|
||||||
-- 1. LSP Sever management
|
|
||||||
--require('mason').setup()
|
|
||||||
--require('mason-lspconfig').setup_handlers({ function(server)
|
|
||||||
-- local opt = {
|
|
||||||
-- -- -- Function executed when the LSP server startup
|
|
||||||
-- -- on_attach = function(client, bufnr)
|
|
||||||
-- -- local opts = { noremap=true, silent=true }
|
|
||||||
-- -- vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
|
||||||
-- -- vim.cmd 'autocmd BufWritePre * lua vim.lsp.buf.formatting_sync(nil, 1000)'
|
|
||||||
-- -- end,
|
|
||||||
-- capabilities = require('cmp_nvim_lsp').update_capabilities(
|
|
||||||
-- vim.lsp.protocol.make_client_capabilities()
|
|
||||||
-- )
|
|
||||||
-- }
|
|
||||||
-- require('lspconfig')[server].setup(opt)
|
|
||||||
--end })
|
|
||||||
--
|
|
||||||
---- 2. build-in LSP function
|
|
||||||
---- keyboard shortcut
|
|
||||||
--vim.keymap.set('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
|
|
||||||
--vim.keymap.set('n', 'gf', '<cmd>lua vim.lsp.buf.formatting()<CR>')
|
|
||||||
--vim.keymap.set('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>')
|
|
||||||
--vim.keymap.set('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>')
|
|
||||||
--vim.keymap.set('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>')
|
|
||||||
--vim.keymap.set('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>')
|
|
||||||
--vim.keymap.set('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
|
|
||||||
--vim.keymap.set('n', 'gn', '<cmd>lua vim.lsp.buf.rename()<CR>')
|
|
||||||
--vim.keymap.set('n', 'ga', '<cmd>lua vim.lsp.buf.code_action()<CR>')
|
|
||||||
--vim.keymap.set('n', 'ge', '<cmd>lua vim.diagnostic.open_float()<CR>')
|
|
||||||
--vim.keymap.set('n', 'g]', '<cmd>lua vim.diagnostic.goto_next()<CR>')
|
|
||||||
--vim.keymap.set('n', 'g[', '<cmd>lua vim.diagnostic.goto_prev()<CR>')
|
|
||||||
---- LSP handlers
|
|
||||||
--vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
|
|
||||||
-- vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false }
|
|
||||||
--)
|
|
||||||
---- Reference highlight
|
|
||||||
--vim.cmd [[
|
|
||||||
--set updatetime=500
|
|
||||||
--highlight LspReferenceText cterm=underline ctermfg=1 ctermbg=8 gui=underline guifg=#A00000 guibg=#104040
|
|
||||||
--highlight LspReferenceRead cterm=underline ctermfg=1 ctermbg=8 gui=underline guifg=#A00000 guibg=#104040
|
|
||||||
--highlight LspReferenceWrite cterm=underline ctermfg=1 ctermbg=8 gui=underline guifg=#A00000 guibg=#104040
|
|
||||||
--augroup lsp_document_highlight
|
|
||||||
-- autocmd!
|
|
||||||
-- autocmd CursorHold,CursorHoldI * lua vim.lsp.buf.document_highlight()
|
|
||||||
-- autocmd CursorMoved,CursorMovedI * lua vim.lsp.buf.clear_references()
|
|
||||||
--augroup END
|
|
||||||
--]]
|
|
||||||
--
|
|
||||||
---- 3. completion (hrsh7th/nvim-cmp)
|
|
||||||
--local cmp = require("cmp")
|
|
||||||
--cmp.setup({
|
|
||||||
-- snippet = {
|
|
||||||
-- expand = function(args)
|
|
||||||
-- vim.fn["vsnip#anonymous"](args.body)
|
|
||||||
-- end,
|
|
||||||
-- },
|
|
||||||
-- sources = {
|
|
||||||
-- { name = "nvim_lsp" },
|
|
||||||
-- -- { name = "buffer" },
|
|
||||||
-- -- { name = "path" },
|
|
||||||
-- },
|
|
||||||
-- mapping = cmp.mapping.preset.insert({
|
|
||||||
-- ["<C-p>"] = cmp.mapping.select_prev_item(),
|
|
||||||
-- ["<C-n>"] = cmp.mapping.select_next_item(),
|
|
||||||
-- ['<C-l>'] = cmp.mapping.complete(),
|
|
||||||
-- ['<C-e>'] = cmp.mapping.abort(),
|
|
||||||
-- ["<CR>"] = cmp.mapping.confirm { select = true },
|
|
||||||
-- }),
|
|
||||||
-- experimental = {
|
|
||||||
-- ghost_text = true,
|
|
||||||
-- },
|
|
||||||
--})
|
|
||||||
---- cmp.setup.cmdline('/', {
|
|
||||||
---- mapping = cmp.mapping.preset.cmdline(),
|
|
||||||
---- sources = {
|
|
||||||
---- { name = 'buffer' }
|
|
||||||
---- }
|
|
||||||
---- })
|
|
||||||
---- cmp.setup.cmdline(":", {
|
|
||||||
---- mapping = cmp.mapping.preset.cmdline(),
|
|
||||||
---- sources = {
|
|
||||||
---- { name = "path" },
|
|
||||||
---- { name = "cmdline" },
|
|
||||||
---- },
|
|
||||||
---- })
|
|
||||||
|
|
||||||
-- satysfi language server
|
|
||||||
--require('lspconfig')['satysfi-ls'].setup{
|
|
||||||
-- autostart = true
|
|
||||||
--}
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- Ctrl + P to invoke fzf file search
|
-- iron (repl)
|
||||||
vim.api.nvim_set_keymap('n', '<c-P>',
|
local iron = require('iron.core')
|
||||||
"<cmd>lua require('fzf-lua').files()<CR>",
|
iron.setup {
|
||||||
{ noremap = true, silent = true })
|
config = {
|
||||||
|
scratch_repl = true, -- repl should be discarded
|
||||||
|
repl_definition = {
|
||||||
|
fish = {
|
||||||
|
command = { 'fish' },
|
||||||
|
},
|
||||||
|
julia = {
|
||||||
|
command = { 'julia', },
|
||||||
|
},
|
||||||
|
shell = {
|
||||||
|
command = { 'sh', },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
repl_open_cmd = require('iron.view').split.botright('30%'), -- repl view config
|
||||||
|
},
|
||||||
|
keymaps = {
|
||||||
|
send_motion = "<space>sc",
|
||||||
|
visual_send = "<space>sc",
|
||||||
|
send_file = "<space>sf",
|
||||||
|
send_line = "<space>sl",
|
||||||
|
send_mark = "<space>sm",
|
||||||
|
mark_motion = "<space>mc",
|
||||||
|
mark_visual = "<space>mc",
|
||||||
|
remove_mark = "<space>md",
|
||||||
|
cr = "<space>s<cr>",
|
||||||
|
interrupt = "<space>s<space>",
|
||||||
|
exit = "<space>sq",
|
||||||
|
clear = "<space>cl",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- keymap for iron repl
|
||||||
|
vim.keymap.set('n', '<C-@>', '<cmd>IronRepl<cr>')
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
-- gitsigns
|
||||||
|
require('gitsigns').setup {
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local gs = package.loaded.gitsigns
|
||||||
|
|
||||||
|
---custom mapping func
|
||||||
|
---@param mode string|string[]
|
||||||
|
---@param l string
|
||||||
|
---@param r any
|
||||||
|
---@param opts table?
|
||||||
|
local function map(mode, l, r, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.buffer = bufnr
|
||||||
|
vim.keymap.set(mode, l, r, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Navigation
|
||||||
|
map('n', ']c', function()
|
||||||
|
if vim.wo.diff then return ']c' end
|
||||||
|
vim.schedule(function() gs.next_hunk() end)
|
||||||
|
return '<Ignore>'
|
||||||
|
end, {expr=true})
|
||||||
|
map('n', '[c', function()
|
||||||
|
if vim.wo.diff then return '[c' end
|
||||||
|
vim.schedule(function() gs.prev_hunk() end)
|
||||||
|
return '<Ignore>'
|
||||||
|
end, {expr=true})
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- lualine
|
-- lualine
|
||||||
require('lualine_setup')
|
require('lualine_setup')
|
||||||
lualine = require('lualine')
|
|
||||||
lualine.setup({
|
-----------------------------------------------------------
|
||||||
options = { theme = 'iceberg_dark' }
|
-- telescope
|
||||||
|
vim.keymap.set('n', '<c-P>', function() require('telescope.builtin').find_files { sort_lastused = true } end) -- fd?
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
-- Treesitter
|
||||||
|
-- manually install parsers with `:TSInstall <language>`
|
||||||
|
|
||||||
|
-- satysfi (https://github.com/monaqa/tree-sitter-satysfi)
|
||||||
|
local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
|
||||||
|
parser_config.satysfi = {
|
||||||
|
install_info = {
|
||||||
|
url = "https://github.com/monaqa/tree-sitter-satysfi",
|
||||||
|
files = { "src/parser.c", "src/scanner.c" }
|
||||||
|
},
|
||||||
|
filetype = 'satysfi',
|
||||||
|
}
|
||||||
|
|
||||||
|
-- setup
|
||||||
|
require'nvim-treesitter.configs'.setup {
|
||||||
|
ensure_installed = {
|
||||||
|
'satysfi',
|
||||||
|
},
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
init_selection = "gnn",
|
||||||
|
node_incremental = "grn",
|
||||||
|
scope_incremental = "grc",
|
||||||
|
node_decremental = "grm",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true,
|
||||||
|
keymaps = {
|
||||||
|
['aa'] = '@parameter.outer',
|
||||||
|
['ia'] = '@parameter.inner',
|
||||||
|
['af'] = '@function.outer',
|
||||||
|
['if'] = '@function.inner',
|
||||||
|
['ac'] = '@class.outer',
|
||||||
|
['ic'] = '@class.inner',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
move = {
|
||||||
|
enable = true,
|
||||||
|
set_jumps = true,
|
||||||
|
goto_next_start = {
|
||||||
|
[']m'] = '@function.outer',
|
||||||
|
[']]'] = '@class.outer',
|
||||||
|
},
|
||||||
|
goto_next_end = {
|
||||||
|
[']M'] = '@function.outer',
|
||||||
|
[']['] = '@class.outer',
|
||||||
|
},
|
||||||
|
goto_previous_start = {
|
||||||
|
['[m'] = '@function.outer',
|
||||||
|
['[['] = '@class.outer',
|
||||||
|
},
|
||||||
|
goto_previous_end = {
|
||||||
|
['[M'] = '@function.outer',
|
||||||
|
['[]'] = '@class.outer',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
swap = {
|
||||||
|
enable = true,
|
||||||
|
swap_next = {
|
||||||
|
['<space>a'] = '@parameter.inner',
|
||||||
|
},
|
||||||
|
swap_previous = {
|
||||||
|
['<space>A'] = '@parameter.inner',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
-- LSP config
|
||||||
|
|
||||||
|
local lspconfig = require 'lspconfig'
|
||||||
|
|
||||||
|
-- Mapping for language server
|
||||||
|
-- See `:help vim.diagnostic.* for documentation on any of the below functions
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
||||||
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
|
||||||
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
|
||||||
|
vim.keymap.set('n', '<space>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 <c-x><c-o>
|
||||||
|
--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', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>wl', function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
||||||
|
vim.keymap.set('n', 'grf', vim.lsp.buf.references, bufopts)
|
||||||
|
vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- cmp_nvim_lsp supports additional LSP completion capabilities
|
||||||
|
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Lua
|
||||||
|
lspconfig.lua_ls.setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
runtime = {
|
||||||
|
version = 'LuaJIT',
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
globals = {'vim'},
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
|
},
|
||||||
|
telemetry = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- Julia
|
||||||
|
lspconfig.julials.setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
}
|
||||||
|
-- SATySFi
|
||||||
|
lspconfig.satysfi_ls.setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
autostart = true,
|
||||||
|
}
|
||||||
|
-- bash
|
||||||
|
lspconfig.bashls.setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
}
|
||||||
|
-- python
|
||||||
|
lspconfig.pyright.setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
}
|
||||||
|
-- rust
|
||||||
|
lspconfig.rust_analyzer.setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
}
|
||||||
|
-- tex
|
||||||
|
lspconfig.texlab.setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
}
|
||||||
|
-- -- jetls
|
||||||
|
-- lspconfig.jetls.setup {}
|
||||||
|
|
||||||
|
-- nvim-cmp setup
|
||||||
|
local cmp = require 'cmp'
|
||||||
|
local luasnip = require 'luasnip'
|
||||||
|
luasnip.config.setup {}
|
||||||
|
|
||||||
|
cmp.setup {
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
['<C-u>'] = cmp.mapping.scroll_docs(-4), -- Up
|
||||||
|
['<C-d>'] = cmp.mapping.scroll_docs(4), -- Down
|
||||||
|
['<C-Space>'] = cmp.mapping.complete(),
|
||||||
|
['<CR>'] = cmp.mapping.confirm {
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = true,
|
||||||
|
},
|
||||||
|
['<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 = {
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'buffer' },
|
||||||
|
{
|
||||||
|
name = 'latex_symbols',
|
||||||
|
option = {
|
||||||
|
strategy = 0, -- mixed (show the comand and insert the symbol)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ name = 'path' },
|
||||||
|
{ name = 'nvim_lua' },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- cmdline completions
|
||||||
|
-- `/` cmdline setup.
|
||||||
|
cmp.setup.cmdline({ '/', '?' }, {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = {
|
||||||
|
{ name = 'buffer' }
|
||||||
|
}
|
||||||
})
|
})
|
||||||
lualine.setup()
|
-- ':'
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'path' }
|
||||||
|
}, {
|
||||||
|
{
|
||||||
|
name = 'cmdline',
|
||||||
|
option = {
|
||||||
|
ignore_cmds = { 'Man', '!' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
-- local cmd = {
|
||||||
|
-- 'julia',
|
||||||
|
-- '--startup-file=no',
|
||||||
|
-- '--history-file=no',
|
||||||
|
-- '-e',
|
||||||
|
-- [[
|
||||||
|
-- # Load JETLS.jl: attempt to load from ~/.julia/environments/nvim-lspconfig
|
||||||
|
-- # with the regular load path as a fallback
|
||||||
|
-- jet_install_path = joinpath(
|
||||||
|
-- get(DEPOT_PATH, 1, joinpath(homedir(), ".julia")),
|
||||||
|
-- "environments", "nvim-lspconfig"
|
||||||
|
-- )
|
||||||
|
-- pushfirst!(LOAD_PATH, jet_install_path)
|
||||||
|
-- using JETLS
|
||||||
|
-- popfirst!(LOAD_PATH)
|
||||||
|
-- depot_path = get(ENV, "JULIA_DEPOT_PATH", "")
|
||||||
|
-- project_path = let
|
||||||
|
-- dirname(something(
|
||||||
|
-- ## 1. Finds an explicitly set project (JULIA_PROJECT)
|
||||||
|
-- Base.load_path_expand((
|
||||||
|
-- p = get(ENV, "JULIA_PROJECT", nothing);
|
||||||
|
-- p === nothing ? nothing : isempty(p) ? nothing : p
|
||||||
|
-- )),
|
||||||
|
-- ## 2. Look for a Project.toml file in the current working directory,
|
||||||
|
-- ## or parent directories, with $HOME as an upper boundary
|
||||||
|
-- Base.current_project(),
|
||||||
|
-- ## 3. First entry in the load path
|
||||||
|
-- get(Base.load_path(), 1, nothing),
|
||||||
|
-- ## 4. Fallback to default global environment,
|
||||||
|
-- ## this is more or less unreachable
|
||||||
|
-- Base.load_path_expand("@v#.#"),
|
||||||
|
-- ))
|
||||||
|
-- end
|
||||||
|
-- @info "Running JETLS language server" VERSION pwd() project_path
|
||||||
|
-- @info "not running yet"
|
||||||
|
-- JETLS.runserver(stdin, stdout)
|
||||||
|
-- ]],
|
||||||
|
-- }
|
||||||
|
local cmd = {
|
||||||
|
'julia',
|
||||||
|
'--startup-file=no',
|
||||||
|
'--history-file=no',
|
||||||
|
'-e',
|
||||||
|
[[
|
||||||
|
println("===STARTING JETLS===")
|
||||||
|
using JETLS
|
||||||
|
JETLS.runserver(stdin, stdout)
|
||||||
|
@info "Running JETLS" VERSION pwd() project_path
|
||||||
|
@info "============================"
|
||||||
|
]],
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
default_config = {
|
||||||
|
cmd = cmd,
|
||||||
|
filetypes = { 'julia' },
|
||||||
|
root_dir = function(fname)
|
||||||
|
local util = require 'lspconfig.util'
|
||||||
|
return util.root_pattern 'Project.toml' (fname) or util.find_git_ancestor(fname) or
|
||||||
|
util.path.dirname(fname)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
docs = {
|
||||||
|
description = [[
|
||||||
|
TBW
|
||||||
|
]],
|
||||||
|
},
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
# https://zenn.dev/monaqa/articles/2021-12-10-satysfi-language-server
|
-- https://zenn.dev/monaqa/articles/2021-12-10-satysfi-language-server
|
||||||
local util = require 'lspconfig.util'
|
local util = require 'lspconfig.util'
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -18,3 +18,4 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
vim.cmd [[packadd packer.nvim]]
|
|
||||||
|
|
||||||
return require('packer').startup(function(use)
|
|
||||||
use 'wbthomason/packer.nvim'
|
|
||||||
|
|
||||||
-- fzf
|
|
||||||
use { 'ibhagwan/fzf-lua',
|
|
||||||
-- optional icon
|
|
||||||
--requires = { 'kyazdan142/nvim-web/devicons' } -- not found
|
|
||||||
}
|
|
||||||
|
|
||||||
-- lualine(statusline)
|
|
||||||
use {
|
|
||||||
'nvim-lualine/lualine.nvim',
|
|
||||||
requires = { 'kyazdani42/nvim-web-devicons', opt = true }
|
|
||||||
}
|
|
||||||
|
|
||||||
-- LSP
|
|
||||||
use 'neovim/nvim-lspconfig'
|
|
||||||
use "williamboman/mason.nvim"
|
|
||||||
use "williamboman/mason-lspconfig.nvim"
|
|
||||||
use "hrsh7th/nvim-cmp"
|
|
||||||
use "hrsh7th/cmp-nvim-lsp"
|
|
||||||
use "hrsh7th/vim-vsnip"
|
|
||||||
|
|
||||||
-- Julia
|
|
||||||
use "JuliaEditorSupport/julia-vim"
|
|
||||||
|
|
||||||
end)
|
|
|
@ -31,11 +31,27 @@ set -g base-index 1
|
||||||
# start pane index at 1
|
# start pane index at 1
|
||||||
setw -g pane-base-index 1
|
setw -g pane-base-index 1
|
||||||
|
|
||||||
|
set-option -g pane-border-indicators both
|
||||||
|
set-option -g pane-border-lines heavy
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
# status line configs
|
# status line configs
|
||||||
|
set-option -g monitor-bell on
|
||||||
|
set-option -g status-interval 1
|
||||||
|
set-option -g status-left '#[bg=colour156 bold]#{?client_prefix,#[reverse] P #[noreverse],#{?copy_cursor_x,#[bg=colour216] C , P }}#[bg=default nobold][#S] ' # indicates prefix and copy status
|
||||||
|
set-option -g status-left-length 15
|
||||||
set-option -g status-right "#[bg=colour156] #T | %y/%m/%d %H:%M:%S"
|
set-option -g status-right "#[bg=colour156] #T | %y/%m/%d %H:%M:%S"
|
||||||
|
set-option -g status-right-length 90
|
||||||
#set-window-option -g window-status-format "#[bg=green]#I:#W-" # default
|
#set-window-option -g window-status-format "#[bg=green]#I:#W-" # default
|
||||||
set-window-option -g window-status-current-format "#[bg=colour156]#I:#W*"
|
set-window-option -g window-status-current-format "#[bg=colour156]#I:#W*"
|
||||||
|
|
||||||
|
# -----------------------------------------------
|
||||||
|
# true colour
|
||||||
|
# alacritty: alacritty
|
||||||
|
# wezterm xfce-terminal konsole gnome-terminal: xterm-256color
|
||||||
|
set -ga terminal-overrides ",alacritty:RGB,xterm-256color:RGB"
|
||||||
|
|
||||||
|
set-option -g focus-events on
|
||||||
set -s escape-time 100
|
set -s escape-time 100
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue