M asdf/.shrc.d/asdf.sh => asdf/.shrc.d/asdf.sh +4 -0
@@ 6,4 6,8 @@ if [ -d ~/.asdf ]; then
if [[ $? -eq 0 ]]; then
export PATH="${go_home}/packages/bin:${PATH}"
fi
+
+ if [ -x ~/.asdf/plugins/dotnet-core/set-dotnet-home.bash ]; then
+ source ~/.asdf/plugins/dotnet-core/set-dotnet-home.bash
+ fi
fi
M sh/.alias => sh/.alias +5 -1
@@ 1,3 1,7 @@
#!/bin/sh
-# TODO: aliases go here
+# Aliases go here
+
+# Use these if Neovim is installed as an AppImage.
+#alias nvim=/opt/nvim.appimage
+#alias neovim=/opt/nvim.appimage
M vim/.config/nvim/lua/lsp.lua => vim/.config/nvim/lua/lsp.lua +18 -21
@@ 1,7 1,4 @@
-local ok, lspconfig = pcall(require, 'lspconfig')
-if not ok then
- return
-end
+local lspconfig = require('lspconfig')
-- Mappings.
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
@@ 46,16 43,16 @@ local lsp_flags = {
local mason_dir = vim.fn.stdpath('data')..'/mason'
-lspconfig['rust_analyzer'].setup {
- on_attach = on_attach,
- flags = lsp_flags,
- cmd = {mason_dir..'/bin/rust-analyzer'},
- -- Server-specific settings...
- settings = {
- ["rust-analyzer"] = {}
- }
-}
-
+--lspconfig['rust_analyzer'].setup {
+-- on_attach = on_attach,
+-- flags = lsp_flags,
+-- cmd = {mason_dir..'/rust/rust-analyzer'},
+-- -- Server-specific settings...
+-- settings = {
+-- ["rust-analyzer"] = {}
+-- }
+--}
+--
--lspconfig['sumneko_lua'].setup {
-- on_attach = on_attach,
-- flags = lsp_flags,
@@ 83,17 80,17 @@ lspconfig['gopls'].setup {
--},
}
-lspconfig['solargraph'].setup {
+lspconfig['jdtls'].setup{
on_attach = on_attach,
flags = lsp_flags,
- cmd = {'/home/damien/.local/share/gem/ruby/3.1.0/bin/solargraph.ruby3.1', 'stdio'},
+ cmd = {'java-language-server'},
}
-lspconfig['zls'].setup {
- on_attach = on_attach,
- flags = lsp_flags,
- cmd = {mason_dir..'/bin/zls'},
-}
+--lspconfig['zls'].setup {
+-- on_attach = on_attach,
+-- flags = lsp_flags,
+-- cmd = {mason_dir..'/zls/package/zls'},
+--}
-- Make diagnostics a little bit less aggressive. Use \ee to see the error
-- under the cursor, or \ew to open a quickfix window with all of them.
M vim/.config/nvim/lua/plugins.lua => vim/.config/nvim/lua/plugins.lua +24 -14
@@ 5,11 5,12 @@ if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
vim.cmd [[packadd packer.nvim]]
end
+-- Automatically compile when this file is updated.
vim.cmd([[
- augroup packer_user_config
- autocmd!
- autocmd BufWritePost plugins.lua source <afile> | PackerCompile
- augroup end
+ augroup packer_user_config
+ autocmd!
+ autocmd BufWritePost plugins.lua source <afile> | PackerCompile
+ augroup end
]])
return require('packer').startup(function(use)
@@ 17,19 18,18 @@ return require('packer').startup(function(use)
use 'stevearc/dressing.nvim' -- Improve the select UI
use 'jlanzarotta/bufexplorer' -- Buffer explorer
use 'benmills/vimux' -- Tmux integration
+ use 'tpope/vim-fugitive' -- Git
- -- Configure/install LSP servers
- use 'williamboman/mason.nvim'
- use {
- 'williamboman/mason-lspconfig.nvim',
- after = 'mason.nvim'
- }
+ -- Mason, for installing various things
use {
'neovim/nvim-lspconfig',
- after = 'mason-lspconfig.nvim',
+ requires = {
+ { 'williamboman/mason.nvim' },
+ { 'williamboman/mason-lspconfig.nvim' },
+ },
config = function()
- require('mason').setup{}
- require('mason-lspconfig').setup{}
+ require('mason').setup()
+ require('mason-lspconfig').setup()
require('lsp')
end,
}
@@ 49,7 49,8 @@ return require('packer').startup(function(use)
-- Testing
use {
'vim-test/vim-test',
- config = function()
+ config = function()
+ -- TODO: set the strategy
vim.cmd [[let test#strategy = 'vimux']]
end,
}
@@ 63,6 64,15 @@ return require('packer').startup(function(use)
end,
}
+ -- Debug Console
+ use {
+ 'dradtke/debug-console',
+ rtp = 'misc/nvim',
+ config = function(name, plugin)
+ require('debug-console').setup(plugin.path, {})
+ end,
+ }
+
if packer_bootstrap then
require('packer').sync()
end
A vim/bin/csharp-language-server => vim/bin/csharp-language-server +49 -0
@@ 0,0 1,49 @@
+#! /bin/bash
+
+set -o errexit
+set -o nounset
+
+version="v0.19.2"
+install_only=false
+
+usage() {
+ echo "usage: csharp-language-server [options]
+
+ --install Install the selected language server, but don't run it"
+ exit 0
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --install) install_only=true; shift;;
+ --help) usage;;
+ *) usage;;
+ esac
+done
+
+cache_dir="${XDG_CACHE_HOME:-${HOME}/.cache}"
+language_server_home="${cache_dir}/csharp-language-server"
+
+{
+ if [[ "${install_only}" = true ]]; then
+ rm -rf "${language_server_home}"
+ fi
+
+ if [ ! -d "${language_server_home}" ]; then
+ echo 'Installing csharp-language-server core on first use... (will take a moment)'
+ mkdir -p "$(dirname "${language_server_home}")"
+ git clone --depth=1 --single-branch --branch "${version}" \
+ https://github.com/OmniSharp/csharp-language-server-protocol "${language_server_home}"
+ pushd "${language_server_home}"
+ ./build.sh
+ popd
+ fi
+
+ # TODO: debug adapter protocol
+
+ if [[ "${install_only}" = true ]]; then
+ exit 0
+ fi
+} 1>&2
+
+echo "learn to run it"
M vim/bin/java-language-server => vim/bin/java-language-server +33 -63
@@ 3,9 3,7 @@
set -o errexit
set -o nounset
-# If the build fails, switching eclipse_core_version to "master" may help.
-# See https://github.com/eclipse/eclipse.jdt.ls/issues/1370
-jdtls_version="v0.69.0"
+jdtls_version="1.9.0"
java_debug_version="0.30.1"
java_test_version="0.29.0"
@@ 40,58 38,41 @@ language_server_debug="${language_server_home}/extensions/java-debug"
language_server_test="${language_server_home}/extensions/java-test"
{
- if command -v java >/dev/null; then
- java=java
- elif [[ -n "${JAVA_HOME}" ]] && [[ -x "${JAVA_HOME}/bin/java" ]]; then
- java="${JAVA_HOME}/bin/java"
- else
- echo "[java-language-server] java not found"
- exit 1
- fi
-
- java_version="$("${java}" -version 2>&1 | grep ' version ' | awk '{print $3}' | sed 's/"//g')"
- java_major_version="$(echo "${java_version}" | awk -F. '{print $1}')"
- java_minor_version="$(echo "${java_version}" | awk -F. '{print $2}')"
-
- # Require Java 1.11
- if [[ "${java_major_version}" -eq 1 ]] && [[ "${java_minor_version}" -lt 11 ]]; then
- echo "[java-language-server] unsupported java version: ${java_version}"
- exit 2
- fi
-
if [[ "${install_only}" = true ]]; then
rm -rf "${language_server_home}"
fi
if [ ! -d "${language_server_core}" ]; then
- echo 'Installing java-language-server core on first use... (will take a moment)'
- mkdir -p "$(dirname "${language_server_home}")"
- git clone --depth=1 --single-branch --branch "${jdtls_version}" \
- https://github.com/eclipse/eclipse.jdt.ls.git "${language_server_core}"
- pushd "${language_server_core}"
- ./mvnw clean package
- popd
- fi
-
- if [[ ! -d "${language_server_debug}" ]]; then
- echo 'Installing java-debug extension on first use... (will take a moment)'
- mkdir -p "$(dirname "${language_server_debug}")"
- git clone --depth=1 --single-branch --branch "${java_debug_version}" \
- https://github.com/microsoft/java-debug.git "${language_server_debug}"
- pushd "${language_server_debug}"
- ./mvnw clean package \
- && ln -s "${language_server_debug}/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-${java_debug_version}.jar" ../debug.jar
- popd
+ echo 'Downloading java-language-server core...'
+ latest="$(curl --silent "https://download.eclipse.org/jdtls/milestones/${jdtls_version}/latest.txt")"
+ mkdir -p "${language_server_core}"
+ pushd "${language_server_core}" 2>/dev/null
+ curl --silent "https://download.eclipse.org/jdtls/milestones/${jdtls_version}/${latest}" | tar xz
+ # TODO: use the .sha256 checksum
+ popd 2>/dev/null
fi
- if [[ ! -d "${language_server_test}" ]]; then
- echo 'Installing java-test extension on first use... (will take a moment)'
- mkdir -p "${language_server_test}"
- pushd "${language_server_test}"
- wget -O extension.zip "https://vscjava.gallery.vsassets.io/_apis/public/gallery/publisher/vscjava/extension/vscode-java-test/${java_test_version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
- unzip extension.zip
- popd
- fi
+ # TODO: install java-debug and java-test
+
+ #if [[ ! -d "${language_server_debug}" ]]; then
+ # echo 'Installing java-debug extension on first use... (will take a moment)'
+ # mkdir -p "$(dirname "${language_server_debug}")"
+ # git clone --depth=1 --single-branch --branch "${java_debug_version}" \
+ # https://github.com/microsoft/java-debug.git "${language_server_debug}"
+ # pushd "${language_server_debug}"
+ # ./mvnw clean package \
+ # && ln -s "${language_server_debug}/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-${java_debug_version}.jar" ../debug.jar
+ # popd
+ #fi
+
+ #if [[ ! -d "${language_server_test}" ]]; then
+ # echo 'Installing java-test extension on first use... (will take a moment)'
+ # mkdir -p "${language_server_test}"
+ # pushd "${language_server_test}"
+ # wget -O extension.zip "https://vscjava.gallery.vsassets.io/_apis/public/gallery/publisher/vscjava/extension/vscode-java-test/${java_test_version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
+ # unzip extension.zip
+ # popd
+ #fi
if [[ "${install_only}" = true ]]; then
exit 0
@@ 99,7 80,6 @@ language_server_test="${language_server_home}/extensions/java-test"
echo "[java-language-server] debug mode: ${debug}"
echo "[java-language-server] max heap size: ${max_heap_size}"
- echo "[java-language-server] using java: ${java}"
workspace="$(mktemp --directory --tmpdir jdt.ls-workspace-XXXXXXXXXX)"
echo "[java-language-server] using workspace: ${workspace}"
@@ 115,17 95,7 @@ language_server_test="${language_server_home}/extensions/java-test"
# outputted to stdout which clients use as input/responses to requests
# See https://github.com/eclipse/eclipse.jdt.ls/wiki/Running-the-JAVA-LS-server-from-the-command-line
-"${java}" \
- -Declipse.application=org.eclipse.jdt.ls.core.id1 \
- -Dosgi.bundles.defaultStartLevel=4 \
- -Declipse.product=org.eclipse.jdt.ls.core.product \
- -Dlog.level=ALL \
- -Djdt.ls.debug="${debug}" \
- -noverify \
- "-Xmx${max_heap_size}" \
- -jar ${language_server_core}/org.eclipse.jdt.ls.product/target/repository/plugins/org.eclipse.equinox.launcher_*.jar \
- -configuration "${language_server_core}/org.eclipse.jdt.ls.product/target/repository/config_linux" \
- -data "${workspace}" \
- --add-modules=ALL-SYSTEM \
- --add-opens java.base/java.util=ALL-UNNAMED \
- --add-opens java.base/java.lang=ALL-UNNAMED
+"${language_server_core}"/bin/jdtls \
+ --jvm-arg=-Djdt.ls.debug="${debug}" \
+ -configuration ~/.cache/jdtls \
+ -data "${workspace}"
A vim/bin/xml-language-server => vim/bin/xml-language-server +48 -0
@@ 0,0 1,48 @@
+#! /bin/bash
+
+set -o errexit
+set -o nounset
+
+# The latest version can be found here: https://repo.eclipse.org/content/repositories/lemminx-releases/org/eclipse/lemminx/org.eclipse.lemminx/maven-metadata.xml
+version="0.17.1"
+install_only=false
+
+usage() {
+ echo "usage: xml-language-server [options]
+
+ --install Install the selected language server, but don't run it"
+ exit 0
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --install) install_only=true; shift;;
+ --help) usage;;
+ *) usage;;
+ esac
+done
+
+cache_dir="${XDG_CACHE_HOME:-${HOME}/.cache}"
+language_server_home="${cache_dir}/xml-language-server"
+
+{
+ if [[ "${install_only}" = true ]]; then
+ rm -rf "${language_server_home}"
+ fi
+
+ if [ ! -d "${language_server_home}" ]; then
+ echo "Installing xml-language-server ${version} on first use... (will take a moment)"
+ mkdir -p "${language_server_home}"
+ pushd "${language_server_home}"
+ wget -O org.eclipse.lemminx-uber.jar "https://repo.eclipse.org/content/repositories/lemminx-releases/org/eclipse/lemminx/org.eclipse.lemminx/${version}/org.eclipse.lemminx-${version}-uber.jar"
+ popd
+ fi
+
+ # TODO: debug adapter protocol
+
+ if [[ "${install_only}" = true ]]; then
+ exit 0
+ fi
+} 1>&2
+
+java -jar "${language_server_home}/org.eclipse.lemminx-uber.jar"