News
Lazyman Neovim Configuration Manager News
Lazyman in Kasm workspaces
Lazyman is now available as a Kasm Workspace by adding https://doctorfree.github.io/kasm-registry/ as a Kasm 3rd party registry and installing the Neovim or Deluxe workspace in your Kasm instance.
Lazyman lman convenience script
Version 3.1.3r5 of Lazyman introduces a new convenience script lman.
The lman command can be used to invoke Neovim with the Lazyman Neovim configuration regardless of NVIM_APPNAME environment setting. The lman command can be used to edit a file using the Lazyman Neovim config as follows:
1
lman /path/to/file.ext
Thanks to Github user wxguy for this convenience script.
New namespace based on Ecovim
Lazyman version 3.1 introduced the ecovim namespace of the Lazyman Neovim configuration. Previous versions of Lazyman included two namespaces, free and onno. The free namespace is the same configuration that was included in early versions of Lazyman. The onno namespace is based on the ONNO configuration with modifications and enhancements to integrate this config with lazyman. The ecovim namespace is based on the Ecovim configuration with modifications and enhancements to integrate this config with lazyman along with some fun eye candy and games.
To use one of the supported Lazyman Neovim configuration namespaces, set the namespace property in ~/.config/nvim-Lazyman/lua/configuration.lua with the command lazyman -O <namespace> where <namespace> can be one of ecovim, free, or onno.
For example, to use the ecovim namespace, use the lazyman command to set this configuration property:
1
lazyman -O ecovim
Supported configurations information documents
Each Lazyman supported Neovim configuration now has an information document providing configuration details at https://lazyman.dev/info.
Lazyman websites
Lazyman has a shiny new website. Also, Lazyman supported configurations using popular Neovim configuration frameworks are now detailed in newly available websites. In addition, Lazyman supported Neovim configurations maintained by the author have new websites detailing their configuration and usage.
New features, fixes, and improvements
Recent releases of lazyman include several new features, fixes, and improvements:
- Information documents for each supported Neovim configuration which include:
- Installation command, install location, brief description
- Links to relevant websites including the Github repo, website, YouTube, etc
- List of plugins included in each configuration
- Table of keymaps defined in each configuration
- New configuration categories:
LazyVim,AstroNvim,NvChad,LunarVim- Easily install all supported configurations using one of these frameworks
- Easy menu navigation and command line usage with keywords
lazymancommand line now supportsopen,install,infoargumentslazyman opento fuzzy select a config to openlazyman installto fuzzy select a config to installlazyman infoto fuzzy select a config to display info
- Menu interface also supports keywords to fuzzy select a config for an action
- Additional keywords supported:
health,init,remove,search,status
- Auto-install of Bob Neovim version manager (optional)
- Multiple namespace support in
LazymandefaultlazymanNeovim configuration- Select which namespace to use in
lua/configuration.luaor via the menu interface - Both namespaces can be configured vi the Lazyman configuration menus (
lazyman -F)
- Select which namespace to use in
LazyIdeandWebdevconfigurations now configurable via a menu interface- Fuzzy select a configuration for a health check
- Improved get_conf.lua can return option or variable value
- Search for plugins and get a list of supported configurations using that plugin
Improved nvims shell function
The nvims shell function is sourced at login and when lazyman is executed. It provides a fuzzy search and select facility to easily open, remove, or get info on a Lazyman installed Neovim configuration. Several new features have recently been added to nvims and its companion shell function neovides.
In addition to the command line arguments and usage described below, when a Neovim configuration is selected for opening with nvims that selection is “sticky”. That is, an alias for vi is created which will use the previously selected nvims configuration for subsequent invocations of vi.
Here is the current usage message for nvims:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Usage: nvims [-c cmd] [-C fltr] [-I] [-R] [-S file] [-U] [file1 [file2] ...]
'-c cmd' : 'Ex' command to be executed after first file read
'-C fltr' : filter to use when generating the list to select from
'-I' : display the selected configuration information document
'-R' : indicates removal of the selected Neovim configuration
'-S file' : Executes 'Vimscript' or 'Lua' in 'file' after file read
'~/.config/nvim-Lazyman/overrides.lua' is used if not empty
'-U' : displays a usage message and exits
Examples:
nvims
Opens Neovim using the selected configuration
nvims main.cpp
Opens 'main.cpp' with Neovim using the selected configuration
nvims -C lazy
Opens Neovim using the configuration selected from those
with names containing the case insensitive string 'lazy'
nvims -I
Displays information for the selected Neovim configuration
nvims -R
Removes the selected Neovim configuration
More info and source code listing for nvims can be found in the Lazyman Wiki.
Get configuration script
Neovim 0.9 introduced a new feature which allows execution of Lua scripts in Neovim from the shell command line. The lazyman configuration menu interface uses this new feature to get the current Lazyman Neovim configuration with shell commands like:
1
2
GET_CONF="${HOME}/.config/nvim-Lazyman/scripts/get_conf.lua"
confval=$(NVIM_APPNAME="nvim-Lazyman" nvim -l ${GET_CONF} ${confname} 2>&1)
The get_conf.lua script can also be used to retrieve option or variable settings in any Neovim configuration. For example, to retrieve the value of the ‘mouse’ option in the Webdev Neovim configuration:
1
2
GET_CONF="${HOME}/.config/nvim-Lazyman/scripts/get_conf.lua"
NVIM_APPNAME="nvim-Webdev" nvim -l ${GET_CONF} mouse
The Lazyman get_conf.lua script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
-- Invoke with 'nvim -l get_conf.lua conf_name'
-- Where 'conf_name' is:
-- - one of the entries in lua/configuration.lua
-- - the keyword 'config_home' to get configuration location info
-- - an option/variable name to retrieve its value
--
-- For example, to retrieve the Lazyman configuration 'namespace' setting:
--
-- #!/bin/bash
-- NVIM_APPNAME="nvim-Lazyman" \
-- nvim -l ~/.config/nvim-Lazyman/scripts/get_conf.lua namespace
--
-- or, to retrieve the value of the 'mouse' option in the Webdev config:
--
-- #!/bin/bash
-- NVIM_APPNAME="nvim-Webdev" \
-- nvim -l ~/.config/nvim-Lazyman/scripts/get_conf.lua mouse
local config = vim.inspect(_G.arg[1])
local arg = string.gsub(config, '"', "")
local app_name = os.getenv("NVIM_APPNAME") or ""
local function get_var(var_name, default_value)
local s, v = pcall(function()
return vim.api.nvim_get_option(var_name)
end)
if s then
return v
else
s, v = pcall(function()
return vim.api.nvim_get_var(var_name)
end)
if s then
return v
else
return default_value
end
end
end
local function print_var(entry)
if type(entry) == "string" then
io.write(entry .. "\n")
elseif type(entry) == "table" then
table.sort(entry)
for _, val in ipairs(entry) do
io.write(val .. "\n")
end
else
io.write(tostring(entry) .. "\n")
end
end
if arg == "config_home" then
local config_home = vim.fn.stdpath("config")
io.write("Neovim configuration location = " .. vim.fn.expand(config_home) .. "\n")
io.write("NVIM_APPNAME = " .. app_name .. "\n")
else
local var_val = ""
if app_name == "nvim-Lazyman" then
local settings = require("configuration")
local entry = settings[arg]
if entry ~= nil then
print_var(entry)
else
var_val = get_var(arg, "")
print_var(var_val)
end
else
var_val = get_var(arg, "")
print_var(var_val)
end
end
Pretty simple, huh? Thanks Neovim!