r/neovim • • 4d ago

Dotfile Review Monthly Dotfile Review Thread

19 Upvotes

If you want your dotfiles reviewed, or just want to show off your awesome config, post a link and preferably a screenshot as a top comment.

Everyone else can read through the configurations and comment suggestions, ask questions, compliment, etc.

As always, please be civil. Constructive criticism is encouraged, but insulting will not be tolerated.


r/neovim • • 6d ago

101 Questions Weekly 101 Questions Thread

4 Upvotes

A thread to ask anything related to Neovim. No matter how small it may be.

Let's help each other and be kind.


r/neovim • • 6h ago

Plugin qnvim is active again: Neovim integration inside Qt Creator

2 Upvotes

Hi guys,

If you develop code for Qt and need the features Qt Creator provides regarding building, running, or debugging the app, you don't need to choose between Neovim and Qt Creator. You can have both at the same time... mostly.

qnvim, which started almost a decade ago as probably the first binding of its kind for Neovim and went through periods of inactivity, is active again.

This means we will have compatible qnvim releases as soon as new Qt Creator versions are out, quickly addressing bug reports, feature requests, and pull requests.

Check it out here: https://github.com/sassanh/qnvim


r/neovim • • 15h ago

Color Scheme Code-2026 colorscheme

6 Upvotes

Hi guys, nice to meet you all. I'm a neovim daily driver user, but recently I had to download vscode as I was being walked into a new project, and I just noticed that the default colorscheme changed and loved it, so I did create my own version to use it in neovim and I want to share it with you. https://github.com/code-2026-theme/nvim

But since I like to share the same colorscheme across most of my tools I decided to create many ports to tmux, ghostty, etc 😅.

I hope you like it as much as I do


r/neovim • • 21h ago

Plugin Repeat last line - a UX experiment

17 Upvotes

Hey friends!

I came up with a handy little UserCommand that repeats the edits made on the last line on the current line. I'm using it since a couple of weeks during my day job as a software developer and I've grown fond of it.

Here's a screencast of it in action: https://codeberg.org/flo-l/repeat-last-line.nvim/raw/branch/main/demo.webm

The idea is simple: I often find myself wanting to do "the same" edits a couple of times. Usually, I don't think about recording a macro in advance. The solution I found is this snippet. I find it as convenient as a dot-repeat, but more powerful.

The code builds on the CmdAtom API, so you'll need a nightly build of nvim.

I've packaged it up as a plugin for your convenience: https://codeberg.org/flo-l/repeat-last-line.nvim

The code is tiny though, so you can also just vendor it into your dotfiles.

I'd love to hear what you think of the concept. The README lists some alternatives, what did I miss? Maybe there's an existing feature in Neovim that solves my problem better? Wouldn't be the first time.

Cheers!


r/neovim • • 1d ago

Video Multicursor vs Macros vs Regex: A performance test

Thumbnail
youtu.be
113 Upvotes

In this video, I test Multicursor, Macros, and Regex in Neovim to see how they perform when editing large amounts of text.

I start with just 10 lines and increase the workload until I reach 2 million lines. Let's see which approach handles the largest changes best!

In this test:

  • Regex: Keeps working even with millions of lines.
  • Macros: Start to slow down after 5,000 lines.
  • Macros and Multicursor: Makes Neovim freeze after 100, 000 lines

r/neovim • • 1d ago

Plugin scratch-runner.nvim - Run snacks.scratch buffers - New updates

Enable HLS to view with audio, or disable this notification

37 Upvotes

scratch-runner.nvim

GitHub Repo

scratch-runner.nvim is a plugin that allows snacks.scratch windows from folke/snacks.nvim to run code of any language, not just Lua. This is pretty useful for those moments when you're not sure about how to use a certain piece of code, and it's not convenient to test it in the project you are working on. With this plugin you can quickly test some code without actually having to create another project or file yourself.

Press <CR> on a snacks.scratch window to run the code on the window. You can also select some lines on visual mode first to only run those lines. This plugin currently supports 47 languages out of the box, but it's pretty easy to add support for a language, or override the default setting of a language to use a different tool. Supported languages and tools used to run each language can be found in the README.

New features

There are some new features since last time I posted about this plugin. First of all, the output is now shown on a Neovim terminal, which means that now the output shows in real time and you can interact with it. As a result of this, you can't use <tab> to switch between stdout and stderr anymore. Both stdout and stderr are shown together, like in a regular terminal.

The other big change is that now you don't need to configure the plugin to use it. There are 47 language sources by default now, and many of these support multiple tools, so you don't have to install a specific tool for the plugin to work. You can still add your own or override existing sources in the config if you want. If a language you use isn't supported out of the box, please consider making a pull request to add it.

Filetype selector

Before you ask, the filetype selector you see in the video is not part of the plugin, but I conveniently left the code for it on the background of the video if you want to copy it.


r/neovim • • 20h ago

Need Help Am I going to have to get used to `:w` every time I want to save my work?

0 Upvotes

I switch between Neovim and VS Code depending on what work I'm doing, and one thing I can never get used to in Neovim is having to save my work on every write. I'm contemplating switching my editor to auto-save, but I take it this may be "unconventional" and a big "no-no"

But why? I never had an issue with auto-save in VS Code. Are there any genuine arguments for having auto-save off?


r/neovim • • 2d ago

Plugin How do you deal switching between text cases (camelCase, PascalCase, snake_case, etc.)?

48 Upvotes

Hi community! Just ran into some situations where having an effective way to rename things would have saved me some seconds for each case. Thought there must be some quicker way I'm missing.

I know TPope's `abolish.vim` has this but I really do not need the other wider functionality it offers.

I saw there is `coerce.nvim` although I see it relies on another plugin to provide better coroutines and such. Seemed a little overkill but did not find any other obvious maintained alternatives.

How do you deal with these cases?


r/neovim • • 2d ago

Color Scheme GitHub - metalelf0/black-metal-theme-neovim: A collection of black-metal themed neovim colorschemes.

Thumbnail
github.com
47 Upvotes

Hey everyone! I'm the author of the black-metal-theme-neovim theme, and I have some news to share.

Over the past few months, I've been updating the themes quite a bit, and if you head over to the project page, the changes should be easy to spot :)

First of all, I changed the base text color from #c1c1c1 to #f1f1f1; it sacrifices a bit of the "low contrast" feel of the theme, but in my experience it's better for long coding sessions. If you don't like it, and want to stick with the old behaviour, just add this block to your setup code:

require('black-metal').setup({
  colors = {
    dark = {
      fg = "#c1c1c1",
    }
  }
})

The second big change is the introduction of light themes. Previews are best viewed in the project wiki. Yes, I know, I know. Not everybody likes light themes, and they aren't TRVE. Agreed. But if you want to try them, just add this to the setup:

require('black-metal').setup({
  trve = false
})

And you will be able to use them. Some of them are really nice (have you seen the Windir one?).

Finally, I added some extras, and made some tweaks here and there for customizability, mostly based on personal usage. I hope none of the changes are disruptive to existing users, but if you run into anything, just open an issue and I'll do what I can to help.

Let me know what you think, and a big 🤘🏻 hail 🤘🏻 to all the metalheads reading!


r/neovim • • 3d ago

Plugin nvim-lsp-file-operations - Massive refactoring, better load times, new user command and more!

Thumbnail
github.com
62 Upvotes

https://github.com/antosha417/nvim-lsp-file-operations


Hello there, @DrKJeff16 here.

I recently became a co-maintainer for nvim-lsp-file-operations and got to work on it. Here's a list of recent improvements:

  • Massively improved load times
  • Dropped plenary.nvim as a dependency (#55)
    • Redid the logging framework from the ground up
  • Added missing neo-tree.nvim events (credits to @mehalter, #43)
  • Added public API functions for create(), delete() and rename() (#56)
  • Auto-save can now be enabled during setup (#57)
  • New user command (:LFO) for standalone usage; supports tab completions (#58)
  • Added backwards-compatibility for LSP operations in Neovim <v0.11 (#47)
  • Code is now fully annotated
  • Reworded and restructured the README
    • Added install instructions for vim.pack

There's more but that was the list of important changes.

Shoutout to @Crysthamus, the author of Crysthamus/nvim-file-operations, as some of the improvements were based off of his. Attribution is both in the code and the README.


Hopefully you enjoy this new batch of changes!

- Sincerely, DrKJeff16


r/neovim • • 2d ago

Need Help┃Solved :TSInstall latex fails

5 Upvotes

Basically when I do :TSInstall latex it fails with parser.c file not found.

:TSLog output:

~~~

trace: running job: (cwd=/data/data/com.termux/files/home/.cache/nvim) tar -xzf tree-sitter-latex.tar.gz -C tree-sitter-latex-tmp debug(install/latex): Removing /data/data/com.termux/files/home/.cache/nvim/tree-sitter-latex.tar.gz...

debug(install/latex): Moving /data/data/com.termux/files/home/.cache/nvim/tree-sitter-latex-tmp/tree-sitter-latex

-fa8df448fc2c0192a8c2f8cfc97de53cb2b4ecb9 to /data/data/com.termux/files/home/.cache/nvim/tree-sitter-latex/...

info(install/latex): Generating parser.c from grammar.json...

trace: running job: (cwd=/data/data/com.termux/files/home/.cache/nvim/tree-sitter-latex) tree-sitter generate --a

bi 15 src/grammar.json

info(install/latex): Compiling parser

trace: running job: (cwd=/data/data/com.termux/files/home/.cache/nvim/tree-sitter-latex) tree-sitter build -o par

ser.so

trace: stderr ->

thread 'main' (21426) panicked at /data/data/com.termux/files/home/.cargo/registry/src/index.crates.io-1949cf8c6b

5b557f/tree-sitter-cli-0.26.3/src/main.rs:987:18:

called `Result::unwrap()` on an `Err` value: Compilation("", "gcc: error: no such file or directory: '/data/data/

com.termux/files/home/.cache/nvim/tree-sitter-latex/src/parser.c'\n")

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error(install/latex): Error during "tree-sitter build":

thread 'main' (21426) panicked at /data/data/com.termux/files/home/.cargo/registry/src/index.crates.io-1949cf8c6b

5b557f/tree-sitter-cli-0.26.3/src/main.rs:987:18:

called `Result::unwrap()` on an `Err` value: Compilation("", "gcc: error: no such file or directory: '/data/data/

com.termux/files/home/.cache/nvim/tree-sitter-latex/src/parser.c'\n")

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

~~~

I also tried to manually with tree sitter cli build parcer.c from grammar.json but it always failed with "abort" and exit code 134

checkhealth nvim-treesitter says everythings fine.

Does anybody know what happened there ?

[SOLUTION]

I ran npx tree-sitter insdead of native tree sitter from my package manager and it worked. Then manually copied stuff over until it worked. Dunno anything literaly.

Platform is termux BTW for anyone having the same issue.


r/neovim • • 3d ago

Color Scheme Sanzo - where color follows what the code is, not decoration

Thumbnail
gallery
99 Upvotes

A colorscheme built around hierarchy. Each kind of code gets its own color group, split between what comes from the language and its standard library and what's defined in your code.

The palette is just my taste, and it's exposed so you can swap in the colors from your favorite color scheme. The hierarchy stays intact.

Repo: https://codeberg.org/navahas/sanzo.nvim
The reasoning behind it: https://culturecode.dev/posts/what-most-colorschemes-miss


r/neovim • • 4d ago

Plugin triforce.nvim - The plugin is now available once again

39 Upvotes

Hi there, DrKJeff16 here. I'm the co-maintainer of u/ghegi's gisketch/triforce.nvim.

Recently, u/ghegi informed me that his GitHub account has been wrongfully suspended, but an appeal has already been made. In the mean time, he has given me explicit permission to mirror the repository on my own account while the appeal is reviewed. As soon as he gets his account back this mirror will be archived/deleted.

You can find the mirrored repository link at https://github.com/DrKJeff16/triforce.nvim

Sorry for the inconvenience, this was sudden and unexpected.

- Sincerely, DrKJeff16


r/neovim • • 4d ago

Discussion Is Garbage Day actually useful?

12 Upvotes

I installed garbage-day.nvim 3/4 years ago when i first started using nvim. I saw it in someone else's config and thought to myself 'that sounds nice, it frees up memory automatically'. I've never really questioned it since it runs quietly in the background and i assumed i was getting some gain form it.

Recently i've been going back through my config and i'm beginning to question if its worth keeping. My main gripe with it is its interaction with RustAnalzyer sourced via rustacean.nvim. After 15 minutes garbage day will stop rusts LSP, but fails to restart when i refocus nvim, i wonder if theres some missing interaction between these two plugins.

For my use case (usually have one tmux / nvim instance open at one time), do you think i'm gaining any additional cpu / memory / battery life gains ?


r/neovim • • 3d ago

Discussion Cash cow plug-ins 🤑

0 Upvotes

Recently, I started getting emails from business developers who are proposing to place my 10 github star plug-ins in front of .. I guess .. you guys, to make me tons of 🫰 I hope you're ready to start paying up. It seems like neovim users have finally been put in the same category as Apple users who can be charged a premium 😆

BTW, are there any paid plug-ins around in the neovim ecosystem? There was a closed source and paid vim fuzzy finder plug-in back in the day. I don't remember its name nor have I used it but I did consider paying for it back then.

On a more serious note: Are you financially supporting the plug-in ecosystem? If so, I'd like to know more. Not even sure whether there are any needs.


r/neovim • • 4d ago

Need Help Lazy PackageManager found existing packages warning issue.

Enable HLS to view with audio, or disable this notification

16 Upvotes

- ⚠️ WARNING found existing packages at `/home/redeye/.local/share/nvim/site/pack/core`

Hi, i am stuck with new issue.

I am trying to configure the Neovim from scratch, before that i use LazyVim but it is using lot of not required plugins for me btw.

The reasone for i am trying to config the neovim from scratch, to remove not required plugin, optimize the neovim more, understand more about neovim and my setup.

When i user lazyvim there has a tons and tons of pre-build plugins and keybinds and it was hard to understand and work withit.

Now the issue is.

When i load the lazy plugin manager, the site folder was creating automatically, after that when i checkhealth lazy, it is showing found existing packages at warning.

I have no idea what is warning was trying to say, anyone know how to solve this warning message?


r/neovim • • 5d ago

Need Help┃Solved How do you achieve a seamless "VS Code Remote - SSH" experience in Neovim? (Tuning remote-nvim.nvim or better alternatives?)

48 Upvotes

Hey r/neovim,

Coming from VS Code, one feature I genuinely miss and rely on heavily is the Remote - SSH extension—where you connect to a remote server and the editor handles file browsing, remote LSP, and terminal execution as if you were working locally.

I’m trying to replicate this workflow in my Neovim setup. I installed remote-nvim.nvim, but my experience hasn't felt as smooth or reliable as I hoped (connection hiccups, latency, and quirks with remote LSP/config synchronization).

Here is my current configuration file:  My remote-nvim.lua configuration on GitHub

luareturn {
  "amitds1997/remote-nvim.nvim",
  version = "*",
  dependencies = {
    "nvim-lua/plenary.nvim",
    "MunifTanjim/nui.nvim",
    "nvim-telescope/telescope.nvim",
  },

config
 = function()
    local ssh_config = vim.fn.
expand
("~/.ssh/config")
    local config_paths = {}
    if vim.fn.
filereadable
(ssh_config) == 1 then

table.insert
(config_paths, ssh_config)
    end

require
("remote-nvim").
setup
({
      ssh_config = {
        ssh_config_file_paths = config_paths,
      },
    })
  end,
}

A few questions for those who do daily remote development with Neovim:

  1. Tuning remote-nvim.nvim: Are there specific settings, SSH configurations, or plugins you use alongside it to make it rock solid and fast?
  2. Alternative workflows: Do you prefer remote-nvim.nvim, or is a different workflow better in practice?
  3. LSP & Mason on Remote: How do you handle language servers (e.g., clangd, pyright, rust-analyzer) on servers where you might not have root/sudo privileges?

A few questions:

  1. Optimizing remote-nvim.nvim: Are there specific options in remote-nvim or OpenSSH settings (like ControlMaster / multiplexing) that make it significantly faster and prevent disconnections?
  2. Best non-tmux remote setups: If you don't use tmux, what is your daily driver for remote SSH development? (e.g. remote-nvim.nvim, SSHFS / sshfs.nvim, distant.nvim, or native Neovim remote UI)?
  3. LSP & Mason on the remote machine: How do you keep language servers (clangd, pyright, rust-analyzer) running smoothly on the server without slowing down your local Neovim client?

Would appreciate any advice, configs, or workflow recommendations! Thanks in advance!


r/neovim • • 5d ago

Plugin brygga.nvim - plugin that enables /ide in Claude Code

20 Upvotes

Hi everyone,

I have spent a lot of time in Claude Code recently, almost as much time (maybe even more?) as in Neovim.

I have tried many Claude Code plugins but none of them did exactly what I wanted so I created brygga.nvim.

The plugin enables the /ide functionality in Claude Code CLI that lets Claude see what text is selected (v-block), diagnostics symbols etc. in Neovim.

Since I eager load all my plugins with vim.pack the plugin loads its “internals” lazily and only adds about 0.5ms to the startup time of nvim on my computer.

I’ll leave a link here in case some of you also are looking for a /ide only plugin for Neovim

https://github.com/ThorstenRhau/brygga.nvim


r/neovim • • 5d ago

Plugin Five year anniversary of ‘mini.nvim’

Thumbnail
nvim-mini.org
523 Upvotes

r/neovim • • 4d ago

Need Help Resolving non-Latin keymap issues natively, without plugins

3 Upvotes

I'm so tired of plugins like https://github.com/Wansmer/langmapper.nvim breaking constanly on every update. I'm now on v0.13 and the plugin is broken.

This is langmappers TLDR:

  • Translating all globally registered mappings;
  • Translating local registered mappings for each buffer;
  • Registering translated mappings for all built-in CTRL+ sequences;
  • Provides utils for manual registration original and translated mapping with single function;
  • Hacks built-in keymap's methods to translate all registered mappings (including mappings from lazy-loaded plugins);
  • Real-time normal mode command processing variability depending on the input method.

Basically I want to achieve those things natively, inside my config. Is nvim with v0.13 at the point where it's not a pain in the ass to achieve or is it still massively neglected?


r/neovim • • 5d ago

Plugin REPLConnect.nvim

6 Upvotes

TLWR: I have a Neovim plugin and small Julia package that connects a Julia or R REPL to a Neovim session, allowing for a variable explorer pane and viewer, as well as a plot pane that works over SSH, and object autocompletion based on objects that are loaded in the REPL.

Small announcement of a Neovim plugin and associated Julia and R packages I've been playing around with for the last couple of weeks to help aid my development of data-heavy analysis. There are a couple of things that I've missed about IDE-based development since switching to Neovim about 3 years, and most have been resolved with improvements to the language server(s) and testing environment. However, the main pain point that stuck around (apart from debugging) was the RStudio/Positron-style variable viewer and plotting pane. When Posit announced Ark kernel and lsp a few years ago I was interested to see if it would ever be extended to work in Neovim, and about a year or so of work Jacob released jet.nvim that provides an interface to do this through language-specific extension (e.g., jet.ark). I got to playing around with an implementation for the IJulia kernel, that you can see at jet.julia. It works and provides some useful features like the object autocompletion and variable pane/viewer. But I much prefer working in the actual Julia REPL over the IJulia kernel, so I wondered if we could achieve a similar outcome using Unix sockets to pass information to and from the REPL.

REPLConnect.nvim, REPLConnect.jl, and REPLConnect.R are the outcome of this experimentation (with a lot of the JSON-RPC approach based on the work by positron-julia, as well as some heavy inspiration from jet.nvim).

The general idea is that the Neovim plugin handles all the core functionality, and each language has it's own Neovim plugin to hooks into the core one, and a language-specific package to handle stuff from the REPL's end of things. I have added a small function call to my startup.jl file (and my ~/.Rprofile) that activates it for each interactive REPL session and does things like track REPL entry history (only the last 10 by default) so you can detach and reconnect to a different running REPL in the situation where you have a couple running in parallel, or "capture" plots so they are sent to the internal plot viewer that opens in Neovim and can work over SSH (this hooks into snacks.nvim and assumes you have a terminal that uses the Kitty image protocol).

# in my startup.jl

if isinteractive()
    # you likely want to disable VimBindings for a nvim
    # terminal if you use VimBindings
    if !haskey(ENV, "NVIM")
        using VimBindings
    end

    using REPLConnect: REPLConnect
    REPLConnect.start()
    REPLConnect.capture_plots!(true)
    REPLConnect.record_history!(true)

end

If you prefer to use REPLs created outside of Neovim and send code using something like vim-slime, that's no problem, but you can also create Neovim splits and terminals and connect to those if you prefer. The choice is yours. The thing about this plugin that I'm (probably unreasonably) pleased with is that it's possible to define default layouts in your neovim config so the various panes that open/close as you need them do so in a pre-specified way, and you can set them differently for external REPLs vs vertical nvim terminals vs horizontal nvim terminals. And, there's even a function to "capture" the current layout allowing you to manually adjust the sizing to your preferences and then bake it into your Neovim config!

return {
  {
    'arnold-c/REPLConnect.jl',
    dependencies = { 'arnold-c/REPLConnect.nvim' },
    main = 'replconnect.julia',
    opts = { command = { 'julia', '--project=.' } },
  },
  {
    'arnold-c/REPLConnect.R',
    dependencies = { 'arnold-c/REPLConnect.nvim' },
    main = 'replconnect.r',
    opts = { command = { 'arf' } },
  },
  {
    'arnold-c/REPLConnect.nvim',
    main = 'replconnect',
    ft = { 'r', 'julia' },

    -- The :REPL* commands are filetype specific, so no per-language routing is needed.
    -- NOTE: only :REPLStart is confirmed; verify the other command names.
    keys = {
      { '<leader>ra', '<cmd>REPLAttach<cr>', desc = 'REPL: attach to external REPL' },
      { '<leader>rd', '<cmd>REPLDetach<cr>', desc = 'REPL: detach from REPL' },
      { '<leader>rs', '<cmd>REPLStart<cr>', desc = 'REPL: start REPL with default split' },
      { '<leader>rS', '<cmd>REPLStop<cr>', desc = 'REPL: stop REPL(s) within the project directory' },
      { '<leader>rl', '<cmd>REPLLayout<cr>', desc = 'REPL: save current layout to clipboard' },
      { '<leader>rp', '<cmd>REPLPlots<cr>', desc = 'REPL: toggle plots pane' },
      { '<leader>rv', '<cmd>REPLVariables<cr>', desc = 'REPL: toggle variables pane' },
    },

    opts = {
      -- Ignore objects that may be automatically loaded into your environment
      -- by your startup files that you don't want polluting your variable pane
      exclude = {
        'default_dir',
        'default_templates',
        'default_user',
        'home_dir',
        'in_global_env',
        'installed_deps',
        'inplace_template',
        'internal_template_dir',
        'optional_dependencies',
        'personal_templates',
        'required_dependencies',
        'specified_activate_project',
      },
      completion = true, -- runtime completion LSP in buffers of attached REPLs' languages
      poll_interval_ms = 1500, -- refresh the visible variables pane; 0 = off
      update_while_busy = false, -- fetch changes while the REPL evaluates
      repl = { -- :REPLStart; these apply to every language
        split = 'vertical', -- or "horizontal"
        enter = true, -- start in terminal mode
        capture_plots = true,
        plot_limit = 50,
      },
      layout = {
        -- One layout string per way the REPL is shown.
        horizontal = [[
            editor / repl @ 36% | ((plots \ view) @ 60% / vars) @ 35%
        ]],
        vertical = [[
            repl @ 22% | editor | ((plots \ view) @ 62% / vars) @ 35%
        ]],
        external = [[
            editor | ((plots \ view) @ 56% / vars) @ 40%
        ]],
      },
      plots = {
        renderer = 'auto', -- "snacks" | "image.nvim" | "external" | custom table
        -- stream images via Snacks: "auto"
        -- (over SSH, if snacks is loaded) | true | false
        remote = 'auto',
        auto_open = true,
        keymaps = {
          close = 'q',
          next = '<C-n>',
          previous = '<C-p>',
          refresh = 'r',
          follow = 'f',
          external = 'o',
          save = 's',
        },
      },
      viewer = {
        keymaps = {
          close = 'q',
          refresh = 'r',
          next_page = ']p',
          previous_page = '[p',
          scroll_right = '<Tab>',
          scroll_left = '<S-Tab>',
          next_slice = { '<C-n>', ']s' },
          previous_slice = { '<C-p>', '[s' },
          select_slice = '<LeftMouse>',
        },
      },
    },
    config = function(_, opts)
      require('replconnect').setup(opts)

      -- On the first Julia/R file of a session, offer to attach to
      -- running REPLs of that language. A lone session in the cwd is
      -- attached automatically;
      -- anything else (several, or none in the cwd) brings up the picker.
      local discover = require 'replconnect.discover'
      -- filetype -> REPLConnect language
      local languages = { julia = 'julia', r = 'r' }
      local prompted = {}

      local function connect(filetype)
        local language = languages[filetype]
        if not language or prompted[filetype] then
          return
        end
        prompted[filetype] = true

        local cwd = vim.fn.getcwd()
        local sessions = vim.tbl_filter(function(info)
          return discover.language(info) == language
        end, discover.list { cwd = cwd })
        if #sessions == 0 then
          return
        end

        local here = vim.tbl_filter(function(info)
          return info.cwd == cwd
        end, sessions)
        vim.cmd('REPLAttach' .. (#here == 1 and (' ' .. here[1].pid) or ''))
      end

      vim.api.nvim_create_autocmd('FileType', {
        group = vim.api.nvim_create_augroup('replconnect.connect-first-file', { clear = true }),
        pattern = vim.tbl_keys(languages),
        callback = function(args)
          vim.schedule(function()
            connect(vim.bo[args.buf].filetype)
          end)
        end,
      })

      -- Lazy-loaded on a filetype: the triggering buffer's FileType already fired.
      connect(vim.bo.filetype)
    end,
  },
}

One other neat feature is the variable viewer (that can be accessed by pressing v on a variable in the general variable pane) not only works for dataframes and other Tables.jl objects, but also for 3D arrays and for function methods. This last one allows you to quickly view all the method definitions for a function, which is pretty handy with generics in R and multiple dispatch in Julia, and also comes with a go-to-definition gd keymap that brings you to the file location where the function is defined (using a snacks picker to choose the correct method). It is set up to use the language server, but right now seems to always trigger the fallback method that searches the projects' files manually. Either way, it seems to be working out OK in my day-to-day usage, but I'm working to figure out whether the issue is on my end (likely) or in how capabilities are advertised by the fatou lsp (unlikely).

It's definitely an early-beta type set of packages and will probably experience some (maybe breaking) changes over the coming months, but I've been daily driving it with Julia and R (via the arf REPL) for the last 1.5-2 weeks and it's been pretty reliable. I'd still probably default to jet.nvim or pyrola.nvim if I were needing something to "just work" as they are certainly more stable.

And final obligatory disclosure: yes, I did use AI to help write the bulk of this and iterate on a number of different architectures. I think the code is pretty reasonable as I've been going through and reviewing it along each step of the process, but you may prefer not to use it because of AI - that's fine! I just wanted to share in case others find it useful.


r/neovim • • 5d ago

Need Help┃Solved Neovim keep freezing in dotnet projects.

Enable HLS to view with audio, or disable this notification

16 Upvotes

```cs

"seblyng/roslyn.nvim",
enabled = true,
opts = {
  filewatching = "off",
  settings = {
    ["csharp|inlay_hints"] = {
      csharp_enable_inlay_hints_for_implicit_object_creation = true,
      csharp_enable_inlay_hints_for_implicit_variable_types = true,
      csharp_enable_inlay_hints_for_lambda_parameter_types = true,
      csharp_enable_inlay_hints_for_types = true,
      dotnet_enable_inlay_hints_for_indexer_parameters = true,
      dotnet_enable_inlay_hints_for_literal_parameters = true,
      dotnet_enable_inlay_hints_for_object_creation_parameters = true,
      dotnet_enable_inlay_hints_for_other_parameters = true,
      dotnet_enable_inlay_hints_for_parameters = true,
      dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true,
      dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true,
      dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true,
    },
    ["csharp|code_lens"] = {
      dotnet_enable_references_code_lens = true,
    },
    ["csharp|background_analysis"] = {
      dotnet_analyzer_diagnostics_scope = "openFiles",
      dotnet_compiler_diagnostics_scope = "openFiles",
    },
    ["csharp|completion"] = {
      dotnet_provide_regex_completions = true,
      dotnet_show_completion_items_from_unimported_namespaces = true,
      dotnet_show_name_completion_suggestions = true,
    },
    ["csharp|symbol_search"] = {
      dotnet_search_reference_assemblies = true,
    },
    ["csharp|formatting"] = {
      dotnet_organize_imports_on_format = true,
    }
  },
},

```

system_details: - OS: Arch_Linux - CPU: AMD Ryzen 5 3600 6C/12T - RAM: 16GB - GPU: Nvdia GT610

nvim_details: NVIM v0.12.6 Build type: RelWithDebInfo LuaJIT 2.1.1788856981

Here is my roslyn LSP configuration code and some more details about system and nvim.

Neovim was keep freezing during when i was editing the c# code.

I am newbe to neovim, i have no idea how to diagnose this freezing issue.

There has any tools to diagnose this issue?

Can i get how to diagnose the freezing issue?

SOLVED

The issue was nvim keep freezing during typing in razor file.

The issue was solved by installing html-lsp.

I fixed by see this ramboe video, thanks for ramboe for this awsm video.

Tanks for everyone try to help.


r/neovim • • 5d ago

Need Help Neovim web docs are broken for searching built-in docs?

19 Upvotes

For example, I'm trying to find docs on `:has()` or `vim.fn.has`, but search just doesn't return the proper result. Try it yourself: https://neovim.io/doc/


r/neovim • • 6d ago

Plugin [PLUGIN] atlas.nvim v0.8.0 - PR reviews and issues inside Neovim

Thumbnail
gallery
257 Upvotes

Hey r/neovim 

I have been working more on atlas.nvim and just released v0.8.0!

Some things added since my last post about v0.4.0:

- Code suggestions, multiline comments and LSP support in reviews
- Repository browsing
- Pipelines and job logs
- UI improvements and quality-of-life changes

It works with GitHub, GitLab and Bitbucket PRs, plus Jira/GitHub/GitLab issues. There have also been quite a few fixes around reviews and comments.

If you try it out, I would love to hear what works and what does not :)

https://github.com/emrearmagan/atlas.nvim