Select a color scheme for your Dotfyle experience

Issue #41

Issue #41
comments

Email Newsletter

Sign up with your email address to receive an email when a new issue of This Week in Neovim is available

important-disclaimer-{#disclaimer}">

Important disclaimer {#disclaimer}

This release marks the release of three different TWiN releases all merged as one:

  • Monday April 24th 2023
  • Monday May 1st 2023
  • Monday May 8th 2023

I — @phaazon — was not available for a whole week (work summit in New-York) and missed two release dates. Hence, you get a mega update this week, yaaaay.

However, I think it’s important for me to explain something about this-week-in-neovim. I started the project almost one year ago now, completely on my own, just after asking the community whether they would like a curated list of news (reddit).

People might have noticed — should they know me directly or not — that I have moved away from Neovim. I will not explain why (I plan on writing a blog article about it), but the thing is, my only binding to Neovim now is TWiN. I keep smiling when reading new plugins, updates, guides and the thriving ecosystem, but it’s been a long time I’ve given up on the direction of state of things of Neovim.

For this reason, I think it’s important to start talking about the future of TWiN. Hence, I’ll start with a Reddit thread to gather what people want, who would like to get involved more (i.e. having write accesses, etc.) to slowly move ownership. Let’s talk about that on Reddit; you have enough to read down below!

Reddit thread.

Have fun reading!

neovim-core-updates-{#core}">

Neovim Core updates {#core}

Updates of Neovim itself, which are available on Neovim nightly.

Important: some updates might be missing from this week content. If you want to be sure to always keep up to date with what’s going on in Neovim Core, you are strongly advised to have a look to these places:

neovim-plugin-community-updates-{#plugins}">

Neovim Plugin Community updates {#plugins}

Neovim is full of active plugins. This section is about the community and what is going on.

guides,-tours,-articles,-etc-{#guides}">

Guides, tours, articles, etc. {#guides}

5 smart mini-snippets to amp up your text editing experience in Neovim

JoosepAlviste wrote an article where he shows how to create small text-editing utilities to make text editing more fun. This also includes some examples of using tree-sitter to make the cmini-snippets "smart" based on the context of the file.

5 Neovim Plugins To Improve Your Productivity

LazyVim: Linters & Formatters

5 Features Neovim is still missing

new-plugins-{#new-plugins}">

New plugins {#new-plugins}

mini.hues

There was a release of a new color scheme module in mini.nvim called mini.hues. It is an another take on color scheme generation: supply background with foreground colors and the rest of the palette is computed to be as much perceptually different from one another as reasonably possible. It can limit number of used hues for non-base colors, adjust saturation level and accent color while also having 30+ modern Neovim plugin integrations.

Along with it comes 'randomhue' - a good old configuration-free color scheme which on every :colorscheme randomhue will randomly but smartly generate background/foreground colors and apply 'mini.hues'.

template-literal-comments.nvim

Highlight ECMAScript template literals by placing a comment before them

template-literal-comments.nvim

definition-or-references.nvim

definition-or-references.nvim

This plugin simply replaces vim.lsp.buf.definition and vim.lsp.buf.references with a single command. Convenient. Written by @KostkaBrukowa.

laravel.nvim

laravel.nvim

Plugin for Neovim to enhance the development experience of Laravel projects. Quick executing of artisan commands, list and navigate to routes. Information about the routes. Robust API to allow you to run any command in the way that you need, etc.

A plugin by @adalessa.

nvim-dap-repl-highlights

nvim-dap-repl-highlights

This plugin adds tree-sitter language injections into the DAP REPL, allowing you to use your tree-sitter parsers inside the REPL making your debugging sessions much more readable. An interesting and useful plugin by @LiadOz.

keylab.nvim

keylab.nvim

This plugin is the first contribution of its author, @BooleanCube aims at helping new Neovim users with getting used to the Vim key configuration on their setup. It can alternatively be used as a way to measure your typing speed.

nvim-highlite

nvim-highlite

A colorscheme generator that is "lite" on logic for the developer. It ships with a couple built-in colorschemes and is compatible with semantic highlighting. A plugin by @Iron-E

wf.nvim

which-key but for Neovim. It has some differences with which-key.nvim, like being inspired by Helix for the position on screen, etc.

Made by @Cassin01.

monorepo.nvim

monorepo.nvim

A new plugin for managing monorepos in Neovim! Its purpose is to change the project scope inside of a monorepo quickly and easily and pair well with telescope.nvim.

ranger.nvim

A ranger introduction. In Neovim. Yes. It differs from ranger.vim or even rnvimr in that it has no dependencies besides ranger itself and is written in 100% lua.

tsc.nvim

tsc.nvim

A Neovim plugin for seamless, asynchronous project-wide TypeScript type-checking using the TypeScript compiler (tsc).

Written by @dmmulroy.

tabby

A plugin that associates buffers with tabs, so that switching to a tab only shows its buffers.

First plugin of @medwatt.

nvimgelion

nvimgelion

@nyngwang’s first colorscheme. A tribute to Evangelion!

webc.nvim

WebC support for Neovim.

better-folds.nvim

better-folds.nvim

@snelling-a’s first plugin! Right now it doesn’t do much but makes folds look slightly different.

A plugin similar to pretty-fold.nvim or nvim-ufo.

NeoComposer.nvim

NeoComposer.nvim

NeoComposer is a Neovim plugin that streamlines macro management and execution with a customizable Status Line Component and Telescope Extension.

Feature set:

  • View the status of your macros interactively with the status component.
  • Browse, search, and manage macros using the Telescope extension.
  • Delay playback to ensure proper macro execution.
  • Edit macros in an interactive buffer.
  • Queue, yank, and delete macros.
  • Stop macros during playback.

Links:

fleet-theme-nvim

fleet-theme-nvim

A port of the color scheme from Jetbrains' Fleet to Neovim.

muren.nvim

Multiple search and replace sessions all at once, with ease. By @AckslD.

updates-{#updates}">

Updates {#updates}

nvim-treesitter

Nvim Treesitter configurations and abstraction layer

nvim-treesitter

Markdown fenced code blocks now highlight their contents using filetype aliases. So whereas before, a fenced codeblock with the info-string javascript would highlight as javascript, but one with the info-string js would not highlight, now infostrings like js, hs, py, and others will correctly highlight.

hbac.nvim

Automatically close the buffers you don't care about.

New toggle_pin command was added to manually pin and unpin buffers.

smart-splits.nvim

🧠 Smart, seamless, directional navigation and resizing of Neovim + terminal multiplexer splits. Supports tmux, Wezterm, and Kitty. Think about splits in terms of "up/down/left/right".

The Wezterm integration for smart-splits.nvim has been updated to support a new way to handle the keymaps from the Wezterm side. The plugin now sets a Wezterm user variable IS_NVIM=true when initialized, and uses an autocmd to set it back to false when Neovim exits.

Previously, the Wezterm keymaps would need to check the foreground process name to check if nvim is running in order to decide whether to consume the keymap or pass it on to Neovim. However, this came with some issues. The pane:get_foreground_process_name() function can have high and highly variable latency, and does not work over an SSH connection, and sometimes doesn't work at all on Windows.

Note: This new way of configuring the Wezterm keymaps will not play very nicely with lazy-loading smart-splits.nvim, since the Wezterm keymaps react to a user variable that is set only once the plugin is loaded, so the first keypress may not work, but it should work for subsequent keys after that. However, smart-splits.nvim is very small, and not lazy-loading it on my system only adds 0.07ms to my startup time, so I just stopped lazy-loading it.

In Wezterm, you can now switch this code:

-- Equivalent to POSIX basename(3)
-- Given "/foo/bar" returns "bar"
-- Given "c:\\foo\\bar" returns "bar"
local function basename(s)
  return string.gsub(s, '(.*[/\\])(.*)', '%2')
end

local function is_vim(pane)
  local process_name = basename(pane:get_foreground_process_name())
  return not not process_name:find('vim')
end

To just this code:

local function is_vim(pane)
  return pane:get_user_vars().IS_NVIM == 'true'
end

Here's the PR adding this functionality if you're interested.

wiki.vim

A wiki plugin for Vim.

The plugin got a new update, which is a minor release. More larger changes in the near future are to come, most of them will be breaking changes.

did-you-know?-{#tips}">

Did you know? {#tips}

Nothing for these past weeks…

special-thanks-{#special-thanks}">

Special thanks {#special-thanks}

These people help contributing various updates about Neovim and its ecosystem! Thanks for your contributions! ❤️

want-to-contribute?-{#contribute}">

Want to contribute? {#contribute}

You have noticed something missing that you saw lately? Do not keep the candies for yourself and please feel free to share with us! You can open a PR at This Week In Neovim Contents.

Feel free to read how to contribute to get started.

CC-BY-SA