diff --git a/lua/pika/plugins/formatting.lua b/lua/pika/plugins/formatting.lua index 28430a8..382906e 100644 --- a/lua/pika/plugins/formatting.lua +++ b/lua/pika/plugins/formatting.lua @@ -1,39 +1,41 @@ return { - 'stevearc/conform.nvim', - event = { 'BufReadPre', 'BufNewFile' }, - config = function() - local conform = require 'conform' + "stevearc/conform.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + local conform = require("conform") - conform.setup { - formatters_by_ft = { - javascript = { 'prettier' }, - typescript = { 'prettier' }, - javascriptreact = { 'prettier' }, - typescriptreact = { 'prettier' }, - svelte = { 'prettier' }, - css = { 'prettier' }, - html = { 'prettier' }, - json = { 'prettier' }, - yaml = { 'prettier' }, - markdown = { 'prettier' }, - graphql = { 'prettier' }, - liquid = { 'prettier' }, - lua = { 'stylua' }, - -- python = { "isort", "black" }, - }, - format_on_save = { - lsp_fallback = true, - async = false, - timeout_ms = 1000, - }, - } + conform.setup({ + formatters_by_ft = { + javascript = { "prettier" }, + typescript = { "prettier" }, + javascriptreact = { "prettier" }, + typescriptreact = { "prettier" }, + svelte = { "prettier" }, + css = { "prettier" }, + -- html = { 'prettier' }, + fish = { "fish_indent" }, + php = { "pretty-php" }, + json = { "yq" }, + yaml = { "yq" }, + markdown = { "prettier" }, + graphql = { "prettier" }, + liquid = { "prettier" }, + sh = { "shfmt" }, + lua = { "stylua" }, + }, + format_on_save = { + lsp_fallback = false, + async = false, + timeout_ms = 1000, + }, + }) - vim.keymap.set({ 'n', 'v' }, 'mp', function() - conform.format { - lsp_fallback = true, - async = false, - timeout_ms = 1000, - } - end, { desc = 'Format file or range (in visual mode)' }) - end, + vim.keymap.set({ "n", "v" }, "mp", function() + conform.format({ + lsp_fallback = true, + async = false, + timeout_ms = 1000, + }) + end, { desc = "Format file or range (in visual mode)" }) + end, } diff --git a/lua/pika/plugins/linting.lua b/lua/pika/plugins/linting.lua index dfa77ce..ace3b89 100644 --- a/lua/pika/plugins/linting.lua +++ b/lua/pika/plugins/linting.lua @@ -1,35 +1,35 @@ return { - 'mfussenegger/nvim-lint', - event = { 'BufReadPre', 'BufNewFile' }, - config = function() - local lint = require 'lint' + "mfussenegger/nvim-lint", + event = { "BufReadPre", "BufNewFile" }, + config = function() + local lint = require("lint") - lint.linters_by_ft = { - javascript = { 'eslint_d' }, - typescript = { 'eslint_d' }, - javascriptreact = { 'eslint_d' }, - typescriptreact = { 'eslint_d' }, - python = { 'pylint' }, - git = { 'gitlint' }, - json = { 'jsonlint' }, - markdown = { 'vale' }, - fish = { 'fish' }, - php = { 'php' }, - yaml = { 'yamllint' }, - css = { 'stylelint' }, - } + lint.linters_by_ft = { + javascript = { "eslint_d" }, + typescript = { "eslint_d" }, + javascriptreact = { "eslint_d" }, + typescriptreact = { "eslint_d" }, + git = { "gitlint" }, + json = { "jsonlint" }, + markdown = { "vale" }, + fish = { "fish" }, + php = { "php" }, + yaml = { "yamllint" }, + css = { "stylelint" }, + sh = { "shellcheck" }, + } - local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true }) + local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true }) - vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, { - group = lint_augroup, - callback = function() - lint.try_lint() - end, - }) + vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, { + group = lint_augroup, + callback = function() + lint.try_lint() + end, + }) - vim.keymap.set('n', 'l', function() - lint.try_lint() - end, { desc = 'Trigger linting for current file' }) - end, + vim.keymap.set("n", "l", function() + lint.try_lint() + end, { desc = "Trigger linting for current file" }) + end, } diff --git a/lua/pika/plugins/lorem_ipsum.lua b/lua/pika/plugins/lorem_ipsum.lua new file mode 100644 index 0000000..4e3101d --- /dev/null +++ b/lua/pika/plugins/lorem_ipsum.lua @@ -0,0 +1,13 @@ +return { + "derektata/lorem.nvim", + config = function() + require("lorem").setup({ + sentenceLength = { -- custom configuration + words_per_sentence = 6, + sentences_per_paragraph = 4, + }, + comma_chance = 0.3, -- 30% chance to insert a comma + max_commas_per_sentence = 2, -- maximum 2 commas per sentence + }) + end, +} diff --git a/lua/pika/plugins/lsp/lspconfig.lua b/lua/pika/plugins/lsp/lspconfig.lua index f06c77a..ec439a1 100644 --- a/lua/pika/plugins/lsp/lspconfig.lua +++ b/lua/pika/plugins/lsp/lspconfig.lua @@ -1,154 +1,147 @@ return { - 'neovim/nvim-lspconfig', - event = { 'BufReadPre', 'BufNewFile' }, - dependencies = { - 'hrsh7th/cmp-nvim-lsp', - { 'antosha417/nvim-lsp-file-operations', config = true }, - { 'folke/neodev.nvim', opts = {} }, - }, - config = function() - -- import lspconfig plugin - local lspconfig = require 'lspconfig' + "neovim/nvim-lspconfig", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { + "hrsh7th/cmp-nvim-lsp", + { "antosha417/nvim-lsp-file-operations", config = true }, + { "folke/neodev.nvim", opts = {} }, + }, + config = function() + -- import lspconfig plugin + local lspconfig = require("lspconfig") - -- import mason_lspconfig plugin - local mason_lspconfig = require 'mason-lspconfig' + -- import mason_lspconfig plugin + local mason_lspconfig = require("mason-lspconfig") - -- import cmp-nvim-lsp plugin - local cmp_nvim_lsp = require 'cmp_nvim_lsp' + -- import cmp-nvim-lsp plugin + local cmp_nvim_lsp = require("cmp_nvim_lsp") - local keymap = vim.keymap -- for conciseness + local keymap = vim.keymap -- for conciseness - vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('UserLspConfig', {}), - callback = function(ev) - -- Buffer local mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local opts = { buffer = ev.buf, silent = true } + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + -- Buffer local mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local opts = { buffer = ev.buf, silent = true } - -- set keybinds - -- opts.desc = 'Show LSP references' - -- keymap.set('n', 'gR', 'Telescope lsp_references', opts) -- show definition, references + opts.desc = "See available code actions" + keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection - -- opts.desc = 'Go to declaration' - -- keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) -- go to declaration + opts.desc = "Smart rename" + keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- smart rename - -- opts.desc = 'Show LSP definitions' - -- keymap.set('n', 'gd', 'Telescope lsp_definitions', opts) -- show lsp definitions + opts.desc = "Show buffer diagnostics" + keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file - -- opts.desc = 'Show LSP implementations' - -- keymap.set('n', 'gi', 'Telescope lsp_implementations', opts) -- show lsp implementations + opts.desc = "Show line diagnostics" + keymap.set("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line - -- opts.desc = 'Show LSP type definitions' - -- keymap.set('n', 'gt', 'Telescope lsp_type_definitions', opts) -- show lsp type definitions + opts.desc = "Show documentation for what is under cursor" + keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor - opts.desc = 'See available code actions' - keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection + opts.desc = "Restart LSP" + keymap.set("n", "rs", ":LspRestart", opts) -- mapping to restart lsp if necessary + end, + }) - opts.desc = 'Smart rename' - keymap.set('n', 'rn', vim.lsp.buf.rename, opts) -- smart rename + -- used to enable autocompletion (assign to every lsp server config) + local capabilities = cmp_nvim_lsp.default_capabilities() - opts.desc = 'Show buffer diagnostics' - keymap.set('n', 'D', 'Telescope diagnostics bufnr=0', opts) -- show diagnostics for file + -- Change the Diagnostic symbols in the sign column (gutter) + -- (not in youtube nvim video) + local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } + for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) + end - opts.desc = 'Show line diagnostics' - keymap.set('n', 'd', vim.diagnostic.open_float, opts) -- show diagnostics for line - - -- opts.desc = 'Go to previous diagnostic' - -- keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer - - -- opts.desc = 'Go to next diagnostic' - -- keymap.set('n', ']d', vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer - - opts.desc = 'Show documentation for what is under cursor' - keymap.set('n', 'K', vim.lsp.buf.hover, opts) -- show documentation for what is under cursor - - opts.desc = 'Restart LSP' - keymap.set('n', 'rs', ':LspRestart', opts) -- mapping to restart lsp if necessary - end, - }) - - -- used to enable autocompletion (assign to every lsp server config) - local capabilities = cmp_nvim_lsp.default_capabilities() - - -- Change the Diagnostic symbols in the sign column (gutter) - -- (not in youtube nvim video) - local signs = { Error = ' ', Warn = ' ', Hint = ' ', Info = ' ' } - for type, icon in pairs(signs) do - local hl = 'DiagnosticSign' .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' }) - end - - mason_lspconfig.setup_handlers { - -- default handler for installed servers - function(server_name) - lspconfig[server_name].setup { - capabilities = capabilities, - } - end, - ['svelte'] = function() - -- configure svelte server - lspconfig['svelte'].setup { - capabilities = capabilities, - on_attach = function(client, bufnr) - vim.api.nvim_create_autocmd('BufWritePost', { - pattern = { '*.js', '*.ts' }, - callback = function(ctx) - -- Here use ctx.match instead of ctx.file - client.notify('$/onDidChangeTsOrJsFile', { uri = ctx.match }) - end, - }) - end, - } - end, - ['graphql'] = function() - -- configure graphql language server - lspconfig['graphql'].setup { - capabilities = capabilities, - filetypes = { 'graphql', 'gql', 'svelte', 'typescriptreact', 'javascriptreact' }, - } - end, - ['emmet_ls'] = function() - -- configure emmet language server - lspconfig['emmet_ls'].setup { - capabilities = capabilities, - filetypes = { 'html', 'typescriptreact', 'javascriptreact', 'css', 'sass', 'scss', 'less', 'svelte' }, - } - end, - ['lua_ls'] = function() - -- configure lua server (with special settings) - lspconfig['lua_ls'].setup { - capabilities = capabilities, - settings = { - Lua = { - -- make the language server recognize "vim" global - diagnostics = { - globals = { 'vim' }, - }, - completion = { - callSnippet = 'Replace', - }, - }, - }, - } - end, - ['cssls'] = function() - -- configure CSS server - lspconfig['cssls'].setup { - capabilities = capabilities, - } - end, - ['intelephense'] = function() - -- configure PHP server - lspconfig['intelephense'].setup { - capabilities = capabilities, - } - end, - ['marksman'] = function() - -- configure Markdown server - lspconfig['marksman'].setup { - capabilities = capabilities, - } - end, - } - end, + mason_lspconfig.setup_handlers({ + -- default handler for installed servers + function(server_name) + lspconfig[server_name].setup({ + capabilities = capabilities, + }) + end, + ["svelte"] = function() + -- configure svelte server + lspconfig["svelte"].setup({ + capabilities = capabilities, + on_attach = function(client, bufnr) + vim.api.nvim_create_autocmd("BufWritePost", { + pattern = { "*.js", "*.ts" }, + callback = function(ctx) + -- Here use ctx.match instead of ctx.file + client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.match }) + end, + }) + end, + }) + end, + ["graphql"] = function() + -- configure graphql language server + lspconfig["graphql"].setup({ + capabilities = capabilities, + filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" }, + }) + end, + ["emmet_ls"] = function() + -- configure emmet language server + lspconfig["emmet_ls"].setup({ + capabilities = capabilities, + filetypes = { + "html", + "typescriptreact", + "javascriptreact", + "css", + "sass", + "scss", + "less", + "svelte", + }, + }) + end, + ["lua_ls"] = function() + -- ─< configure lua server (with special settings) >──────────────────────────────────── + lspconfig["lua_ls"].setup({ + capabilities = capabilities, + settings = { + Lua = { + -- ─< make the language server recognize "vim" global >───────────────────────────────── + diagnostics = { + globals = { "vim" }, + }, + completion = { + callSnippet = "Replace", + }, + }, + }, + }) + end, + ["cssls"] = function() + -- ─< configure CSS server >──────────────────────────────────────────────────────────── + lspconfig["cssls"].setup({ + capabilities = capabilities, + filetypes = { + "html", + "css", + "scss", + "php", + }, + }) + end, + ["intelephense"] = function() + -- ─< configure PHP server >──────────────────────────────────────────────────────────── + lspconfig["intelephense"].setup({ + capabilities = capabilities, + }) + end, + ["marksman"] = function() + -- ─< configure Markdown server >─────────────────────────────────────────────────────── + lspconfig["marksman"].setup({ + capabilities = capabilities, + }) + end, + }) + end, } diff --git a/lua/pika/plugins/trouble.lua b/lua/pika/plugins/trouble.lua index 8c9147d..9418960 100644 --- a/lua/pika/plugins/trouble.lua +++ b/lua/pika/plugins/trouble.lua @@ -1,12 +1,12 @@ --- return { --- "folke/trouble.nvim", --- dependencies = { "nvim-tree/nvim-web-devicons", "folke/todo-comments.nvim" }, --- keys = { --- { "xx", "TroubleToggle", desc = "Open/close trouble list" }, --- { "xw", "TroubleToggle workspace_diagnostics", desc = "Open trouble workspace diagnostics" }, --- { "xd", "TroubleToggle document_diagnostics", desc = "Open trouble document diagnostics" }, --- { "xq", "TroubleToggle quickfix", desc = "Open trouble quickfix list" }, --- { "xl", "TroubleToggle loclist", desc = "Open trouble location list" }, --- { "xt", "TodoTrouble", desc = "Open todos in trouble" }, --- }, --- } +return { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons", "folke/todo-comments.nvim" }, + keys = { + { "xx", "TroubleToggle", desc = "Open/close trouble list" }, + { "xw", "TroubleToggle workspace_diagnostics", desc = "Open trouble workspace diagnostics" }, + { "xd", "TroubleToggle document_diagnostics", desc = "Open trouble document diagnostics" }, + { "xq", "TroubleToggle quickfix", desc = "Open trouble quickfix list" }, + { "xl", "TroubleToggle loclist", desc = "Open trouble location list" }, + { "xt", "TodoTrouble", desc = "Open todos in trouble" }, + }, +}