Ryan Clemente
Ryan Clemente

Reputation: 141

Neovim lua unable to load config from different file

I am unable to load config when using require. Form below you can see that I added 2 files under the lua directory

  1. lua/bufferline.lua
  2. lua/plugins/bufferline.lua

I am tried loading both via

-- Bufferline
  use {
    "akinsho/bufferline.nvim",
    tag = "v3.*",
    requires = 'nvim-tree/nvim-web-devicons',
    config = [[require("bufferline")]]
    -- config = [[require("plugins/bufferline")]]
  } -- buffer list with icons

And both failed to load the config changes. But adding the config inline in the plugins.lua the config shows up when restring.

Please check below for my files

lua directory structure

> tree
├── bufferline.lua
├── colorscheme.lua
├── keymaps.lua
├── options.lua
├── plugins
│   └── bufferline.lua
├── plugins.lua

init.lua

require "options"
require "keymaps"
require "plugins"
require "colorscheme"

plugins.lua

--
-- Automatically install packer
local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then
  PACKER_BOOTSTRAP = fn.system {
    "git",
    "clone",
    "--depth",
    "1",
    "https://github.com/wbthomason/packer.nvim",
    install_path,
  }
  print "Installing packer close and reopen Neovim..."
  vim.cmd [[packadd packer.nvim]]
end

-- Autocommand that reloads neovim whenever you save the plugins.lua file
vim.cmd [[
  augroup packer_user_config
    autocmd!
    autocmd BufWritePost plugins.lua source <afile> | PackerSync
  augroup end
]]

-- Use a protected call so we don't error out on first use
local status_ok, packer = pcall(require, "packer")
if not status_ok then
  return
end

-- Have packer use a popup window
packer.init {
  display = {
    open_fn = function()
      return require("packer.util").float { border = "rounded" }
    end,
  },
}


-- Install your plugins here
return packer.startup(function(use)
  use "wbthomason/packer.nvim" -- Have packer manage itself
  use "nvim-lua/popup.nvim" -- An implementation of the Popup API from vim in Neovim
  use "nvim-lua/plenary.nvim" -- Useful lua functions used ny lots of plugins

  -- Bufferline
  use {
    "akinsho/bufferline.nvim",
    tag = "v3.*",
    requires = 'nvim-tree/nvim-web-devicons',
    config = [[require("bufferline")]]
    -- config = [[require("plugins/bufferline")]]
  } -- buffer list with icons

  -- require("bufferline").setup{
  --   options = {
  --     numbers = "buffer_id",
  --     always_show_bufferline = true,
  --     separator_style = "thin"
  --   }
  -- }

  use "christoomey/vim-tmux-navigator" -- navigate between tmux and nvim

  --
  -- Automatically set up your configuration after cloning packer.nvim
  -- Put this at the end after all plugins
  if PACKER_BOOTSTRAP then
    require("packer").sync()
  end

end)

Upvotes: 0

Views: 1209

Answers (1)

TornaxO7
TornaxO7

Reputation: 1299

I think the general problem here is, that you're using the double brackets for the config = option:

    config = [[require("bufferline")]]

As far as I know (my lua skills aren't that great) those double brackets ([[) are used to create a raw string in lua, so you're basically giving config a string which, I assume, vim tries to execute it as vimscript-code.

A solution for that is simply stick to lua and convert your config = line to the following:

config = function() require("bufferline") end,

so in total in should look like this:

-- Bufferline
  use {
    "akinsho/bufferline.nvim",
    tag = "v3.*",
    requires = 'nvim-tree/nvim-web-devicons',
    config = function() require("bufferline") end,
  } -- buffer list with icons

Important hint

You may also need to rename your bufferline.lua file because the module-name of the plugin already uses the name bufferline so require("bufferline") will actually get the module but not your bufferline.lua!

Upvotes: 0

Related Questions