Compare commits
	
		
			2 Commits
		
	
	
		
			a530048c76
			...
			e4eb211aaa
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e4eb211aaa | |||
| d4778fad0f | 
| @@ -7,7 +7,8 @@ echo "Entourage: Configuring ${NUM_DISPS} displays" >> $DWL_LOG_FILE | ||||
|  | ||||
| if [[ $NUM_DISPS > 1 ]]; then | ||||
|     # Dual screen | ||||
|     wlr-randr --output HDMI-A-1 --on --pos 0,0 --output eDP-1 --on --pos 0,1050 | ||||
|     # wlr-randr --output HDMI-A-1 --on --pos 0,0 --output eDP-1 --on --pos 0,1050 | ||||
|     wlr-randr --output HDMI-A-1 --on --pos 0,0 --output eDP-1 --on --pos 2560,0 | ||||
| else | ||||
|     # Single laptop screen | ||||
|     wlr-randr --output HDMI-A-1 --off --output eDP-1 --on --pos 0,0 | ||||
| @@ -25,8 +26,9 @@ echo "DWL ready!" >> $DWL_LOG_FILE | ||||
| echo "Entourage: " $DWL_TAGS_FILE >> $DWL_LOG_FILE | ||||
|  | ||||
| if [ -e /usr/local/bin/somebar ]; then | ||||
|     /usr/local/bin/somebar & | ||||
|     dbus-run-session /usr/local/bin/somebar > $XDG_RUNTIME_DIR/somebar.log & | ||||
|     (sleep 2 && conky -c ~/.conkyrc > $XDG_RUNTIME_DIR/somebar-0) & | ||||
|     echo "Entourage: Started somebar " >> $DWL_LOG_FILE | ||||
| else | ||||
|     DISPLAYS=$(wlr-randr | perl -ne 'print "$1 " if /^([\w-]+)/') | ||||
|     DISP_NUM=$(expr 0) | ||||
|   | ||||
							
								
								
									
										522
									
								
								nvim.init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										522
									
								
								nvim.init.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,522 @@ | ||||
| -- Install packer | ||||
| local install_path = vim.fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim' | ||||
| local is_bootstrap = false | ||||
| if vim.fn.empty(vim.fn.glob(install_path)) > 0 then | ||||
|     is_bootstrap = true | ||||
|     vim.fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) | ||||
|     vim.cmd [[packadd packer.nvim]] | ||||
| end | ||||
|  | ||||
| require('packer').startup(function(use) | ||||
|     -- Package manager | ||||
|     use 'wbthomason/packer.nvim' | ||||
|  | ||||
|     -- Look and Colors | ||||
|     use 'navarasu/onedark.nvim' | ||||
|     use 'asolkar/vim-color-molokini' | ||||
|  | ||||
|     use { | ||||
|         'nvim-lualine/lualine.nvim', | ||||
|         requires = { 'kyazdani42/nvim-web-devicons', opt = true } | ||||
|     } | ||||
|     require('lualine').setup { | ||||
|         options = { | ||||
|             icons_enabled = true, | ||||
|             theme = 'onedark', | ||||
|             section_separators = { left = '', right = '' }, | ||||
|             component_separators = { left = '', right = '' } | ||||
|         }, | ||||
|         sections = { | ||||
|             lualine_c = { | ||||
|                 { | ||||
|                     'filename', | ||||
|                     path = 2, | ||||
|                     symbols = { | ||||
|                         modified = ' ●',        -- Text to show when the buffer is modified | ||||
|                         alternate_file = ' ↻',  -- Text to show to identify the alternate file | ||||
|                         directory =  '',       -- Text to show when the buffer is a directory | ||||
|                     }, | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         tabline = { | ||||
|             lualine_a = { | ||||
|             { | ||||
|                 'buffers', | ||||
|                 show_filename_only = true,   -- Shows shortened relative path when set to false. | ||||
|                 hide_filename_extension = false,   -- Hide filename extension when set to true. | ||||
|                 show_modified_status = true, -- Shows indicator when the buffer is modified. | ||||
|  | ||||
|                 mode = 4, -- 0: Shows buffer name | ||||
|                           -- 1: Shows buffer index | ||||
|                           -- 2: Shows buffer name + buffer index | ||||
|                           -- 3: Shows buffer number | ||||
|                           -- 4: Shows buffer name + buffer number | ||||
|  | ||||
|                 max_length = vim.o.columns * 2 / 3, -- Maximum width of buffers component, | ||||
|                                                     -- it can also be a function that returns | ||||
|                                                     -- the value of `max_length` dynamically. | ||||
|  | ||||
|                 symbols = { | ||||
|                     modified = ' ●',        -- Text to show when the buffer is modified | ||||
|                     alternate_file = ' ↻',  -- Text to show to identify the alternate file | ||||
|                     directory =  '',       -- Text to show when the buffer is a directory | ||||
|                 }, | ||||
|             }} | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     -- Personal keymapping | ||||
|     vim.api.nvim_set_keymap('n',    '<c-z>',        ':bn<CR>',          { noremap = 1 }) | ||||
|     vim.api.nvim_set_keymap('v',    '<c-z>',        ':bn<CR>',          { noremap = 1 }) | ||||
|     vim.api.nvim_set_keymap('n',    '<c-x>',        ':bp<CR>',          { noremap = 1 }) | ||||
|     vim.api.nvim_set_keymap('n',    '<F5>',         ':e<CR>',           { noremap = 1 }) | ||||
|     vim.api.nvim_set_keymap('n',    '<F6>',         '<C-W>w',           { noremap = 1 }) | ||||
|     vim.api.nvim_set_keymap('n',    '<F18>',        '<C-W>W',           { noremap = 1 }) -- S-F6 (F18 defined in ST's config.h) | ||||
|     vim.api.nvim_set_keymap('n',    '<F7>',         '<C-W>o',           { noremap = 1 }) | ||||
|     vim.api.nvim_set_keymap('n',    '<F8>',         '<C-W>v',           { noremap = 1 }) | ||||
|     vim.api.nvim_set_keymap('n',    '<F20>',        '<C-W>s',           { noremap = 1 }) -- S-F8 (F20 defined in ST's config.h) | ||||
|     vim.api.nvim_set_keymap('n',    '<F35>',        ':confirm bd<CR>',  { noremap = 1 }) -- C-F11 (F35 defined in ST's config.h) | ||||
|     vim.api.nvim_set_keymap('v',    '<LeftRelease>','"*ygv',            { noremap = 1 }) -- Copy selection to clipboard | ||||
|     vim.api.nvim_set_keymap('v',    '<2-LeftRelease>','"*ygv',          { noremap = 1 }) -- Copy word selection to clipboard | ||||
|     vim.api.nvim_set_keymap('v',    '<3-LeftRelease>','"*ygv',          { noremap = 1 }) -- Copy line selection to clipboard | ||||
|     vim.api.nvim_set_keymap('v',    '<4-LeftRelease>','"*ygv',          { noremap = 1 }) -- Copy column selection to clipboard | ||||
|     vim.api.nvim_set_keymap('v',    '<c-r>',        '"hy/<C-r>h<cr>',   { noremap = 1 }) -- Search selected text | ||||
|     vim.api.nvim_set_keymap('n',    '<c-Space>',    'za',               { noremap = 1 }) -- Toggle fold | ||||
|     vim.api.nvim_set_keymap('v',    '<',            '<gv',              { noremap = 1 }) -- Preserve selection after left indent | ||||
|     vim.api.nvim_set_keymap('v',    '>',            '>gv',              { noremap = 1 }) -- Preserve selection after right indent | ||||
|     vim.api.nvim_set_keymap('v',    'Q',            'gqap',             { noremap = 1 }) -- Reflow visually highlighted lines with Q | ||||
|     vim.api.nvim_set_keymap('n',    'Q',            'gq',               { noremap = 1 }) -- Reflow text | ||||
|  | ||||
|     -- Nerd Tree (File navigation) | ||||
|     use 'preservim/nerdtree' | ||||
|     vim.api.nvim_set_keymap('n', '<c-t>', ':NERDTreeToggle %<CR>', { noremap = 1 }) | ||||
|     vim.g.NERDTreeShowBookmarks     = 1 | ||||
|     vim.g.NERDTreeIgnore            = {'\\.py[cd]$', '\\~$', '\\.swo$', '\\.swp$', | ||||
|                                        '^\\.git$', '^\\.hg$', '^\\.svn$', '\\.bzr$'} | ||||
|     vim.g.NERDTreeChDirMode         = 3 | ||||
|     vim.g.NERDTreeQuitOnOpen        = 1 | ||||
|     vim.g.NERDTreeMouseMode         = 2 | ||||
|     vim.g.NERDTreeShowHidden        = 1 | ||||
|     vim.g.NERDTreeKeepTreeInNewTab  = 1 | ||||
|     vim.g.nerdtree_tabs_open_on_gui_startup = 0 | ||||
|  | ||||
|     -- Indent and brackets | ||||
|     use 'jiangmiao/auto-pairs' | ||||
|     use 'luochen1990/rainbow' | ||||
|     use 'tpope/vim-surround' | ||||
|     use 'nathanaelkane/vim-indent-guides' | ||||
|  | ||||
|     use { -- LSP Configuration & Plugins | ||||
|         'neovim/nvim-lspconfig', | ||||
|         requires = { | ||||
|             -- Automatically install LSPs to stdpath for neovim | ||||
|             'williamboman/mason.nvim', | ||||
|             'williamboman/mason-lspconfig.nvim', | ||||
|  | ||||
|             -- Useful status updates for LSP | ||||
|             'j-hui/fidget.nvim', | ||||
|         }, | ||||
|     } | ||||
|  | ||||
|     use { -- Autocompletion | ||||
|         'hrsh7th/nvim-cmp', | ||||
|         requires = { 'hrsh7th/cmp-nvim-lsp', 'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip' }, | ||||
|     } | ||||
|  | ||||
|     use { -- Highlight, edit, and navigate code | ||||
|         'nvim-treesitter/nvim-treesitter', | ||||
|         run = function() | ||||
|             pcall(require('nvim-treesitter.install').update { with_sync = true }) | ||||
|         end, | ||||
|     } | ||||
|  | ||||
|     use { -- Additional text objects via treesitter | ||||
|         'nvim-treesitter/nvim-treesitter-textobjects', | ||||
|         after = 'nvim-treesitter', | ||||
|     } | ||||
|  | ||||
|     -- Git related plugins | ||||
|     use 'tpope/vim-fugitive' | ||||
|     use 'mhinz/vim-signify' | ||||
|     use 'tpope/vim-rhubarb' | ||||
|     use 'lewis6991/gitsigns.nvim' | ||||
|  | ||||
|     use 'mg979/vim-visual-multi' | ||||
|     -- use 'lukas-reineke/indent-blankline.nvim' -- Add indentation guides even on blank lines | ||||
|     use 'numToStr/Comment.nvim' -- "gc" to comment visual regions/lines | ||||
|     use 'tpope/vim-sleuth' -- Detect tabstop and shiftwidth automatically | ||||
|  | ||||
|     -- Fuzzy Finder (files, lsp, etc) | ||||
|     use { 'nvim-telescope/telescope.nvim', branch = '0.1.x', requires = { 'nvim-lua/plenary.nvim' } } | ||||
|  | ||||
|     -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available | ||||
|     use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = vim.fn.executable 'make' == 1 } | ||||
|  | ||||
|     -- Add custom plugins to packer from ~/.config/nvim/lua/custom/plugins.lua | ||||
|     local has_plugins, plugins = pcall(require, 'custom.plugins') | ||||
|     if has_plugins then | ||||
|         plugins(use) | ||||
|     end | ||||
|  | ||||
|     if is_bootstrap then | ||||
|         require('packer').sync() | ||||
|     end | ||||
| end) | ||||
|  | ||||
| -- When we are bootstrapping a configuration, it doesn't | ||||
| -- make sense to execute the rest of the init.lua. | ||||
| -- | ||||
| -- You'll need to restart nvim, and then it will work. | ||||
| if is_bootstrap then | ||||
|     print '==================================' | ||||
|     print '    Plugins are being installed' | ||||
|     print '    Wait until Packer completes,' | ||||
|     print '       then restart nvim' | ||||
|     print '==================================' | ||||
|     return | ||||
| end | ||||
|  | ||||
| -- Automatically source and re-compile packer whenever you save this init.lua | ||||
| local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true }) | ||||
| vim.api.nvim_create_autocmd('BufWritePost', { | ||||
|     command = 'source <afile> | PackerCompile', | ||||
|     group = packer_group, | ||||
|     pattern = vim.fn.expand '$MYVIMRC', | ||||
| }) | ||||
|  | ||||
| -- [[ Setting options ]] | ||||
| -- See `:help vim.o` | ||||
|  | ||||
| -- Set highlight on search | ||||
| vim.o.hlsearch = true | ||||
|  | ||||
| -- Highlight problematic whitespace | ||||
| vim.o.list = true | ||||
| vim.opt.listchars = { tab = '▶ ', trail = '●', extends = '#', nbsp = '.' } | ||||
|  | ||||
| -- Make line numbers default | ||||
| vim.wo.number = true | ||||
|  | ||||
| -- Enable mouse mode | ||||
| vim.o.mouse = 'a' | ||||
|  | ||||
| -- Enable break indent | ||||
| vim.o.breakindent = true | ||||
|  | ||||
| -- Save undo history | ||||
| vim.o.undofile = true | ||||
|  | ||||
| -- Case insensitive searching UNLESS /C or capital in search | ||||
| vim.o.ignorecase = true | ||||
| vim.o.smartcase = true | ||||
|  | ||||
| -- Decrease update time | ||||
| vim.o.updatetime = 250 | ||||
| vim.wo.signcolumn = 'yes' | ||||
|  | ||||
| -- Set colorscheme | ||||
| vim.o.termguicolors = true | ||||
| vim.cmd [[colorscheme onedark]] | ||||
|  | ||||
| -- Set completeopt to have a better completion experience | ||||
| vim.o.completeopt = 'menuone,noselect' | ||||
|  | ||||
| -- Do not auto read file when in focus | ||||
| vim.o.autoread = false | ||||
|  | ||||
| -- [[ Basic Keymaps ]] | ||||
| -- Set <space> as the leader key | ||||
| -- See `:help mapleader` | ||||
| --    NOTE: Must happen before plugins are required (otherwise wrong leader will be used) | ||||
| vim.g.mapleader = ',' | ||||
| vim.g.maplocalleader = ',' | ||||
|  | ||||
| -- Keymaps for better default experience | ||||
| -- See `:help vim.keymap.set()` | ||||
| vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true }) | ||||
|  | ||||
| -- Remap for dealing with word wrap | ||||
| vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) | ||||
| vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) | ||||
|  | ||||
| -- [[ Highlight on yank ]] | ||||
| -- See `:help vim.highlight.on_yank()` | ||||
| local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) | ||||
| vim.api.nvim_create_autocmd('TextYankPost', { | ||||
|     callback = function() | ||||
|         vim.highlight.on_yank() | ||||
|     end, | ||||
|     group = highlight_group, | ||||
|     pattern = '*', | ||||
| }) | ||||
|  | ||||
| -- Enable Comment.nvim | ||||
| require('Comment').setup() | ||||
|  | ||||
| -- Gitsigns | ||||
| -- See `:help gitsigns.txt` | ||||
| require('gitsigns').setup { | ||||
|     signs = { | ||||
|         add = { text = '+' }, | ||||
|         change = { text = '~' }, | ||||
|         delete = { text = '_' }, | ||||
|         topdelete = { text = '‾' }, | ||||
|         changedelete = { text = '~' }, | ||||
|     }, | ||||
| } | ||||
|  | ||||
| -- [[ Configure Telescope ]] | ||||
| -- See `:help telescope` and `:help telescope.setup()` | ||||
| require('telescope').setup { | ||||
|     defaults = { | ||||
|         mappings = { | ||||
|             i = { | ||||
|                 ['<C-u>'] = false, | ||||
|                 ['<C-d>'] = false, | ||||
|             }, | ||||
|         }, | ||||
|     }, | ||||
| } | ||||
|  | ||||
| -- Enable telescope fzf native, if installed | ||||
| pcall(require('telescope').load_extension, 'fzf') | ||||
|  | ||||
| -- See `:help telescope.builtin` | ||||
| vim.keymap.set('n', '<ldeader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) | ||||
| vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) | ||||
| vim.keymap.set('n', '<leader>/', function() | ||||
|     -- You can pass additional configuration to telescope to change theme, layout, etc. | ||||
|     require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { | ||||
|         winblend = 10, | ||||
|         previewer = false, | ||||
|     }) | ||||
| end, { desc = '[/] Fuzzily search in current buffer]' }) | ||||
|  | ||||
| vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) | ||||
| vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) | ||||
| vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) | ||||
| vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) | ||||
| vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) | ||||
|  | ||||
| -- [[ Configure Treesitter ]] | ||||
| -- See `:help nvim-treesitter` | ||||
| require('nvim-treesitter.configs').setup { | ||||
|     -- Add languages to be installed here that you want installed for treesitter | ||||
|     ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'typescript', 'help', 'perl', 'ruby', 'verilog' }, | ||||
|  | ||||
|     highlight = { enable = true }, | ||||
|     indent = { enable = true }, | ||||
|     incremental_selection = { | ||||
|         enable = true, | ||||
|         keymaps = { | ||||
|             init_selection = '<c-space>', | ||||
|             node_incremental = '<c-space>', | ||||
|             scope_incremental = '<c-s>', | ||||
|             node_decremental = '<c-backspace>', | ||||
|         }, | ||||
|     }, | ||||
|     textobjects = { | ||||
|         select = { | ||||
|             enable = true, | ||||
|             lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim | ||||
|             keymaps = { | ||||
|                 -- You can use the capture groups defined in textobjects.scm | ||||
|                 ['aa'] = '@parameter.outer', | ||||
|                 ['ia'] = '@parameter.inner', | ||||
|                 ['af'] = '@function.outer', | ||||
|                 ['if'] = '@function.inner', | ||||
|                 ['ac'] = '@class.outer', | ||||
|                 ['ic'] = '@class.inner', | ||||
|             }, | ||||
|         }, | ||||
|         move = { | ||||
|             enable = true, | ||||
|             set_jumps = true, -- whether to set jumps in the jumplist | ||||
|             goto_next_start = { | ||||
|                 [']m'] = '@function.outer', | ||||
|                 [']]'] = '@class.outer', | ||||
|             }, | ||||
|             goto_next_end = { | ||||
|                 [']M'] = '@function.outer', | ||||
|                 [']['] = '@class.outer', | ||||
|             }, | ||||
|             goto_previous_start = { | ||||
|                 ['[m'] = '@function.outer', | ||||
|                 ['[['] = '@class.outer', | ||||
|             }, | ||||
|             goto_previous_end = { | ||||
|                 ['[M'] = '@function.outer', | ||||
|                 ['[]'] = '@class.outer', | ||||
|             }, | ||||
|         }, | ||||
|         swap = { | ||||
|             enable = true, | ||||
|             swap_next = { | ||||
|                 ['<leader>a'] = '@parameter.inner', | ||||
|             }, | ||||
|             swap_previous = { | ||||
|                 ['<leader>A'] = '@parameter.inner', | ||||
|             }, | ||||
|         }, | ||||
|     }, | ||||
| } | ||||
|  | ||||
| -- Diagnostic keymaps | ||||
| vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) | ||||
| vim.keymap.set('n', ']d', vim.diagnostic.goto_next) | ||||
| vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float) | ||||
| vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist) | ||||
|  | ||||
| -- LSP settings. | ||||
| --    This function gets run when an LSP connects to a particular buffer. | ||||
| local on_attach = function(_, bufnr) | ||||
|     -- NOTE: Remember that lua is a real programming language, and as such it is possible | ||||
|     -- to define small helper and utility functions so you don't have to repeat yourself | ||||
|     -- many times. | ||||
|     -- | ||||
|     -- In this case, we create a function that lets us more easily define mappings specific | ||||
|     -- for LSP related items. It sets the mode, buffer and description for us each time. | ||||
|     local nmap = function(keys, func, desc) | ||||
|         if desc then | ||||
|             desc = 'LSP: ' .. desc | ||||
|         end | ||||
|  | ||||
|         vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) | ||||
|     end | ||||
|  | ||||
|     nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') | ||||
|     nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') | ||||
|  | ||||
|     nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') | ||||
|     nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') | ||||
|     nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation') | ||||
|     nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition') | ||||
|     nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') | ||||
|     nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') | ||||
|  | ||||
|     -- See `:help K` for why this keymap | ||||
|     nmap('K', vim.lsp.buf.hover, 'Hover Documentation') | ||||
|     nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation') | ||||
|  | ||||
|     -- Lesser used LSP functionality | ||||
|     nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') | ||||
|     nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') | ||||
|     nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') | ||||
|     nmap('<leader>wl', function() | ||||
|         print(vim.inspect(vim.lsp.buf.list_workspace_folders())) | ||||
|     end, '[W]orkspace [L]ist Folders') | ||||
|  | ||||
|     -- Create a command `:Format` local to the LSP buffer | ||||
|     vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) | ||||
|         if vim.lsp.buf.format then | ||||
|             vim.lsp.buf.format() | ||||
|         elseif vim.lsp.buf.formatting then | ||||
|             vim.lsp.buf.formatting() | ||||
|         end | ||||
|     end, { desc = 'Format current buffer with LSP' }) | ||||
| end | ||||
|  | ||||
| -- Setup mason so it can manage external tooling | ||||
| require('mason').setup() | ||||
|  | ||||
| -- Enable the following language servers | ||||
| -- Feel free to add/remove any LSPs that you want here. They will automatically be installed | ||||
| -- local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver', 'lua_ls', 'gopls' } | ||||
| local servers = { 'rust_analyzer', 'pyright', 'lua_ls', 'gopls', 'perlnavigator', 'bashls' } | ||||
|  | ||||
| -- Ensure the servers above are installed | ||||
| require('mason-lspconfig').setup { | ||||
|     ensure_installed = servers, | ||||
| } | ||||
|  | ||||
| -- nvim-cmp supports additional completion capabilities | ||||
| local capabilities = vim.lsp.protocol.make_client_capabilities() | ||||
| capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) | ||||
|  | ||||
| for _, lsp in ipairs(servers) do | ||||
|     require('lspconfig')[lsp].setup { | ||||
|         on_attach = on_attach, | ||||
|         capabilities = capabilities, | ||||
|     } | ||||
| end | ||||
|  | ||||
| -- Turn on lsp status information | ||||
| require('fidget').setup() | ||||
|  | ||||
| -- Example custom configuration for lua | ||||
| -- | ||||
| -- Make runtime files discoverable to the server | ||||
| local runtime_path = vim.split(package.path, ';') | ||||
| table.insert(runtime_path, 'lua/?.lua') | ||||
| table.insert(runtime_path, 'lua/?/init.lua') | ||||
|  | ||||
| require('lspconfig').lua_ls.setup { | ||||
|     on_attach = on_attach, | ||||
|     capabilities = capabilities, | ||||
|     settings = { | ||||
|         Lua = { | ||||
|             runtime = { | ||||
|                 -- Tell the language server which version of Lua you're using (most likely LuaJIT) | ||||
|                 version = 'LuaJIT', | ||||
|                 -- Setup your lua path | ||||
|                 path = runtime_path, | ||||
|             }, | ||||
|             diagnostics = { | ||||
|                 globals = { 'vim' }, | ||||
|             }, | ||||
|             workspace = { | ||||
|                 library = vim.api.nvim_get_runtime_file('', true), | ||||
|                 checkThirdParty = false, | ||||
|             }, | ||||
|             -- Do not send telemetry data containing a randomized but unique identifier | ||||
|             telemetry = { enable = false }, | ||||
|         }, | ||||
|     }, | ||||
| } | ||||
|  | ||||
| -- nvim-cmp setup | ||||
| local cmp = require 'cmp' | ||||
| local luasnip = require 'luasnip' | ||||
|  | ||||
| cmp.setup { | ||||
|     snippet = { | ||||
|         expand = function(args) | ||||
|             luasnip.lsp_expand(args.body) | ||||
|         end, | ||||
|     }, | ||||
|     mapping = cmp.mapping.preset.insert { | ||||
|         ['<C-d>'] = cmp.mapping.scroll_docs(-4), | ||||
|         ['<C-f>'] = cmp.mapping.scroll_docs(4), | ||||
|         ['<C-Space>'] = cmp.mapping.complete(), | ||||
|         ['<CR>'] = cmp.mapping.confirm { | ||||
|             behavior = cmp.ConfirmBehavior.Replace, | ||||
|             select = true, | ||||
|         }, | ||||
|         ['<Tab>'] = cmp.mapping(function(fallback) | ||||
|             if cmp.visible() then | ||||
|                 cmp.select_next_item() | ||||
|             elseif luasnip.expand_or_jumpable() then | ||||
|                 luasnip.expand_or_jump() | ||||
|             else | ||||
|                 fallback() | ||||
|             end | ||||
|         end, { 'i', 's' }), | ||||
|         ['<S-Tab>'] = cmp.mapping(function(fallback) | ||||
|             if cmp.visible() then | ||||
|                 cmp.select_prev_item() | ||||
|             elseif luasnip.jumpable(-1) then | ||||
|                 luasnip.jump(-1) | ||||
|             else | ||||
|                 fallback() | ||||
|             end | ||||
|         end, { 'i', 's' }), | ||||
|     }, | ||||
|     sources = { | ||||
|         { name = 'nvim_lsp' }, | ||||
|         { name = 'luasnip' }, | ||||
|     }, | ||||
| } | ||||
|  | ||||
| -- The line beneath this is called `modeline`. See `:help modeline` | ||||
| -- vim: ts=4 sts=4 sw=4 et | ||||
							
								
								
									
										23
									
								
								user.conkyrc
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								user.conkyrc
									
									
									
									
									
								
							| @@ -36,20 +36,25 @@ conky.config = { | ||||
|     use_spacer = 'left', | ||||
| } | ||||
|  | ||||
| --[[ For Somebar ]] | ||||
| conky.text = [[ | ||||
| ${if_existing /usr/local/bin/somebar}status${endif} \ | ||||
| 💻 ${cpu}% | \ | ||||
| 💾 ${memperc}% | \ | ||||
| ${if_existing /sys/class/net/enp3s0/operstate up}🌐 ${addr enp3s0}${else}\ | ||||
| 💻 ${cpu}% \ | ||||
| 💾 ${memperc}% \ | ||||
| ${if_existing /sys/class/net/enp3s0/operstate up}🌎 ${addr enp3s0}${else}\ | ||||
| ${if_existing /sys/class/net/wlp4s0/operstate up}📶 ${addr wlp4s0}${else}\ | ||||
| ${if_up eth0}🌐 ${addr eth0}${else}\ | ||||
| network down ${endif}${endif}${endif} | \ | ||||
| ${execi 600 curl wttr.in/~45.54,-122.83?format="%c%t"} | \ | ||||
| 🔊 ${execi 10 amixer get Master | tail -1 | sed 's/.*\[\([0-9]*%\)\].*/\1/'} | \ | ||||
| 🔋 ${battery_percent}% | \ | ||||
| ${time %Y %h %d %I:%M%p %Z} | ||||
| ${if_up eth0}🌎 ${addr eth0}${else}\ | ||||
| network down ${endif}${endif}${endif} \ | ||||
| ${execi 600 curl wttr.in/~45.54,-122.83?format="%c%t"} \ | ||||
| 🔊 ${execi 10 amixer get Master | tail -1 | sed 's/.*\[\([0-9]*%\)\].*/\1/'} \ | ||||
| 🔋 ${battery_percent}% \ | ||||
| 📅 ${time %Y %h %d} \ | ||||
| 🕑 ${time %I:%M%p %Z} | ||||
| ]] | ||||
| --[[ | ||||
| Reference | ||||
|  | ||||
|  | ||||
| 🌡 ${execi 600 weather fips4105192520 | grep Tempera | awk '{print $2}'}°F | \ | ||||
| ${execi 1 cat /tmp/dwl.tags.out} | \ | ||||
| 🌦 ${weather http://weather.noaa.gov/pub/data/observations/metar/stations/ KHIO temperature 10} | \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user