Browse Source

(feat) use neoformat as the defalt format option (#715)

Rafael 4 years ago
parent
commit
71c5cb4f0b

+ 0 - 11
ftplugin/c.lua

@@ -18,14 +18,3 @@ require("lspconfig").clangd.setup {
     }),
   },
 }
-
-if O.lang.clang.autoformat then
-  require("lv-utils").define_augroups {
-    _clang_autoformat = {
-      { "BufWritePre *.c lua vim.lsp.buf.formatting_sync(nil,1000)" },
-      { "BufWritePre *.h lua vim.lsp.buf.formatting_sync(nil,1000)" },
-      { "BufWritePre *.cpp lua vim.lsp.buf.formatting_sync(nil,1000)" },
-      { "BufWritePre *.hpp lua vim.lsp.buf.formatting_sync(nil,1000)" },
-    },
-  }
-end

+ 4 - 14
ftplugin/go.lua

@@ -6,17 +6,7 @@ require("lspconfig").gopls.setup {
   on_attach = require("lsp").common_on_attach,
 }
 
-if O.lang.go.autoformat then
-  require("lv-utils").define_augroups {
-    _go_format = {
-      { "BufWritePre", "*.go", "lua vim.lsp.buf.formatting_sync(nil,1000)" },
-    },
-    _go = {
-      -- Go generally requires Tabs instead of spaces.
-      { "FileType", "go", "setlocal tabstop=4" },
-      { "FileType", "go", "setlocal shiftwidth=4" },
-      { "FileType", "go", "setlocal softtabstop=4" },
-      { "FileType", "go", "setlocal noexpandtab" },
-    },
-  }
-end
+vim.opt_local.tabstop = 4
+vim.opt_local.shiftwidth = 4
+vim.opt_local.softtabstop = 4
+vim.opt_local.expandtab = false

+ 0 - 35
ftplugin/javascript.lua

@@ -34,40 +34,5 @@ require("lspconfig").tsserver.setup {
     }),
   },
 }
-
 require("lsp.ts-fmt-lint").setup()
-
-if O.lang.tsserver.autoformat then
-  require("lv-utils").define_augroups {
-    _javascript_autoformat = {
-      {
-
-        "BufWritePre",
-        "*.js",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _javascriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.jsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescript_autoformat = {
-      {
-        "BufWritePre",
-        "*.ts",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.tsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-  }
-end
 vim.cmd "setl ts=2 sw=2"

+ 0 - 35
ftplugin/javascriptreact.lua

@@ -34,40 +34,5 @@ require("lspconfig").tsserver.setup {
     }),
   },
 }
-
 require("lsp.ts-fmt-lint").setup()
-
-if O.lang.tsserver.autoformat then
-  require("lv-utils").define_augroups {
-    _javascript_autoformat = {
-      {
-
-        "BufWritePre",
-        "*.js",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _javascriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.jsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescript_autoformat = {
-      {
-        "BufWritePre",
-        "*.ts",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.tsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-  }
-end
 vim.cmd "setl ts=2 sw=2"

+ 0 - 12
ftplugin/json.lua

@@ -15,15 +15,3 @@ require("lspconfig").jsonls.setup {
     },
   },
 }
-
-if O.lang.json.autoformat then
-  require("lv-utils").define_augroups {
-    _json_format = {
-      {
-        "BufWritePre",
-        "*.json",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-  }
-end

+ 0 - 31
ftplugin/lua.lua

@@ -40,34 +40,3 @@ if O.lang.lua.autoformat then
     },
   }
 end
-
-local lua_arguments = {}
-
-local luaFormat = {
-  formatCommand = "lua-format -i --no-keep-simple-function-one-line --column-limit=80",
-  formatStdin = true,
-}
-
-local lua_fmt = {
-  formatCommand = "luafmt --indent-count 2 --line-width 120 --stdin",
-  formatStdin = true,
-}
-
-if O.lang.lua.formatter == "lua-format" then
-  table.insert(lua_arguments, luaFormat)
-elseif O.lang.lua.formatter == "lua-fmt" then
-  table.insert(lua_arguments, lua_fmt)
-end
-
-require("lspconfig").efm.setup {
-  -- init_options = {initializationOptions},
-  cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
-  init_options = { documentFormatting = true, codeAction = false },
-  filetypes = { "lua" },
-  settings = {
-    rootMarkers = { ".git/" },
-    languages = {
-      lua = lua_arguments,
-    },
-  },
-}

+ 0 - 17
ftplugin/python.lua

@@ -20,12 +20,6 @@ if O.lang.python.isort then
   table.insert(python_arguments, isort)
 end
 
-if O.lang.python.formatter == "yapf" then
-  table.insert(python_arguments, yapf)
-elseif O.lang.python.formatter == "black" then
-  table.insert(python_arguments, black)
-end
-
 require("lspconfig").efm.setup {
   -- init_options = {initializationOptions},
   cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
@@ -64,17 +58,6 @@ require("lspconfig").pyright.setup {
     },
   },
 }
-if O.lang.python.autoformat then
-  require("lv-utils").define_augroups {
-    _python_autoformat = {
-      {
-        "BufWritePre",
-        "*.py",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-  }
-end
 
 if O.plugin.debug.active and O.plugin.dap_install.active then
   local dap_install = require("dap-install")

+ 0 - 8
ftplugin/ruby.lua

@@ -12,11 +12,3 @@ require("lspconfig").solargraph.setup {
   },
   filetypes = O.lang.ruby.filetypes,
 }
-
-if O.lang.ruby.autoformat then
-  require("lv-utils").define_augroups {
-    _ruby_format = {
-      { "BufWritePre", "*.rb", "lua vim.lsp.buf.formatting_sync(nil,1000)" },
-    },
-  }
-end

+ 0 - 8
ftplugin/rust.lua

@@ -91,11 +91,3 @@ vim.api.nvim_exec(
     ]],
   true
 )
-
-if O.lang.rust.autoformat then
-  require("lv-utils").define_augroups {
-    _rust_format = {
-      { "BufWritePre", "*.rs", "lua vim.lsp.buf.formatting_sync(nil,1000)" },
-    },
-  }
-end

+ 0 - 4
ftplugin/sh.lua

@@ -15,10 +15,6 @@ local shellcheck = {
   lintFormats = { "%f:%l:%c: %trror: %m", "%f:%l:%c: %tarning: %m", "%f:%l:%c: %tote: %m" },
 }
 
-if O.lang.sh.formatter == "shfmt" then
-  table.insert(sh_arguments, shfmt)
-end
-
 if O.lang.sh.linter == "shellcheck" then
   table.insert(sh_arguments, shellcheck)
 end

+ 0 - 35
ftplugin/typescript.lua

@@ -34,40 +34,5 @@ require("lspconfig").tsserver.setup {
     }),
   },
 }
-
 require("lsp.ts-fmt-lint").setup()
-
-if O.lang.tsserver.autoformat then
-  require("lv-utils").define_augroups {
-    _javascript_autoformat = {
-      {
-
-        "BufWritePre",
-        "*.js",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _javascriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.jsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescript_autoformat = {
-      {
-        "BufWritePre",
-        "*.ts",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.tsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-  }
-end
 vim.cmd "setl ts=2 sw=2"

+ 0 - 35
ftplugin/typescriptreact.lua

@@ -34,40 +34,5 @@ require("lspconfig").tsserver.setup {
     }),
   },
 }
-
 require("lsp.ts-fmt-lint").setup()
-
-if O.lang.tsserver.autoformat then
-  require("lv-utils").define_augroups {
-    _javascript_autoformat = {
-      {
-
-        "BufWritePre",
-        "*.js",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _javascriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.jsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescript_autoformat = {
-      {
-        "BufWritePre",
-        "*.ts",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-    _typescriptreact_autoformat = {
-      {
-        "BufWritePre",
-        "*.tsx",
-        "lua vim.lsp.buf.formatting_sync(nil, 1000)",
-      },
-    },
-  }
-end
 vim.cmd "setl ts=2 sw=2"

+ 0 - 1
ftplugin/zig.lua

@@ -8,7 +8,6 @@ require("lspconfig").zls.setup {
 }
 require("lv-utils").define_augroups {
   _zig_autoformat = {
-    { "BufWritePre", "*.zig", "lua vim.lsp.buf.formatting_sync(nil, 1000)" },
     { "BufEnter", "*.zig", ':lua vim.api.nvim_buf_set_option(0, "commentstring", "// %s")' },
   },
 }

+ 0 - 6
ftplugin/zsh.lua

@@ -15,17 +15,11 @@ require("lspconfig").bashls.setup {
 -- sh
 local sh_arguments = {}
 
-local shfmt = { formatCommand = "shfmt -ci -s -bn", formatStdin = true }
-
 local shellcheck = {
   LintCommand = "shellcheck -f gcc -x",
   lintFormats = { "%f:%l:%c: %trror: %m", "%f:%l:%c: %tarning: %m", "%f:%l:%c: %tote: %m" },
 }
 
-if O.lang.sh.formatter == "shfmt" then
-  table.insert(sh_arguments, shfmt)
-end
-
 if O.lang.sh.linter == "shellcheck" then
   table.insert(sh_arguments, shellcheck)
 end

+ 13 - 0
init.lua

@@ -11,3 +11,16 @@ require "lsp"
 if O.lang.emmet.active then
   require "lsp.emmet-ls"
 end
+
+-- autoformat
+if O.format_on_save then
+  require("lv-utils").define_augroups {
+    autoformat = {
+      {
+        "BufWritePre",
+        "*",
+        [[try | undojoin | Neoformat | catch /^Vim\%((\a\+)\)\=:E790/ | finally | silent Neoformat | endtry]],
+      },
+    },
+  }
+end

+ 3 - 28
lua/default-config.lua

@@ -4,7 +4,7 @@ CACHE_PATH = vim.fn.stdpath "cache"
 TERMINAL = vim.fn.expand "$TERMINAL"
 
 O = {
-
+  format_on_save = true,
   auto_close_tree = 0,
   auto_complete = true,
   colorscheme = "lunar",
@@ -33,7 +33,7 @@ O = {
   },
 
   lsp = {
-    popup_border = "single"
+    popup_border = "single",
   },
 
   database = { save_location = "~/.config/nvcode_db", auto_execute = 1 },
@@ -97,9 +97,6 @@ O = {
   lang = {
     python = {
       linter = "",
-      -- @usage can be 'yapf', 'black'
-      formatter = "",
-      autoformat = false,
       isort = false,
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },
@@ -116,9 +113,6 @@ O = {
       sdk_path = "/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
     },
     lua = {
-      -- @usage can be 'lua-format'
-      formatter = "",
-      autoformat = false,
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },
         signs = true,
@@ -129,8 +123,6 @@ O = {
       -- @usage can be 'shellcheck'
       linter = "",
       -- @usage can be 'shfmt'
-      formatter = "",
-      autoformat = false,
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },
         signs = true,
@@ -140,9 +132,6 @@ O = {
     tsserver = {
       -- @usage can be 'eslint'
       linter = "",
-      -- @usage can be 'prettier'
-      formatter = "",
-      autoformat = false,
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },
         signs = true,
@@ -150,9 +139,6 @@ O = {
       },
     },
     json = {
-      -- @usage can be 'prettier'
-      formatter = "",
-      autoformat = false,
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },
         signs = true,
@@ -178,7 +164,6 @@ O = {
       },
       cross_file_rename = true,
       header_insertion = "never",
-      autoformat = false, -- update this to true for enabling autoformat
     },
     ruby = {
       diagnostics = {
@@ -198,8 +183,6 @@ O = {
         active = false,
       },
       linter = "",
-      formatter = "",
-      autoformat = false,
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },
         signs = true,
@@ -208,13 +191,9 @@ O = {
     },
     svelte = {},
     php = {
-      format = {
-        braces = "psr12",
-      },
       environment = {
         php_version = "7.4",
       },
-      autoformat = false,
       diagnostics = {
         virtual_text = { spacing = 0, prefix = "" },
         signs = true,
@@ -233,8 +212,6 @@ O = {
     cmake = {},
     java = {},
     css = {
-      formatter = "",
-      autoformat = false,
       virtual_text = true,
     },
   },
@@ -263,6 +240,4 @@ O = {
     },
     footer = { "chrisatmachine.com" },
   },
-}
-
-
+}

+ 4 - 1
lua/plugins.lua

@@ -66,6 +66,9 @@ return require("packer").startup(function(use)
   -- Treesitter
   use { "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }
 
+  -- Neoformat
+  use { "sbdchd/neoformat", event = "BufEnter" }
+
   use {
     "kyazdani42/nvim-tree.lua",
     -- cmd = "NvimTreeToggle",
@@ -435,7 +438,7 @@ return require("packer").startup(function(use)
       "typescript",
       "typescriptreact",
       "typescript.tsx",
-    }
+    },
   }
   -- use {
   --   "jose-elias-alvarez/null-ls.nvim",

+ 2 - 31
utils/installer/lv-config.example.lua

@@ -1,13 +1,14 @@
 --[[
 O is the global options object
 
-Formatters and linters should be
+Linters should be
 filled in as strings with either
 a global executable or a path to
 an executable
 ]]
 -- THESE ARE EXAMPLE CONFIGS FEEL FREE TO CHANGE TO WHATEVER YOU WANT
 -- general
+O.format_on_save = true
 O.auto_complete = true
 O.colorscheme = "spacegray"
 O.auto_close_tree = 0
@@ -47,13 +48,9 @@ O.lang.clang.diagnostics.signs = true
 O.lang.clang.diagnostics.underline = true
 
 -- python
--- add things like O.python.formatter.yapf.exec_path
 -- add things like O.python.linter.flake8.exec_path
--- add things like O.python.formatter.isort.exec_path
-O.lang.python.formatter = "yapf"
 -- O.python.linter = 'flake8'
 O.lang.python.isort = true
-O.lang.python.autoformat = true
 O.lang.python.diagnostics.virtual_text = true
 O.lang.python.diagnostics.signs = true
 O.lang.python.diagnostics.underline = true
@@ -61,37 +58,11 @@ O.lang.python.analysis.type_checking = "off"
 O.lang.python.analysis.auto_search_paths = true
 O.lang.python.analysis.use_library_code_types = true
 
--- lua
--- TODO look into stylua
-O.lang.lua.formatter = "lua-format"
--- O.lua.formatter = 'lua-format'
-O.lang.lua.autoformat = false
-
 -- javascript
-O.lang.tsserver.formatter = "prettier"
 O.lang.tsserver.linter = nil
-O.lang.tsserver.autoformat = true
-
--- json
-O.lang.json.autoformat = true
-
--- ruby
-O.lang.ruby.autoformat = true
-
--- go
-O.lang.go.autoformat = true
-
--- rust
-O.lang.rust.autoformat = true
-
--- clang
-O.lang.clang.autoformat = false -- Set to true to enable auto-format in C/C++ files.
 
 -- php
-O.lang.php.format.braces = "k&r" -- options: psr12, allman, k&r
 O.lang.php.environment.php_version = "7.4"
--- TODO: autoformat seems not to work at the moment
-O.lang.php.autoformat = false
 O.lang.php.diagnostics.signs = true
 O.lang.php.diagnostics.underline = true
 O.lang.php.filetypes = { "php", "phtml" }