~damien/dotfiles

08ed7063e461bedc538ede044e46a8dba1312182 — Damien Radtke 6 months ago 32d33fa
Various random updates
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"