summaryrefslogtreecommitdiff
path: root/nvim
diff options
context:
space:
mode:
authorJohannes Ranke <johannes.ranke@jrwb.de>2024-12-06 21:49:13 +0100
committerJohannes Ranke <johannes.ranke@jrwb.de>2024-12-06 21:50:27 +0100
commit941e573e22d1c4b01e05b8cacc7a317bfb8eeaf8 (patch)
tree7f325a21f22664460fa18ebee4b8bd782d3b3b7a /nvim
parent41103239de9942a1cd269d4e88d15128761d32d9 (diff)
Experimental neovim configuration with lua
Currently, using the neovim appimage, nvimserver cannot be installed
Diffstat (limited to 'nvim')
-rw-r--r--nvim/init.lua3
-rw-r--r--nvim/lazy-lock.json5
-rw-r--r--nvim/lua/config/lazy.lua47
-rw-r--r--nvim/lua/plugins/R.lua48
-rw-r--r--nvim/lua/plugins/treesitter.lua10
5 files changed, 113 insertions, 0 deletions
diff --git a/nvim/init.lua b/nvim/init.lua
new file mode 100644
index 0000000..a9edd2d
--- /dev/null
+++ b/nvim/init.lua
@@ -0,0 +1,3 @@
+require("config.lazy")
+
+
diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json
new file mode 100644
index 0000000..d8bbbbe
--- /dev/null
+++ b/nvim/lazy-lock.json
@@ -0,0 +1,5 @@
+{
+ "R.nvim": { "branch": "main", "commit": "e1655b5616dff71edae0f52a651afc8d7433037c" },
+ "lazy.nvim": { "branch": "main", "commit": "a44e9cd165e11fa61ccfbea2a3cc1aaa3bcfc4f1" },
+ "nvim-treesitter": { "branch": "master", "commit": "53e20aa728713af5cb4a3e0e2dcfea18975d49fc" }
+}
diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua
new file mode 100644
index 0000000..11d41e0
--- /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..b4dec39
--- /dev/null
+++ b/nvim/lua/plugins/R.lua
@@ -0,0 +1,48 @@
+-- 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",
+ },
+ }
+ -- Check if the environment variable "R_AUTO_START" exists.
+ -- If using fish shell, you could put in your config.fish:
+ -- alias r "R_AUTO_START=true nvim"
+ if vim.env.R_AUTO_START == "true" then
+ opts.auto_start = "on startup"
+ opts.objbr_auto_start = true
+ end
+ require("r").setup(opts)
+ end,
+}
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