diff --git a/bin/install.sh b/bin/install.sh index 94bd07a..3b2c009 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -25,6 +25,7 @@ mkdir -p ~/.config/nvim/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 diff --git a/dotfiles/neovim/init.lua b/dotfiles/neovim/init.lua index 636630f..b66ec39 100644 --- a/dotfiles/neovim/init.lua +++ b/dotfiles/neovim/init.lua @@ -50,6 +50,28 @@ require('lazy').setup({ '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', }, + }, { 'lewis6991/gitsigns.nvim', }, 'neovim/nvim-lspconfig', { @@ -378,6 +400,8 @@ lspconfig.texlab.setup { on_attach = on_attach, capabilities = capabilities, } +-- -- jetls +-- lspconfig.jetls.setup {} -- nvim-cmp setup local cmp = require 'cmp' 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..6f6f599 --- /dev/null +++ b/dotfiles/neovim/lua/lspconfig/server_configurations/jetls.lua @@ -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 + ]], + }, +}