Skip to content

Commit adc043a

Browse files
committed
feat: web dev tooling and UI polish
1 parent c597d8d commit adc043a

File tree

1 file changed

+147
-21
lines changed

1 file changed

+147
-21
lines changed

init.lua

Lines changed: 147 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
--[[
1+
--[[
22
33
=====================================================================
44
==================== READ THIS BEFORE CONTINUING ====================
@@ -478,6 +478,7 @@ require('lazy').setup({
478478
{
479479
-- Main LSP Configuration
480480
'neovim/nvim-lspconfig',
481+
version = 'v2.*',
481482
dependencies = {
482483
-- Automatically install LSPs and related tools to stdpath for Neovim
483484
-- Mason must be loaded before its dependents so we need to set it up here.
@@ -680,9 +681,15 @@ require('lazy').setup({
680681
-- Some languages (like typescript) have entire language plugins that can be useful:
681682
-- https://github.com/pmizio/typescript-tools.nvim
682683
--
683-
-- But for many setups, the LSP (`ts_ls`) will work just fine
684-
-- ts_ls = {},
685-
--
684+
-- But for many setups, the LSP (`tsserver`) will work just fine
685+
-- tsserver = {},
686+
687+
tsserver = {},
688+
eslint = {},
689+
html = {},
690+
cssls = {},
691+
jsonls = {},
692+
tailwindcss = {},
686693

687694
lua_ls = {
688695
-- cmd = { ... },
@@ -713,9 +720,17 @@ require('lazy').setup({
713720
--
714721
-- You can add other tools here that you want Mason to install
715722
-- for you, so that they are available from within Neovim.
723+
local mason_map = {
724+
tsserver = 'typescript-language-server',
725+
}
726+
716727
local ensure_installed = vim.tbl_keys(servers or {})
728+
ensure_installed = vim.tbl_map(function(server)
729+
return mason_map[server] or server
730+
end, ensure_installed)
717731
vim.list_extend(ensure_installed, {
718732
'stylua', -- Used to format Lua code
733+
'prettier', -- Web formatter
719734
})
720735
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
721736

@@ -768,6 +783,18 @@ require('lazy').setup({
768783
end,
769784
formatters_by_ft = {
770785
lua = { 'stylua' },
786+
javascript = { 'prettier' },
787+
javascriptreact = { 'prettier' },
788+
typescript = { 'prettier' },
789+
typescriptreact = { 'prettier' },
790+
json = { 'prettier' },
791+
jsonc = { 'prettier' },
792+
yaml = { 'prettier' },
793+
markdown = { 'prettier' },
794+
html = { 'prettier' },
795+
css = { 'prettier' },
796+
scss = { 'prettier' },
797+
less = { 'prettier' },
771798
-- Conform can also run multiple formatters sequentially
772799
-- python = { "isort", "black" },
773800
--
@@ -894,13 +921,106 @@ require('lazy').setup({
894921
-- Load the colorscheme here.
895922
-- Like many other themes, this one has different styles, and you could load
896923
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
897-
vim.cmd.colorscheme 'tokyonight-night'
924+
vim.cmd.colorscheme 'tokyonight-storm'
898925
end,
899926
},
900927

901928
-- Highlight todo, notes, etc in comments
902929
{ 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } },
903930

931+
{ -- Yazi file manager integration
932+
'mikavilpas/yazi.nvim',
933+
version = '*',
934+
dependencies = {
935+
{ 'nvim-lua/plenary.nvim', lazy = true },
936+
},
937+
keys = {
938+
{
939+
'-',
940+
'<cmd>Yazi<cr>',
941+
desc = 'Open Yazi',
942+
mode = 'n',
943+
},
944+
},
945+
opts = {
946+
open_for_directories = false,
947+
floating_window_scaling_factor = 0.9,
948+
},
949+
},
950+
951+
{ -- Auto pairs for brackets/quotes
952+
'windwp/nvim-autopairs',
953+
event = 'InsertEnter',
954+
opts = {},
955+
},
956+
957+
{ -- Colorize CSS/Hex colors
958+
'NvChad/nvim-colorizer.lua',
959+
event = 'BufReadPre',
960+
opts = {
961+
filetypes = { 'css', 'scss', 'less', 'html', 'tsx', 'jsx' },
962+
user_default_options = {
963+
tailwind = true,
964+
},
965+
},
966+
},
967+
968+
{ -- Tailwind class helpers
969+
'luckasRanarison/tailwind-tools.nvim',
970+
name = 'tailwind-tools',
971+
event = 'BufReadPre',
972+
dependencies = {
973+
'nvim-treesitter/nvim-treesitter',
974+
'neovim/nvim-lspconfig',
975+
},
976+
opts = {
977+
document_color = {
978+
enabled = true,
979+
},
980+
},
981+
},
982+
983+
{ -- VSCode-like indent guides
984+
'lukas-reineke/indent-blankline.nvim',
985+
main = 'ibl',
986+
event = 'BufReadPre',
987+
opts = {
988+
indent = { char = '' },
989+
scope = { enabled = true },
990+
},
991+
},
992+
993+
{ -- Minimal statusline
994+
'nvim-lualine/lualine.nvim',
995+
event = 'VimEnter',
996+
dependencies = { 'nvim-tree/nvim-web-devicons' },
997+
opts = {
998+
options = {
999+
theme = 'tokyonight',
1000+
globalstatus = true,
1001+
section_separators = '',
1002+
component_separators = '',
1003+
},
1004+
sections = {
1005+
lualine_a = { 'mode' },
1006+
lualine_b = { 'branch' },
1007+
lualine_c = { { 'filename', path = 1 } },
1008+
lualine_x = { 'diagnostics' },
1009+
lualine_y = { 'filetype' },
1010+
lualine_z = { 'location' },
1011+
},
1012+
},
1013+
},
1014+
1015+
{ -- Sticky context like VSCode breadcrumbs
1016+
'nvim-treesitter/nvim-treesitter-context',
1017+
event = 'BufReadPre',
1018+
opts = {
1019+
max_lines = 3,
1020+
trim_scope = 'outer',
1021+
},
1022+
},
1023+
9041024
{ -- Collection of various small independent plugins/modules
9051025
'echasnovski/mini.nvim',
9061026
config = function()
@@ -919,21 +1039,6 @@ require('lazy').setup({
9191039
-- - sr)' - [S]urround [R]eplace [)] [']
9201040
require('mini.surround').setup()
9211041

922-
-- Simple and easy statusline.
923-
-- You could remove this setup call if you don't like it,
924-
-- and try some other statusline plugin
925-
local statusline = require 'mini.statusline'
926-
-- set use_icons to true if you have a Nerd Font
927-
statusline.setup { use_icons = vim.g.have_nerd_font }
928-
929-
-- You can configure sections in the statusline by overriding their
930-
-- default behavior. For example, here we set the section for
931-
-- cursor location to LINE:COLUMN
932-
---@diagnostic disable-next-line: duplicate-set-field
933-
statusline.section_location = function()
934-
return '%2l:%-2v'
935-
end
936-
9371042
-- ... and there is more!
9381043
-- Check out: https://github.com/echasnovski/mini.nvim
9391044
end,
@@ -944,7 +1049,28 @@ require('lazy').setup({
9441049
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
9451050
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
9461051
opts = {
947-
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
1052+
ensure_installed = {
1053+
'bash',
1054+
'c',
1055+
'css',
1056+
'diff',
1057+
'dockerfile',
1058+
'html',
1059+
'javascript',
1060+
'json',
1061+
'jsonc',
1062+
'lua',
1063+
'luadoc',
1064+
'markdown',
1065+
'markdown_inline',
1066+
'query',
1067+
'toml',
1068+
'tsx',
1069+
'typescript',
1070+
'vim',
1071+
'vimdoc',
1072+
'yaml',
1073+
},
9481074
-- Autoinstall languages that are not installed
9491075
auto_install = true,
9501076
highlight = {

0 commit comments

Comments
 (0)