summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--README.md13
-rwxr-xr-xinstall25
-rw-r--r--nvim/init.lua2
-rw-r--r--nvim/lua/config/lazy.lua47
-rw-r--r--nvim/lua/plugins/R.lua43
-rw-r--r--nvim/lua/plugins/airline.lua15
-rw-r--r--nvim/lua/plugins/misc.lua44
-rw-r--r--nvim/lua/plugins/treesitter.lua10
9 files changed, 176 insertions, 24 deletions
diff --git a/.gitignore b/.gitignore
index e87396e..63ef75d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ bak
VimCom
colorout
test.R
+nvim/lazy-lock.json
diff --git a/README.md b/README.md
index 31724de..80ad034 100644
--- a/README.md
+++ b/README.md
@@ -8,14 +8,17 @@ cd dotfiles
make
```
-This will call the [install](install) script from this repository, which links
+The [install](install) script from this repository links
each configuration file from the dotfiles directory to a dotfile in the users
home directory.
-Also, it links vim configuration files to the respective
-nvim configuration files, installs the official git prompt,
-installs scripts from the bin directory into the users
-bin directory, and finally installs the
+If you have previously managed your vim plugins as in the former version of
+my dotfiles, i.e. using a link from the `.vim` directory to `.config/nvim`,
+you need to remove that link before running `make`, as a new link from
+`dotfiles/nvim` to `.config/nvim` will be created.
+
+The install script also installs scripts from the bin directory into the users
+`.local/bin` directory, and finally installs the
[vim-plug](https://github.com/junegunn/vim-plug) plugin manager from github if
not already present at .vim/autoload. To install the plugins, open vim and type
diff --git a/install b/install
index fe5344e..bf69ac8 100755
--- a/install
+++ b/install
@@ -6,35 +6,22 @@ cd $(dirname $BASH_SOURCE)
BASE=$(pwd)
# dotfiles to install
-for dotfile in bashrc vimrc gitconfig gitignore Rprofile tmux.conf reportbugrc zshrc p10k.zsh; do
+for dotfile in bashrc gitconfig gitignore Rprofile reportbugrc vimrc zshrc p10k.zsh; do
mkdir -pv bak
[ -e ~/.$dotfile ] && mv -v ~/.$dotfile bak/.$dotfile
ln -sfv $BASE/$dotfile ~/.$dotfile
done
# nvim config
-if [ ! -e ~/.config/nvim ]; then
- ln -sfv ~/.vim ~/.config/nvim
-fi
-if [ ! -e ~/.config/nvim/init.vim ]; then
- ln -sfv ~/.vimrc ~/.config/nvim/init.vim
+if [ ! -e ~/.config ]; then
+ mkdir -pv ~/.config
fi
-
-
-# git-prompt
-if [ ! -e ~/.git-prompt.sh ]; then
- curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -o ~/.git-prompt.sh
+if [ ! -e ~/.config/nvim ]; then
+ ln -sfv $BASE/nvim ~/.config/nvim
fi
# scripts
-mkdir -pv ~/bin
+mkdir -pv ~/.local/bin
for bin in $BASE/bin/*; do
ln -svf $bin ~/.local/bin
done
-
-# install vim-plug
-if [ ! -e ~/.vim/autoload/plug.vim ]; then
- echo Installing plug.vim from https://github.com/junegunn/vim-plug to ~/.vim/autoload/
- curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
- https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
-fi
diff --git a/nvim/init.lua b/nvim/init.lua
new file mode 100644
index 0000000..551ec67
--- /dev/null
+++ b/nvim/init.lua
@@ -0,0 +1,2 @@
+require("config.lazy")
+
diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua
new file mode 100644
index 0000000..a4c6f2a
--- /dev/null
+++ b/nvim/lua/config/lazy.lua
@@ -0,0 +1,47 @@
+-- Bootstrap lazy.nvim
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+end
+vim.opt.rtp:prepend(lazypath)
+
+-- Make sure to setup `mapleader` and `maplocalleader` before
+-- loading lazy.nvim so that mappings are correct.
+-- This is also a good place to setup other settings (vim.opt)
+vim.g.mapleader = "\\"
+vim.g.maplocalleader = ","
+
+-- Create some keymaps for moving between vim windows without <C-w>, as it
+-- closes the browser tab if vim is run via a browser.
+vim.api.nvim_set_keymap('n', '<C-h>', '<C-w>h', { noremap = true, silent = true })
+vim.api.nvim_set_keymap('n', '<C-j>', '<C-w>j', { noremap = true, silent = true })
+vim.api.nvim_set_keymap('n', '<C-k>', '<C-w>k', { noremap = true, silent = true })
+vim.api.nvim_set_keymap('n', '<C-l>', '<C-w>l', { noremap = true, silent = true })
+
+--
+vim.opt.ts = 2
+vim.opt.sw = 2
+vim.opt.expandtab = true
+
+-- Setup lazy.nvim
+require("lazy").setup({
+ spec = {
+ -- import your plugins
+ { import = "plugins" },
+ },
+ -- Configure any other settings here. See the documentation for more details.
+ -- colorscheme that will be used when installing plugins.
+ install = { colorscheme = { "habamax" } },
+ -- automatically check for plugin updates
+ checker = { enabled = true },
+})
diff --git a/nvim/lua/plugins/R.lua b/nvim/lua/plugins/R.lua
new file mode 100644
index 0000000..1188a26
--- /dev/null
+++ b/nvim/lua/plugins/R.lua
@@ -0,0 +1,43 @@
+-- Adapted from the R.nvim README.md file on github
+return {
+ "R-nvim/R.nvim",
+ -- Only required if you also set defaults.lazy = true
+ lazy = false,
+ -- R.nvim is still young and we may make some breaking changes from time
+ -- to time. For now we recommend pinning to the latest minor version
+ -- like so:
+ version = "~0.1.0",
+ config = function()
+ -- Create a table with the options to be passed to setup()
+ ---@type RConfigUserOpts
+ local opts = {
+ hook = {
+ on_filetype = function()
+ vim.api.nvim_buf_set_keymap(0, "n", "<Enter>", "<Plug>RDSendLine", {})
+ vim.api.nvim_buf_set_keymap(0, "n", "<C-h>", "<C-w>w", {})
+ vim.api.nvim_buf_set_keymap(0, "v", "<Enter>", "<Plug>RSendSelection", {})
+ end
+ },
+ R_args = {"--quiet", "--no-save"},
+ min_editor_width = 72,
+ rconsole_width = 78,
+ objbr_mappings = { -- Object browser keymap
+ c = 'class', -- Call R functions
+ ['<localleader>gg'] = 'head({object}, n = 15)', -- Use {object} notation to write arbitrary R code.
+ v = function()
+ -- Run lua functions
+ require('r.browser').toggle_view()
+ end
+ },
+ disable_cmds = {
+ "RClearConsole",
+ "RCustomStart",
+ "RSPlot",
+ "RSaveClose",
+ },
+ }
+ opts.auto_start = "on startup"
+ opts.objbr_auto_start = true
+ require("r").setup(opts)
+ end,
+}
diff --git a/nvim/lua/plugins/airline.lua b/nvim/lua/plugins/airline.lua
new file mode 100644
index 0000000..a52e9be
--- /dev/null
+++ b/nvim/lua/plugins/airline.lua
@@ -0,0 +1,15 @@
+return {
+ -- airline
+ { "vim-airline/vim-airline",
+ init = function()
+ vim.g.airline_powerline_fonts = 1
+ vim.g["airline#extensions#tabline#enabled"] = 1
+ vim.g["airline#extensions#branch#enabled"] = 1
+ end,
+ },
+ { "vim-airline/vim-airline-themes",
+ init = function()
+ vim.g.airline_theme = 'wombat'
+ end,
+ }
+}
diff --git a/nvim/lua/plugins/misc.lua b/nvim/lua/plugins/misc.lua
new file mode 100644
index 0000000..7292e3f
--- /dev/null
+++ b/nvim/lua/plugins/misc.lua
@@ -0,0 +1,44 @@
+return {
+
+ -- pandoc
+ { "vim-pandoc/vim-pandoc" },
+ { "vim-pandoc/vim-pandoc-syntax" },
+
+ -- kwbdi
+ --[[ The following plugin gives me <Leader>bd for closing a buffer while keeping
+ the window open, for example when editing several R scripts with
+ the R interpreter running in a separate vim window ]]
+ { "seb-mueller/kwbdi.vim" },
+
+ -- Version control
+ { "tpope/vim-fugitive" },
+ { "airblade/vim-gitgutter" },
+ { "samoshkin/vim-mergetool",
+ init = function()
+ vim.g.mergetool_layout = 'mr'
+ vim.g.mergetool_prefer_revision = 'local'
+ end,
+ },
+
+ -- Show an manage marks
+ { "kshenoy/vim-signature" },
+
+ -- Wayland clipboard
+ { "jasonccox/vim-wayland-clipboard" },
+
+ -- vimcmdline
+ { "jalvesaq/vimcmdline",
+ init = function()
+ vim.b.cmdline_map_start = '<LocalLeader>s'
+ end,
+ },
+
+ -- fzf
+ { "junegunn/fzf" },
+
+ -- Look up docs in vim scripts with 'K'
+ { "tpope/vim-scriptease" },
+
+ -- Delete trailing whitespace
+ { "vim-scripts/DeleteTrailingWhitespace" }
+}
diff --git a/nvim/lua/plugins/treesitter.lua b/nvim/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..07c4586
--- /dev/null
+++ b/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,10 @@
+return {
+ "nvim-treesitter/nvim-treesitter",
+ run = ":TSUpdate",
+ config = function ()
+ require("nvim-treesitter.configs").setup({
+ ensure_installed = { "markdown", "markdown_inline", "r", "rnoweb", "yaml", "csv" },
+ highlight = { enable = true },
+ })
+ end
+}

Contact - Imprint