@@ -725,4 +725,216 @@ return {
725725 {
726726 ' nvim-pack/nvim-spectre' ,
727727 },
728+ {
729+ ' rvaccone/wind.nvim' ,
730+ --- @type WindConfig
731+ opts = {
732+ windows = {
733+ excluded_filetypes = { ' help' , ' neo-tree' },
734+ index_help_windows = false ,
735+ max_windows = 9 ,
736+ zero_based_indexing = false ,
737+ notify = true ,
738+ keymaps = {
739+ focus_or_create_horizontal_window = ' <leader>' ,
740+ focus_or_create_vertical_window = ' <leader>v' ,
741+ swap_window = ' <leader>x' ,
742+ close_window = ' <leader>q' ,
743+ close_window_and_swap = ' <leader>z' ,
744+ },
745+ },
746+
747+ clipboard = {
748+ empty_filepath = ' [No Name]' ,
749+ notify = true ,
750+ ai = {
751+ file_begin_text = ' === FILE BEGIN ===' ,
752+ content_begin_text = ' --- CONTENT ---' ,
753+ file_end_text = ' === FILE END ===' ,
754+ separator = ' \n ' ,
755+ include_filetype = true ,
756+ include_line_count = true ,
757+ include_path = true ,
758+ },
759+ keymaps = {
760+ yank_current_window = ' <leader>ya' ,
761+ yank_current_window_ai = ' <leader>y#' ,
762+ yank_windows_ai = ' <leader>y*' ,
763+ yank_filename = ' <leader>yn' ,
764+ },
765+ },
766+ },
767+ },
768+
769+ {
770+ ' mihaifm/megatoggler' ,
771+ config = function ()
772+ require (' megatoggler' ).setup {
773+ tabs = {
774+ {
775+ -- global options you might want to persist
776+ id = ' Globals' ,
777+ items = {
778+ {
779+ id = ' Ignore Case' ,
780+ -- all items must define a get method
781+ get = function ()
782+ return vim .o .ignorecase
783+ end ,
784+ -- items with boolean value must define on_toggle
785+ on_toggle = function (on )
786+ vim .o .ignorecase = on
787+ end ,
788+ },
789+ {
790+ id = ' Tabstop' ,
791+ label = ' Tab Stop' , -- optional label
792+ desc = ' Tab size' , -- optional description
793+ get = function ()
794+ -- use opt_global for vim options you want to persist
795+ return vim .opt_global .tabstop :get ()
796+ end ,
797+ -- items with numeric/string value must define on_set
798+ on_set = function (v )
799+ vim .opt_global .tabstop = v
800+ end ,
801+ -- size of the textbox when editing
802+ edit_size = 3 ,
803+ },
804+ {
805+ id = ' Expand Tab' ,
806+ get = function ()
807+ return vim .opt_global .expandtab :get ()
808+ end ,
809+ on_toggle = function (on )
810+ vim .opt_global .expandtab = on
811+ end ,
812+ },
813+ {
814+ id = ' Inc Command' ,
815+ get = function ()
816+ return vim .o .inccommand
817+ end ,
818+ on_set = function (v )
819+ vim .o .inccommand = v
820+ end ,
821+ edit_size = 10 ,
822+ },
823+ },
824+ },
825+ {
826+ -- local options you might want to toggle but not persist
827+ id = ' Local' ,
828+ items = {
829+ {
830+ id = ' Tabstop' ,
831+ -- disable persistence for buffer-local options
832+ persist = false ,
833+ get = function ()
834+ return vim .bo .tabstop
835+ end ,
836+ on_set = function (v )
837+ vim .bo .tabstop = v
838+ end ,
839+ },
840+ },
841+ },
842+ {
843+ -- toggle features provided by other plugins
844+ id = ' Features' ,
845+ items = {
846+ {
847+ id = ' Render Markdown' ,
848+ get = function ()
849+ return require (' render-markdown' ).get ()
850+ end ,
851+ on_toggle = function ()
852+ require (' render-markdown' ).toggle ()
853+ end ,
854+ },
855+ {
856+ id = ' Autopairs' ,
857+ get = function ()
858+ -- check if plugin is loaded by Lazy
859+ -- only needed if you lazy load the plugin
860+ local lc = require ' lazy.core.config'
861+ if not (lc .plugins [' nvim-autopairs' ] and lc .plugins [' nvim-autopairs' ]._ .loaded ) then
862+ return false
863+ end
864+
865+ return not require (' nvim-autopairs' ).state .disabled
866+ end ,
867+ on_toggle = function (on )
868+ -- avoid lazy loading the plugin if on == false
869+ if on == false then
870+ local lc = require ' lazy.core.config'
871+ if not (lc .plugins [' nvim-autopairs' ] and lc .plugins [' nvim-autopairs' ]._ .loaded ) then
872+ return
873+ end
874+ end
875+
876+ if on then
877+ require (' nvim-autopairs' ).enable ()
878+ else
879+ require (' nvim-autopairs' ).disable ()
880+ end
881+ end ,
882+ },
883+ {
884+ id = ' Smooth scrolling' ,
885+ -- disable persistence when it's difficult to get the plugin's internal state
886+ persist = false ,
887+ get = function ()
888+ return true
889+ end ,
890+ on_toggle = function ()
891+ vim .cmd ' ToggleNeoscroll'
892+ end ,
893+ -- set custom icons for plugins where it's difficult to get the state
894+ icons = { checked = ' ' , unchecked = ' ' },
895+ },
896+ },
897+ },
898+ },
899+ }
900+ end ,
901+ },
902+ {
903+ ' windwp/nvim-autopairs' ,
904+ event = ' InsertEnter' ,
905+ config = true ,
906+ -- use opts = {} for passing setup options
907+ -- this is equivalent to setup({}) function
908+ },
909+ {
910+ ' karb94/neoscroll.nvim' ,
911+ config = function ()
912+ require (' neoscroll' ).setup {
913+ mappings = { -- Keys to be mapped to their corresponding default scrolling animation
914+ ' <C-u>' ,
915+ ' <C-d>' ,
916+ ' <C-b>' ,
917+ ' <C-f>' ,
918+ ' <C-y>' ,
919+ ' <C-e>' ,
920+ ' zt' ,
921+ ' zz' ,
922+ ' zb' ,
923+ },
924+ hide_cursor = true , -- Hide cursor while scrolling
925+ stop_eof = true , -- Stop at <EOF> when scrolling downwards
926+ respect_scrolloff = false , -- Stop scrolling when the cursor reaches the scrolloff margin of the file
927+ cursor_scrolls_alone = true , -- The cursor will keep on scrolling even if the window cannot scroll further
928+ duration_multiplier = 1.0 , -- Global duration multiplier
929+ easing = ' linear' , -- Default easing function
930+ pre_hook = nil , -- Function to run before the scrolling animation starts
931+ post_hook = nil , -- Function to run after the scrolling animation ends
932+ performance_mode = false , -- Disable "Performance Mode" on all buffers.
933+ ignored_events = { -- Events ignored while scrolling
934+ ' WinScrolled' ,
935+ ' CursorMoved' ,
936+ },
937+ }
938+ end ,
939+ },
728940}
0 commit comments