- Notifications
You must be signed in to change notification settings - Fork7
Create new "modes" for Neovim!
License
Iron-E/nvim-libmodal
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a rewrite ofvim-libmodal using Neovim's Lua API. This project aims to be cross-compatable withvim-libmodal
— with a few notable exceptions (see theFAQ).
Either usepackadd
or any package manager. I recommend usinglazy.nvim.
- Neovim 0.7+.
vim-libmodal
isnot installed.
{'Iron-E/nvim-libmodal',lazy=true,-- don't load until necessaryversion='^3.0',-- OPTIONAL: unsubscribe from breaking changes},
returnrequire('packer').startup {function(use)use'Iron-E/nvim-libmodal'end}
The following plugins have been constructed usingnvim-libmodal
:
The following samples have been constructed usingnvim-libmodal
:
Seedocs for more information.
You can addlibmodal
modes to your status line. Here are a few examples of how to integrate with existing plugins.
See my configuration forfeline.nvim
here
See my configuration forgalaxyline.nvim
here.
An example config
-- Defined in https://github.com/Iron-E/nvim-highlitelocalBLACK='#202020'localBLUE='#7766ff'localCYAN='#33dbc3'localGRAY_DARK='#353535'localGRAY_LIGHT='#c0c0c0'localGREEN='#22ff22'localGREEN_LIGHT='#99ff99'localICE='#95c5ff'localORANGE='#ff8900'localORANGE_LIGHT='#f0af00'localPINK='#ffa6ff'localPINK_LIGHT='#ffb7b7'localPURPLE='#cf55f0'localPURPLE_LIGHT='#af60af'localRED='#ee4a59'localRED_DARK='#a80000'localRED_LIGHT='#ff4090'localTAN='#f4c069'localTEAL='#60afff'localTURQOISE='#2bff99'localYELLOW='#f0df33' require('heirline').setup({statusline={ {hl=function(self)vim.api.nvim_set_hl(0,self.group, {bold=true,fg=self.color})returnself.groupend,init=function(self)ifvim.g.libmodalActiveModeNamethenself.name=vim.g.libmodalActiveModeNameself.color=self.modes[self.name]elselocalcurrent_mode=self.modes[vim.api.nvim_get_mode().mode] self.name=current_mode[1]self.color=current_mode[2]end ifnotself.oncethenvim.api.nvim_create_autocmd('ModeChanged', {command='redrawstatus',pattern='*:*o'})self.once=trueendend,provider=function(self)return'▊'..self.name..''end,static= {-- {{{group='HeirlineViMode',modes= { ['c']= {'COMMAND-LINE',RED}, ['ce']= {'NORMAL EX',RED_DARK}, ['cv']= {'EX',RED_LIGHT}, ['i']= {'INSERT',GREEN}, ['ic']= {'INS-COMPLETE',GREEN_LIGHT}, ['n']= {'NORMAL',PURPLE_LIGHT}, ['no']= {'OPERATOR-PENDING',PURPLE}, ['r']= {'HIT-ENTER',CYAN}, ['r?']= {':CONFIRM',CYAN}, ['rm']= {'--MORE',ICE}, ['R']= {'REPLACE',PINK}, ['Rv']= {'VIRTUAL',PINK_LIGHT}, ['s']= {'SELECT',TURQOISE}, ['S']= {'SELECT',TURQOISE}, ['�']= {'SELECT',TURQOISE}, ['t']= {'TERMINAL',ORANGE}, ['v']= {'VISUAL',BLUE}, ['V']= {'VISUAL LINE',BLUE}, ['�']= {'VISUAL BLOCK',BLUE}, ['!']= {'SHELL',YELLOW}, -- libmodal ['BUFFERS']=TEAL, ['TABLES']=ORANGE_LIGHT, ['TABS']=TAN, } },-- }}}update='ModeChanged', },}})
An example config
-- Defined in https://github.com/Iron-E/nvim-highlitelocalBLUE='#7766ff'localCYAN='#33dbc3'localGREEN='#22ff22'localGREEN_LIGHT='#99ff99'localICE='#95c5ff'localORANGE='#ff8900'localORANGE_LIGHT='#f0af00'localPINK='#ffa6ff'localPINK_LIGHT='#ffb7b7'localPURPLE='#cf55f0'localPURPLE_LIGHT='#af60af'localRED='#ee4a59'localRED_DARK='#a80000'localRED_LIGHT='#ff4090'localTAN='#f4c069'localTEAL='#60afff'localTURQOISE='#2bff99'localYELLOW='#f0df33' localMODES={-- {{{ ['c']= {'COMMAND-LINE',RED}, ['ce']= {'NORMAL EX',RED_DARK}, ['cv']= {'EX',RED_LIGHT}, ['i']= {'INSERT',GREEN}, ['ic']= {'INS-COMPLETE',GREEN_LIGHT}, ['n']= {'NORMAL',PURPLE_LIGHT}, ['no']= {'OPERATOR-PENDING',PURPLE}, ['r']= {'HIT-ENTER',CYAN}, ['r?']= {':CONFIRM',CYAN}, ['rm']= {'--MORE',ICE}, ['R']= {'REPLACE',PINK}, ['Rv']= {'VIRTUAL',PINK_LIGHT}, ['s']= {'SELECT',TURQOISE}, ['S']= {'SELECT',TURQOISE}, ['�']= {'SELECT',TURQOISE}, ['t']= {'TERMINAL',ORANGE}, ['v']= {'VISUAL',BLUE}, ['V']= {'VISUAL LINE',BLUE}, ['�']= {'VISUAL BLOCK',BLUE}, ['!']= {'SHELL',YELLOW}, -- libmodal ['BUFFERS']=TEAL, ['TABLES']=ORANGE_LIGHT, ['TABS']=TAN,}-- }}} localMODE_HL_GROUP='LualineViMode' --[[/* FELINE CONFIG */]] vim.api.nvim_create_autocmd('ModeChanged', {callback=function()require('lualine').refresh {scope='window',place= {'statusline'}}end}) require('lualine').setup {sections= {lualine_a= {{function()-- auto change color according the vim modelocalmode_color,mode_name ifvim.g.libmodalActiveModeNamethenmode_name=vim.g.libmodalActiveModeNamemode_color=MODES[mode_name]elselocalcurrent_mode=MODES[vim.api.nvim_get_mode().mode] mode_name=current_mode[1]mode_color=current_mode[2]end vim.api.nvim_set_hl(0,MODE_HL_GROUP, {fg=mode_color,bold=true}) returnmode_name..''end,icon= {'▊',align='left'},color=MODE_HL_GROUP,padding=0,}}}}
An example config
--[[/* CONSTANTS */]] -- Defined in https://github.com/Iron-E/nvim-highlitelocalBLUE='#7766ff'localCYAN='#33dbc3'localGREEN='#22ff22'localGREEN_LIGHT='#99ff99'localICE='#95c5ff'localORANGE='#ff8900'localORANGE_LIGHT='#f0af00'localPINK='#ffa6ff'localPINK_LIGHT='#ffb7b7'localPURPLE='#cf55f0'localPURPLE_LIGHT='#af60af'localRED='#ee4a59'localRED_DARK='#a80000'localRED_LIGHT='#ff4090'localTAN='#f4c069'localTEAL='#60afff'localTURQOISE='#2bff99'localYELLOW='#f0df33' localMODES={-- {{{ ['c']= {'COMMAND-LINE',RED}, ['ce']= {'NORMAL EX',RED_DARK}, ['cv']= {'EX',RED_LIGHT}, ['i']= {'INSERT',GREEN}, ['ic']= {'INS-COMPLETE',GREEN_LIGHT}, ['n']= {'NORMAL',PURPLE_LIGHT}, ['no']= {'OPERATOR-PENDING',PURPLE}, ['r']= {'HIT-ENTER',CYAN}, ['r?']= {':CONFIRM',CYAN}, ['rm']= {'--MORE',ICE}, ['R']= {'REPLACE',PINK}, ['Rv']= {'VIRTUAL',PINK_LIGHT}, ['s']= {'SELECT',TURQOISE}, ['S']= {'SELECT',TURQOISE}, ['�']= {'SELECT',TURQOISE}, ['t']= {'TERMINAL',ORANGE}, ['v']= {'VISUAL',BLUE}, ['V']= {'VISUAL LINE',BLUE}, ['�']= {'VISUAL BLOCK',BLUE}, ['!']= {'SHELL',YELLOW}, -- libmodal ['BUFFERS']=TEAL, ['TABLES']=ORANGE_LIGHT, ['TABS']=TAN,}-- }}} localMODE_HL_GROUP='StalineViMode' --[[/* FELINE CONFIG */]] vim.api.nvim_set_hl(0,MODE_HL_GROUP, {})require('staline').setup({mode_colors= {},mode_icons= {},sections= {left= {function()localmode_color,mode_name ifvim.g.libmodalActiveModeNamethenmode_name=vim.g.libmodalActiveModeNamemode_color=MODES[mode_name]elselocalcurrent_mode=MODES[vim.api.nvim_get_mode().mode] mode_name=current_mode[1]mode_color=current_mode[2]end vim.api.nvim_set_hl(0,MODE_HL_GROUP, {bold=true,fg=mode_color})return {MODE_HL_GROUP,mode_name}end, }},})
The following is a list of expressions that work innvim-libmodal
but notvim-libmodal
:
require 'libmodal'
in Lua.vim-libmodal
does not support interacting with it through Lua, you must use the Vimscript interface.
The following is a list of expressions that work invim-libmodal
but notnvim-libmodal
:
call libmodal#Enter('FOO', funcref('bar'), baz)
in Vimscript.- Lua does not support passing
funcref
s from Vimscript. Try using the Lua interface instead.
- Lua does not support passing
call libmodal#Prompt('FOO', funcref('bar'), baz)
in Vimscript.- Lua does not support passing
funcref
s from Vimscript. Try using the Lua interface instead.
- Lua does not support passing
About
Create new "modes" for Neovim!
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.