From ea3fa8738831f8afd5948975154bd6dd68b49e26 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Sat, 15 Mar 2025 15:36:28 -0400 Subject: [PATCH 01/13] first draft of r.nvim config --- .config/nvim/lua/plugins/r.nvim.lua | 45 +++++++++++++++++++++++++++++ setup.sh | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 .config/nvim/lua/plugins/r.nvim.lua diff --git a/.config/nvim/lua/plugins/r.nvim.lua b/.config/nvim/lua/plugins/r.nvim.lua new file mode 100644 index 0000000..a9f2666 --- /dev/null +++ b/.config/nvim/lua/plugins/r.nvim.lua @@ -0,0 +1,45 @@ +return { + "R-nvim/R.nvim", + lazy = false, + config = function() + local opts = { + quarto_chunk_hl = { + -- highlight = false, -- Disable the highlighting + -- virtual_title = false, -- Don't add the virtual text + bg = "#404040", -- Use a different background color + events = "BufEnter,TextChanged", -- Update the highlighting more often + }, + + + hl_term = false, + view_df = { + open_app = "tmux split-window -v vd", -- open dataframes in visidata + }, + hook = { + on_filetype = function() + vim.api.nvim_buf_set_keymap(0, "n", "gxx", "RDSendLine", {}) + vim.api.nvim_buf_set_keymap(0, "v", "gx", "RSendSelection", {}) + vim.api.nvim_buf_set_keymap(0, "n", "k", "RMakeHTML", {}) + end + }, + R_args = {"--no-save"}, + min_editor_width = 72, + rconsole_width = 78, + objbr_mappings = { -- Object browser keymap + c = 'class', -- Call R functions + ['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", + }, + } + require("r").setup(opts) + end +} diff --git a/setup.sh b/setup.sh index a535154..71cd003 100755 --- a/setup.sh +++ b/setup.sh @@ -22,7 +22,7 @@ set -eo pipefail # Change tool versions here VISIDATA_VERSION=2.11 HUB_VERSION=2.14.2 -NVIM_VERSION=0.10.1 +NVIM_VERSION=0.10.4 RG_VERSION=13.0.0 BAT_VERSION=0.19.0 JQ_VERSION=1.6 From 9cbf618ab6725d2ef4944d56c1e99049ad2713b4 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:09:08 -0400 Subject: [PATCH 02/13] use recent nvim release built for older glibc --- setup.sh | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/setup.sh b/setup.sh index 71cd003..94859e4 100755 --- a/setup.sh +++ b/setup.sh @@ -498,15 +498,6 @@ elif [ $task == "--conda-env" ]; then elif [ $task == "--install-neovim" ]; then - # Too-old of a GLIBC on the system will not work with later nvim versions - if [[ $HOSTNAME == "helix.nih.gov" || $HOSTNAME == "biowulf.nih.gov" ]]; then - printf "\n${RED}Looks like you're on helix/biowulf. You should use the nvim installed on Biowulf " - printf "for compatibility with the system's glibc.\n\nTwo ways to do this: either add 'module load neovim/$NVIM_VERSION' " - printf "to your .extra file or .bashrc, or directly add the path shown from " - printf "'module show neovim/$NVIM_VERSION' to your PATH.${UNSET}\n\n" - exit 1 - fi - if [ -d ~/opt/neovim ]; then printf "${RED}nvim already appears to be installed at ~/opt/neovim. Please remove that dir first.${UNSET}\n" exit 1 @@ -523,10 +514,11 @@ elif [ $task == "--install-neovim" ]; then mkdir -p "$HOME/opt/bin" mv nvim-macos-*64 "$HOME/opt/neovim" else - download https://github.com/neovim/neovim/releases/download/v${NVIM_VERSION}/nvim-linux64.tar.gz nvim-linux64.tar.gz - tar -xzf nvim-linux64.tar.gz - mv nvim-linux64 "$HOME/opt/neovim" - rm nvim-linux64.tar.gz + # Use release built with older glibc + download https://github.com/neovim/neovim-releases/releases/download/v${NVIM_VERSION}/nvim-linux-x86_64.tar.gz nvim-linux-x86_64.tar.gz + tar -xzf nvim-linux-x86_64.tar.gz + mv nvim-linux-x86_64 "$HOME/opt/neovim" + rm nvim-linux-x86_64.tar.gz fi ln -sf ~/opt/neovim/bin/nvim ~/opt/bin/nvim printf "${YELLOW}- installed neovim to $HOME/opt/neovim${UNSET}\n" From a8518c7e53c0f9846440765f03ad43b0a86ceaba Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:09:33 -0400 Subject: [PATCH 03/13] add image for iterm config --- docs/images/iterm2_clipboard.png | Bin 0 -> 102354 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/iterm2_clipboard.png diff --git a/docs/images/iterm2_clipboard.png b/docs/images/iterm2_clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..eb262402c885d632882269613349cd03e4852cf8 GIT binary patch literal 102354 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 cEg#zD2Hwq{2 Date: Tue, 18 Mar 2025 13:09:51 -0400 Subject: [PATCH 04/13] add rnoweb to treesitter config --- .config/nvim/lua/plugins/treesitter.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index ad84ed7..cc798b5 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -29,12 +29,13 @@ return { "markdown", "markdown_inline", "python", - "vim", - "vimdoc", - "yaml", "r", + "rnoweb", "rst", "snakemake", + "vim", + "vimdoc", + "yaml", }, incremental_selection = { enable = true, From 0744844f6fb2137f8dfd081de3a5bff9e7a5857c Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:16:05 -0400 Subject: [PATCH 05/13] add alias to send chunk to r.nvim --- .config/nvim/lua/plugins/r.nvim.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/nvim/lua/plugins/r.nvim.lua b/.config/nvim/lua/plugins/r.nvim.lua index a9f2666..9db7395 100644 --- a/.config/nvim/lua/plugins/r.nvim.lua +++ b/.config/nvim/lua/plugins/r.nvim.lua @@ -20,6 +20,7 @@ return { vim.api.nvim_buf_set_keymap(0, "n", "gxx", "RDSendLine", {}) vim.api.nvim_buf_set_keymap(0, "v", "gx", "RSendSelection", {}) vim.api.nvim_buf_set_keymap(0, "n", "k", "RMakeHTML", {}) + vim.api.nvim_buf_set_keymap(0, "n", "cd", "RSendChunkRNextRChunk", {}) end }, R_args = {"--no-save"}, From 4287e106b5542fc7060e569fcfad049c469f64b8 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:16:28 -0400 Subject: [PATCH 06/13] update nvim clipboard provider to use OSC52 --- .config/nvim/lua/config/options.lua | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua index 5fbaf95..0a41fb7 100644 --- a/.config/nvim/lua/config/options.lua +++ b/.config/nvim/lua/config/options.lua @@ -45,6 +45,21 @@ vim.opt.signcolumn = "yes" -- always show the signcolumn to minimize distraction -- vim.cmd(":autocmd InsertLeave * set nocul") -- Remove color upon existing insert mode -- vim.cmd("set guicursor=i:block") -- Always use block cursor. In some terminals and fonts (like iTerm), it can be hard to see the cursor when it changes to a line. --- Copy all yanked/deleted lines to the "+" buffer. Useful when you want to use --- the OS clipboard. -vim.cmd("set clipboard=unnamedplus") +-- Use osc52 as clipboard provider +local function paste() + return {vim.fn.split(vim.fn.getreg(''), '\n'), vim.fn.getregtype('')} +end +vim.g.clipboard = { + name = 'OSC 52', + copy = { + ['+'] = require('vim.ui.clipboard.osc52').copy('+'), + ['*'] = require('vim.ui.clipboard.osc52').copy('*'), + }, + paste = { + ['+'] = paste, + ['*'] = paste, + }, +} +-- To ALWAYS use the clipboard for ALL operations +-- (instead of interacting with the "+" and/or "*" registers explicitly): +vim.opt.clipboard = "unnamedplus" From 1961454b7605ff36957584ea7783669bc982abbe Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:19:44 -0400 Subject: [PATCH 07/13] add tmux options for OSC52 --- .tmux.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.tmux.conf b/.tmux.conf index 12f94eb..b906bd6 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -63,3 +63,6 @@ bind % split-window -h -c "#{pane_current_path}" unbind -T copy-mode-vi MouseDragEnd1Pane bind -T copy-mode-vi MouseDragEnd1Pane send -X stop-dragging-selection bind -T copy-mode-vi MouseDown1Pane select-pane \; send-keys -X clear-selection + +set-option -s set-clipboard on +set -g allow-passthrough on From b23ffca9154d2988b083e102be6f48a1742e114f Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:21:16 -0400 Subject: [PATCH 08/13] disable r.nvim for now --- .config/nvim/lua/plugins/r.nvim.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/nvim/lua/plugins/r.nvim.lua b/.config/nvim/lua/plugins/r.nvim.lua index 9db7395..591e5c2 100644 --- a/.config/nvim/lua/plugins/r.nvim.lua +++ b/.config/nvim/lua/plugins/r.nvim.lua @@ -1,5 +1,6 @@ return { "R-nvim/R.nvim", + enabled = false, lazy = false, config = function() local opts = { From e41468e835cc5912375b191a0682002a7f38e99a Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Wed, 19 Mar 2025 11:59:48 -0400 Subject: [PATCH 09/13] overhaul r.nvim.lua --- .config/nvim/lua/plugins/r.nvim.lua | 82 ++++++++++++++--------------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/.config/nvim/lua/plugins/r.nvim.lua b/.config/nvim/lua/plugins/r.nvim.lua index 591e5c2..3f7d0e5 100644 --- a/.config/nvim/lua/plugins/r.nvim.lua +++ b/.config/nvim/lua/plugins/r.nvim.lua @@ -1,47 +1,43 @@ return { - "R-nvim/R.nvim", - enabled = false, - lazy = false, - config = function() - local opts = { - quarto_chunk_hl = { - -- highlight = false, -- Disable the highlighting - -- virtual_title = false, -- Don't add the virtual text - bg = "#404040", -- Use a different background color - events = "BufEnter,TextChanged", -- Update the highlighting more often - }, + "R-nvim/R.nvim", + -- Still in experimental mode. + -- enabled = false, - hl_term = false, - view_df = { - open_app = "tmux split-window -v vd", -- open dataframes in visidata - }, - hook = { - on_filetype = function() - vim.api.nvim_buf_set_keymap(0, "n", "gxx", "RDSendLine", {}) - vim.api.nvim_buf_set_keymap(0, "v", "gx", "RSendSelection", {}) - vim.api.nvim_buf_set_keymap(0, "n", "k", "RMakeHTML", {}) - vim.api.nvim_buf_set_keymap(0, "n", "cd", "RSendChunkRNextRChunk", {}) - end - }, - R_args = {"--no-save"}, - min_editor_width = 72, - rconsole_width = 78, - objbr_mappings = { -- Object browser keymap - c = 'class', -- Call R functions - ['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", - }, - } - require("r").setup(opts) - end + lazy = false, + config = function() + local opts = { + + -- Disable highlighting of R in the terminal + hl_term = false, + + -- Use default pdf viewer (or none) + pdfviewer = "", + + -- This is intended to be used with tmux. Viewing a dataframe with + -- rv will save the dataframe to file, open a new tmux + -- pane, and run visidata on that file. Quitting visidata will close that + -- pane. + view_df = { + open_app = "tmux split-window -v vd", + }, + + -- Override some of the built-in commands to match historical commands in + -- these dotfiles. + hook = { + on_filetype = function() + vim.api.nvim_buf_set_keymap(0, "n", "gxx", "RDSendLine", {}) + vim.api.nvim_buf_set_keymap(0, "v", "gx", "RSendSelection", {}) + vim.api.nvim_buf_set_keymap(0, "n", "k", "RMakeHTML", {}) + vim.api.nvim_buf_set_keymap(0, "n", "cd", "RSendChunkRNextRChunk", {}) + end, + -- Optional notification of which nvimcom is being used + -- after_R_start = function() + -- require('r.send').cmd('paste("r.nvim plugin is using this nvimcom:", system.file(package="nvimcom"))') + -- end, + }, + R_args = { "--no-save" }, + } + require("r").setup(opts) + end, } From 3affd1b03941b2a097f26c199a74dad8f0e0934b Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Wed, 19 Mar 2025 11:59:59 -0400 Subject: [PATCH 10/13] add docs on r.nvim --- docs/vim.rst | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 168 insertions(+), 3 deletions(-) diff --git a/docs/vim.rst b/docs/vim.rst index 6376c95..c3b13e4 100644 --- a/docs/vim.rst +++ b/docs/vim.rst @@ -568,10 +568,19 @@ track of what has changed recently. - - fancy rendering of markdown files + * - :ref:`browsher` + - 2024-12-15 + - + - open corresponding github/gitlab page directly from your code + + * - :ref:`r.nvim` + - 2025-03-18 + - + - lots of features for working in R -Sometimes there are better plugins for a particular functionality. I've kept -the documentation, but noted when they've been deprecated here and in the -linked description. +Sometimes there are better plugins for a particular functionality, in which +case the old one will be deprecated. I've kept the documentation, but noted +when they've been deprecated here and in the linked description. .. list-table:: :header-rows: 1 @@ -2182,6 +2191,162 @@ GitHub/GitLab instances. See the config file * - ``Browsher`` - Store URL on OS clipboard +``r.nvim`` +~~~~~~~~~~ + +`r.nvim `__ provides *extensive* integration with R. + +.. versionadded:: 2025-03-18 + +.. details:: Config + + This can be found in :file:`.config/nvim/lua/plugins/r.nvim.lua`: + + .. literalinclude:: ../.config/nvim/lua/plugins/r.nvim.lua + :language: lua + +This is still in testing mode, so to try it out you'll need to comment out the +``enable = false`` line in the config. + +This plugin needs: + +- R available in the environment *before* opening an R or Rmd file +- nvim v0.10.4 or later +- gcc compilre to build the ``nvimcom`` package + +It also needs a one-time installation of the package ``nvimcom``, which +happends automatically the first time you open an R or Rmd file with this +plugin activated. This package is used to communicate between R and nvim. + +This gets tricky when using an R installation in a conda environment that will +be saved with ``conda env export`` for reproducibility. That's because we want +to avoid "contaminating" that R environment with this ``nvimcom`` package which +has nothing to do with the actual analysis. + +For this, we should use the ``R_LIBS_USER`` environment variable, which in turn +needs to be versioned for particular versions of R. This can be accomplished +with the following function that will set the ``R_LIBS_USER`` appropriately +depending on the particular version of R you happen to be using. + +.. note:: + + If you are intending to run ``install.packages()`` within a conda + environment to add analysis dependencies, then do not use this function + because it will put installed packages in your home directory, which will + not be reproducible for others. + + +.. code-block:: bash + + # Usage: Ropen + # (*.R, *.Rmd) + + function Ropen () { + R_VERSION=$(R --version | head -n1 | grep -Eo "[0-9]+\.[0-9]+") + export R_LIBS_USER="/home/$USER/R/$R_VERSION" + mkdir -p R_LIBS_USER + nvim $1 + } + + +.. details:: Notes on this function + + ``R_LIBS_USER`` can be specified with a ``%v`` as a placeholder for + major.minor version, which R will fill in. It also has a default value + *within* R, but not in bash. + + Our goal is to install ``nvimcom`` in the ``R_LIBS_USER`` directory so that + we are not adding in *interface* dependencies into *analysis* dependencies. + + R will only use ``R_LIBS_USER`` to install packages into if the directory + already exists -- which might not be the case, if this is the first time + we're running this version of R. + + We can't use the ``%v`` placeholder and create the directory outside of R, + because bash doesn't know how to fill in the ``%v``. Our options are to have + R interpret ``%v`` and make the directory:: + + Rscript -e "dir.create(Sys.getenv('R_LIBS_USER'), showWarnings=FALSE)" + + Or parse the output of ``R --version``:: + + R_VERSION=$(R --version | head -n1 | grep -Eo "[0-9]+\.[0-9]+") + + It appears that ``Rscript`` takes a little bit longer to start up than ``R + --version``, so I opted to go with the bash version. See ``help(.libPaths)`` + for more info. + +Interesting things that this plugin provides: + + +- run a command in R, copy the output, and insert into the current file + commented out. Perfect for things like ``df %>% head`` to document what + a dataframe looks like in your code. + +- help shows up in a panel in nvim instead of less + +- tab completion of objects in R terminal + +- tab completion of objects in nvim .R / .Rmd file + +- inspect an object -- for dataframes, this will save the object under the + cursor to a file, open a new tmux pane, open the file in visidata in that + pane. Quitting visidata closes the pane as well. This is equivalent to the + ``View()`` function in RStudio + +- an object browser. This is equivalent to the object browser panel in RStudio + +- capability to map arbitrary nvim commands to arbitrary R commands on the + identifier in the code. For example, you could map ``dim({object})`` to + ``do``, and then you could use ``do`` when your cursor is + over an object in .R or .Rmd to quickly check dimensions. + + +.. note:: + + This plugin is configured by default to use the ````, which is + ``\\`` (backslash) by default. Local leader is intended to be used for + filetype-specific mappings (see ``:help maplocalleader``). These dotfiles + are not good about doing so, but the ``r.nvim`` plugin is, hence most of the + mappings using local leader. For consistency other mapped commands with + other plugins, I've remapped some commands to use leader, as indicated in + the table below. + +.. list-table:: + + * - command + - description + + * - :kbd:`rf` + - Start R in a terminal to the right + + * - :kbd:`ro` + - Open the object browser + + * - :kbd:`rq` + - Quit R without saving workspace + + * - :kbd:`k` + - Render Rmd into HTML + + * - :kbd:`rv` + - View the dataframe or matrix under the cursor in visidata + + * - :kbd:`o` + - Send the line to R, capture the output, and insert it here as a comment + + * - :kbd:`cd` + - Send the current chunk to R and move to the next + + * - :kbd:`gx` + - Send the current selection to R + + * - :kbd:`gxx` + - Send the current line to R + + * - ``RMapsDesc`` + - List all mappings for this plugin (there are a lot!) + Colorschemes ------------ From 1d4a265aaf1926b809b47fd2a613299da6a987c1 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:24:48 -0400 Subject: [PATCH 11/13] formatting updates on docs --- docs/vim.rst | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/vim.rst b/docs/vim.rst index c3b13e4..5bf546b 100644 --- a/docs/vim.rst +++ b/docs/vim.rst @@ -1764,6 +1764,8 @@ I'm still figuring out when it's better to use this, fugitive, or gitsigns. See the homepage for details. .. list-table:: + :header-rows: 1 + :align: left * - command - description @@ -1796,6 +1798,8 @@ a way that the changes can be undone (in contrast to running ``black`` manually on the file, which overwrites it). .. list-table:: + :header-rows: 1 + :align: left * - command - description @@ -2060,6 +2064,8 @@ Notes on other plugins: The mapped commands below use :kbd:`o` ([o]bsidian) as a a prefix. .. list-table:: + :header-rows: 1 + :align: left * - command - description @@ -2123,6 +2129,8 @@ distracting when entering and exiting insert mode. However, this plugin can be useful when reviewing a long RMarkdown file to focus on the narrative text. .. list-table:: + :header-rows: 1 + :align: left * - command - description @@ -2150,6 +2158,8 @@ colors. .. list-table:: + :header-rows: 1 + :align: left * - command - description @@ -2184,6 +2194,8 @@ GitHub/GitLab instances. See the config file :file:`.config/nvim/lua/plugins/browsher.lua` for details. .. list-table:: + :header-rows: 1 + :align: left * - command - description @@ -2305,14 +2317,16 @@ Interesting things that this plugin provides: .. note:: This plugin is configured by default to use the ````, which is - ``\\`` (backslash) by default. Local leader is intended to be used for + ``\`` (backslash) by default. Local leader is intended to be used for filetype-specific mappings (see ``:help maplocalleader``). These dotfiles - are not good about doing so, but the ``r.nvim`` plugin is, hence most of the + are not good about doing this, but the ``r.nvim`` plugin is, hence most of the mappings using local leader. For consistency other mapped commands with other plugins, I've remapped some commands to use leader, as indicated in the table below. .. list-table:: + :header-rows: 1 + :align: left * - command - description From 394ebc9ccbfab47e0174d12100e597a9c6adf4c6 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:39:52 -0400 Subject: [PATCH 12/13] minor comments in treesitter config --- .config/nvim/lua/plugins/treesitter.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index cc798b5..a7b54d8 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -12,13 +12,15 @@ return { }, indent = { enable = true, - -- Let vim-python-pep8-indent handle the python and snakemake indentation; - -- disable markdown indentation because it prevents bulleted lists from wrapping correctly with `gq`. + + -- Disable markdown indentation because it prevents bulleted lists + -- from wrapping correctly with `gq`. disable = { "markdown" }, }, -- -------------------------------------------------------------------- -- CONFIGURE ADDITIONAL PARSERS HERE - -- These will be attempted to be installed automatically, but you'll need a C compiler installed. + -- These will be attempted to be installed automatically, but you'll + -- need a C compiler installed. ensure_installed = { "bash", "css", @@ -30,13 +32,16 @@ return { "markdown_inline", "python", "r", - "rnoweb", + "rnoweb", "rst", "snakemake", "vim", "vimdoc", "yaml", }, + + -- Starting from the current line, use Tab or Shift-Tab to increase or + -- decrease the selection depending on scope. incremental_selection = { enable = true, keymaps = { From b754dc6b6c4470b2bf9ce686b841d08a883c66e4 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:40:04 -0400 Subject: [PATCH 13/13] add support for textobjects in treesitter --- .config/nvim/lua/plugins/treesitter.lua | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index a7b54d8..a63b7e5 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -5,6 +5,9 @@ return { version = false, build = ":TSUpdate", event = { "BufReadPost", "BufNewFile" }, + dependencies = { + "nvim-treesitter/nvim-treesitter-textobjects", + }, config = function() require("nvim-treesitter.configs").setup({ highlight = { @@ -51,6 +54,35 @@ return { node_decremental = "", }, }, + + -- Support selecting objects based on parser. E.g., vaf to visually + -- select a function, or cip to change inside a parameter. More can be + -- added, see + -- https://github.com/nvim-treesitter/nvim-treesitter-textobjects + textobjects = { + select = { + enable = true, + lookahead = true, + keymaps = { + ["af"] = { query = "@function.outer", desc = "Select function (outer)" }, + ["if"] = { query = "@function.inner", desc = "Select function (inner)" }, + ["ap"] = { query = "@parameter.outer", desc = "Select parameter (outer)" }, + ["ip"] = { query = "@parameter.inner", desc = "Select parameter (inner)" }, + }, + + -- use the entire line V) or just characters (v (default)) when + -- selecting + selection_modes = { + ["@parameter.inner"] = "v", -- charwise + ["@parameter.outer"] = "v", -- charwise + ["@function.inner"] = "V", -- linewise + ["@function.outer"] = "V", -- linewise + ["@class.inner"] = "V", -- linewise + ["@class.outer"] = "V", -- linewise + ["@scope"] = "v", + }, + }, + }, }) vim.cmd("set foldmethod=expr") vim.cmd("set foldexpr=nvim_treesitter#foldexpr()")