Explore the source / nvim

Inside nvim.

Neovim modules, plugins, mappings, and shared theme. Browse the current public files here, or visit the nvim repository on GitHub.

nvim / main

lua/myconf/plugins/neoscroll.lua

View on GitHub
local settings = require("configuration")

if settings.ui.smooth_scrolling.enabled then
   return {
      "karb94/neoscroll.nvim",
      config = function()
         local neoscroll = require("neoscroll")

         neoscroll.setup({
            mappings = { -- Keys to be mapped to their corresponding default scrolling animation
               "<C-u>",
               "<C-d>",
               "<C-b>",
               "<C-f>",
               "<C-y>",
               "<C-e>",
               "zt",
               "zz",
               "zb",
            },
            hide_cursor = true, -- Hide cursor while scrolling
            stop_eof = true, -- Stop at <EOF> when scrolling downwards
            respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file
            cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further
            -- easing = "linear", -- Default easing function
            pre_hook = nil, -- Function to run before the scrolling animation starts
            post_hook = nil, -- Function to run after the scrolling animation ends
            performance_mode = false, -- Disable "Performance Mode" on all buffers.
         })

         --    local keymap = {
         --       -- Use the "sine" easing function
         --       --[[ ["<C-u>"] = function()
         --          neoscroll.ctrl_u({ duration = 250, easing = "sine" })
         --       end,
         --       ["<C-d>"] = function()
         --          neoscroll.ctrl_d({ duration = 250, easing = "sine" })
         --       end, ]]
         --       -- Use the "circular" easing function
         --       --[[ ["<C-b>"] = function()
         --          neoscroll.ctrl_b({ duration = 450, easing = "circular" })
         --       end,
         --       ["<C-f>"] = function()
         --          neoscroll.ctrl_f({ duration = 450, easing = "circular" })
         --       end, ]]
         --       -- When no value is passed the `easing` option supplied in `setup()` is used
         --       ["<C-y>"] = function()
         --          neoscroll.scroll(-0.1, { move_cursor = false, duration = 100 })
         --       end,
         --       ["<C-e>"] = function()
         --          neoscroll.scroll(0.1, { move_cursor = false, duration = 100 })
         --       end,
         --    }
         --    local modes = { "n", "v", "x" }
         --    for key, func in pairs(keymap) do
         --       vim.keymap.set(modes, key, func)
         --    end
      end,
   }
else
   return {}
end