diff options
author | Johannes Ranke <johannes.ranke@jrwb.de> | 2024-12-06 21:49:13 +0100 |
---|---|---|
committer | Johannes Ranke <johannes.ranke@jrwb.de> | 2024-12-06 21:50:27 +0100 |
commit | 941e573e22d1c4b01e05b8cacc7a317bfb8eeaf8 (patch) | |
tree | 7f325a21f22664460fa18ebee4b8bd782d3b3b7a /nvim/lua | |
parent | 41103239de9942a1cd269d4e88d15128761d32d9 (diff) |
Experimental neovim configuration with lua
Currently, using the neovim appimage, nvimserver cannot be installed
Diffstat (limited to 'nvim/lua')
-rw-r--r-- | nvim/lua/config/lazy.lua | 47 | ||||
-rw-r--r-- | nvim/lua/plugins/R.lua | 48 | ||||
-rw-r--r-- | nvim/lua/plugins/treesitter.lua | 10 |
3 files changed, 105 insertions, 0 deletions
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 +} |