summaryrefslogtreecommitdiff
path: root/lua/kickstart
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2024-02-26 10:03:53 -0500
committerGitHub <noreply@github.com>2024-02-26 10:03:53 -0500
commit8b5d48a199c02658e399f5b43ff8d06df1ede7fb (patch)
tree53901eb85496a2d0d1873135b8f9030555541811 /lua/kickstart
parent7af594fd319fbae6b2aaa06337f3df8acbbb7f18 (diff)
rewrite: slimmer, trimmer and more lazy kickstart.nvim (#635)
We've removed over 1/3 of the code that was in kickstart previously, and more than doubled the amount of comments explaining every line of code (to the best of my ability). kickstart now properly uses many of the lazy.nvim config and loading idioms, which should be really helpful for people moving both to modular configs, as well as extending the kickstart config in one file. Additional features: - Beautiful ascii art - Added some documentation that explains what is an LSP, what is telescope, etc - There is now a `:checkhealth` for kickstart, which checks some basic information and adds useful information for maintainers (for people cloning the repo). - Improved LSP configuration and tool installation, for easier first time startup - Changed init.lua ordering, so that it moves from simple options to complicated config ``` ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Lua 1 108 404 298 ------------------------------------------------------------------------------- ```
Diffstat (limited to 'lua/kickstart')
-rw-r--r--lua/kickstart/health.lua51
-rw-r--r--lua/kickstart/plugins/autoformat.lua74
-rw-r--r--lua/kickstart/plugins/indent_line.lua9
3 files changed, 60 insertions, 74 deletions
diff --git a/lua/kickstart/health.lua b/lua/kickstart/health.lua
new file mode 100644
index 0000000..957204e
--- /dev/null
+++ b/lua/kickstart/health.lua
@@ -0,0 +1,51 @@
+--[[
+--
+-- This file is not required for your own configuration,
+-- but helps people determine if their system is setup correctly.
+--
+--]]
+
+local check_version = function()
+ if not vim.version.cmp then
+ vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", tostring(vim.version())))
+ return
+ end
+
+ if vim.version.cmp(vim.version(), { 0, 9, 4 }) >= 0 then
+ vim.health.ok(string.format("Neovim version is: '%s'", tostring(vim.version())))
+ else
+ vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", tostring(vim.version())))
+ end
+end
+
+local check_external_reqs = function()
+ -- Basic utils: `git`, `make`, `unzip`
+ for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
+ local is_executable = vim.fn.executable(exe) == 1
+ if is_executable then
+ vim.health.ok(string.format("Found executable: '%s'", exe))
+ else
+ vim.health.warn(string.format("Could not find executable: '%s'", exe))
+ end
+ end
+
+ return true
+end
+
+return {
+ check = function()
+ vim.health.start 'kickstart.nvim'
+
+ vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth`
+
+ Fix only warnings for plugins and languages you intend to use.
+ Mason will give warnings for languages that are not installed.
+ You do not need to install, unless you want to use those languages!]]
+
+ local uv = vim.uv or vim.loop
+ vim.health.info('System Information: ' .. vim.inspect(uv.os_uname()))
+
+ check_version()
+ check_external_reqs()
+ end,
+}
diff --git a/lua/kickstart/plugins/autoformat.lua b/lua/kickstart/plugins/autoformat.lua
deleted file mode 100644
index bc56b15..0000000
--- a/lua/kickstart/plugins/autoformat.lua
+++ /dev/null
@@ -1,74 +0,0 @@
--- autoformat.lua
---
--- Use your language server to automatically format your code on save.
--- Adds additional commands as well to manage the behavior
-
-return {
- 'neovim/nvim-lspconfig',
- config = function()
- -- Switch for controlling whether you want autoformatting.
- -- Use :KickstartFormatToggle to toggle autoformatting on or off
- local format_is_enabled = true
- vim.api.nvim_create_user_command('KickstartFormatToggle', function()
- format_is_enabled = not format_is_enabled
- print('Setting autoformatting to: ' .. tostring(format_is_enabled))
- end, {})
-
- -- Create an augroup that is used for managing our formatting autocmds.
- -- We need one augroup per client to make sure that multiple clients
- -- can attach to the same buffer without interfering with each other.
- local _augroups = {}
- local get_augroup = function(client)
- if not _augroups[client.id] then
- local group_name = 'kickstart-lsp-format-' .. client.name
- local id = vim.api.nvim_create_augroup(group_name, { clear = true })
- _augroups[client.id] = id
- end
-
- return _augroups[client.id]
- end
-
- -- Whenever an LSP attaches to a buffer, we will run this function.
- --
- -- See `:help LspAttach` for more information about this autocmd event.
- vim.api.nvim_create_autocmd('LspAttach', {
- group = vim.api.nvim_create_augroup('kickstart-lsp-attach-format', { clear = true }),
- -- This is where we attach the autoformatting for reasonable clients
- callback = function(args)
- local client_id = args.data.client_id
- local client = vim.lsp.get_client_by_id(client_id)
- local bufnr = args.buf
-
- -- Only attach to clients that support document formatting
- if not client.server_capabilities.documentFormattingProvider then
- return
- end
-
- -- Tsserver usually works poorly. Sorry you work with bad languages
- -- You can remove this line if you know what you're doing :)
- if client.name == 'tsserver' then
- return
- end
-
- -- Create an autocmd that will run *before* we save the buffer.
- -- Run the formatting command for the LSP that has just attached.
- vim.api.nvim_create_autocmd('BufWritePre', {
- group = get_augroup(client),
- buffer = bufnr,
- callback = function()
- if not format_is_enabled then
- return
- end
-
- vim.lsp.buf.format {
- async = false,
- filter = function(c)
- return c.id == client.id
- end,
- }
- end,
- })
- end,
- })
- end,
-}
diff --git a/lua/kickstart/plugins/indent_line.lua b/lua/kickstart/plugins/indent_line.lua
new file mode 100644
index 0000000..ed7f269
--- /dev/null
+++ b/lua/kickstart/plugins/indent_line.lua
@@ -0,0 +1,9 @@
+return {
+ { -- Add indentation guides even on blank lines
+ 'lukas-reineke/indent-blankline.nvim',
+ -- Enable `lukas-reineke/indent-blankline.nvim`
+ -- See `:help ibl`
+ main = 'ibl',
+ opts = {},
+ },
+}