diff --git a/dotfiles/.zsh_aliases b/dotfiles/.zsh_aliases index 786d294..5bfa60d 100644 --- a/dotfiles/.zsh_aliases +++ b/dotfiles/.zsh_aliases @@ -16,3 +16,9 @@ alias ls="exa" alias la="exa -a" alias lal="exa -al" alias tree="exa --tree" +if [[ $XDG_SESSION_TYPE = 'wayland' ]]; then + alias clip="wl-copy" +else + alias clip="xclip -selection clipboard" +fi +alias 2fa="TOKEN=\$(yad --title=\"Authy\" --text=\"What code would you like to copy?\" --entry) && mambembe-cli get-token --service-name \$TOKEN | tr -dc '0-9' | clip" diff --git a/dotfiles/neofetch/config.conf b/dotfiles/neofetch/config.conf index b911ff6..53d552a 100644 --- a/dotfiles/neofetch/config.conf +++ b/dotfiles/neofetch/config.conf @@ -24,7 +24,7 @@ print_info() { # info "GPU Driver" gpu_driver # Linux/macOS only # info "CPU Usage" cpu_usage - # info "Disk" disk + info "Disk" disk # info "Battery" battery info "Font" font # info "Song" song diff --git a/dotfiles/nvim/init.vim b/dotfiles/nvim/init.vim new file mode 100644 index 0000000..0f0d97c --- /dev/null +++ b/dotfiles/nvim/init.vim @@ -0,0 +1,279 @@ +call plug#begin() +Plug 'liuchengxu/space-vim-dark' +Plug 'vim-airline/vim-airline' +Plug 'wlangstroth/vim-racket' +Plug 'sheerun/vim-polyglot' +Plug 'leafgarland/typescript-vim' +Plug 'rust-lang/rust.vim' +Plug 'preservim/tagbar' +Plug 'universal-ctags/ctags' +Plug 'luochen1990/rainbow' +Plug 'vim-syntastic/syntastic' +Plug 'itchyny/lightline.vim' +Plug 'tpope/vim-surround' +Plug 'neoclide/coc.nvim', { 'branch': 'release' } +Plug 'tommcdo/vim-lion' +Plug 'Shirk/vim-gas' +Plug 'ntpeters/vim-better-whitespace' +call plug#end() + +" Get syntax files from config folder +set runtimepath+=~/.config/nvim/syntax + +" Theme +colorscheme space-vim-dark +hi Normal ctermbg=NONE guibg=NONE +hi LineNr ctermbg=NONE guibg=NONE +hi SignColumn ctermbg=NONE guibg=NONE +hi Comment guifg=#5C6370 ctermfg=59 + +" Disable C-z from job-controlling neovim +nnoremap + +" Remap C-c to +nmap +imap +vmap +omap + +" Syntax highlighting +syntax on + +" Position in code +set number +set ruler + +" Don't make noise +set visualbell + +" default file encoding +set encoding=utf-8 + +" Line wrap +set wrap + +" Function to set tab width to n spaces +function! SetTab(n) + let &l:tabstop=a:n + let &l:softtabstop=a:n + let &l:shiftwidth=a:n + set expandtab +endfunction + +command! -nargs=1 SetTab call SetTab() + +" Function to trim extra whitespace in whole file +function! Trim() + let l:save = winsaveview() + keeppatterns %s/\s\+$//e + call winrestview(l:save) +endfun + +command! -nargs=0 Trim call Trim() + +set laststatus=2 + +" Highlight search results +set hlsearch +set incsearch + +" auto + smart indent for code +set autoindent +set smartindent + +set t_Co=256 + +" ASM == JDH8 +augroup jdh8_ft + au! + autocmd BufNewFile,BufRead *.asm set filetype=jdh8 +augroup END + +" SQL++ == SQL +augroup sqlpp_ft + au! + autocmd BufNewFile,BufRead *.sqlp set syntax=sql +augroup END + +" .S == gas +augroup gas_ft + au! + autocmd BufNewFile,BufRead *.S set syntax=gas +augroup END + +" JFlex syntax highlighting + augroup jfft + au BufRead,BufNewFile *.flex,*.jflex set filetype=jflex + augroup END + au Syntax jflex so ~/.vim/syntax/jflex.vim + + " Mouse support + set mouse=a + + " Map F8 to Tagbar + nmap :TagbarToggle + + " CTags config + let g:Tlist_Ctags_Cmd='/usr/local/Cellar/ctags/5.8_1/bin/ctags' + + " disable backup files + set nobackup + set nowritebackup + + " no delays! + set updatetime=300 + + set cmdheight=1 + set shortmess+=c + + set signcolumn=yes + +" Use tab for trigger completion with characters ahead and navigate. +" NOTE: Use command ':verbose imap ' to make sure tab is not mapped by +" other plugin before putting this into your config. +inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() +inoremap pumvisible() ? "\" : "\" + +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + +" Use to trigger completion. +if has('nvim') + inoremap coc#refresh() +else + inoremap coc#refresh() +endif + +" Make auto-select the first completion item and notify coc.nvim to +" format on enter, could be remapped by other vim plugin +"inoremap pumvisible() ? coc#_select_confirm() +" \: "\u\\=coc#on_enter()\" + +" Use `[g` and `]g` to navigate diagnostics +" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. +nmap [g (coc-diagnostic-prev) +nmap ]g (coc-diagnostic-next) + +" GoTo code navigation. +nmap gd (coc-definition) +nmap gy (coc-type-definition) +nmap gi (coc-implementation) +nmap gr (coc-references) + +" Use K to show documentation in preview window. +nnoremap K :call show_documentation() + +function! s:show_documentation() + if (index(['vim','help'], &filetype) >= 0) + execute 'h '.expand('') + elseif (coc#rpc#ready()) + call CocActionAsync('doHover') + else + execute '!' . &keywordprg . " " . expand('') + endif +endfunction + +" Highlight the symbol and its references when holding the cursor. +autocmd CursorHold * silent call CocActionAsync('highlight') + +" Symbol renaming. +nmap rn (coc-rename) + +" Formatting selected code. +xmap f (coc-format-selected) +nmap f (coc-format-selected) + +augroup mygroup + autocmd! + " Setup formatexpr specified filetype(s). + autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') + " Update signature help on jump placeholder. + autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') +augroup end + +" Applying codeAction to the selected region. +" Example: `aap` for current paragraph +xmap a (coc-codeaction-selected) +nmap a (coc-codeaction-selected) + +" Remap keys for applying codeAction to the current buffer. +nmap ac (coc-codeaction) +" Apply AutoFix to problem on the current line. +nmap qf (coc-fix-current) + +" Map function and class text objects +" NOTE: Requires 'textDocument.documentSymbol' support from the language server. +xmap if (coc-funcobj-i) +omap if (coc-funcobj-i) +xmap af (coc-funcobj-a) +omap af (coc-funcobj-a) +xmap ic (coc-classobj-i) +omap ic (coc-classobj-i) +xmap ac (coc-classobj-a) +omap ac (coc-classobj-a) + +" Remap and for scroll float windows/popups. +if has('nvim-0.4.0') || has('patch-8.2.0750') + nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" +endif + +" Use CTRL-S for selections ranges. +" Requires 'textDocument/selectionRange' support of language server. +nmap (coc-range-select) +xmap (coc-range-select) + +" Add `:Format` command to format current buffer. +command! -nargs=0 Format :call CocAction('format') + +" Add `:Fold` command to fold current buffer. +command! -nargs=? Fold :call CocAction('fold', ) + +" Add `:OR` command for organize imports of the current buffer. +command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') + +" Add (Neo)Vim's native statusline support. +" NOTE: Please see `:h coc-status` for integrations with external plugins that +" provide custom statusline: lightline.vim, vim-airline. +set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} + +" Mappings for CoCList +" Show all diagnostics. +nnoremap a :CocList diagnostics +" Manage extensions. +nnoremap e :CocList extensions +" Show commands. +nnoremap c :CocList commands +" Find symbol of current document. +nnoremap o :CocList outline +" Search workspace symbols. +nnoremap s :CocList -I symbols +" Do default action for next item. +nnoremap j :CocNext +" Do default action for previous item. +nnoremap k :CocPrev +" Resume latest coc list. +nnoremap p :CocListResume + +" add cocstatus into lightline +let g:lightline = { + \ 'colorscheme': 'wombat', + \ 'active': { + \ 'left': [ [ 'mode', 'paste' ], + \ [ 'cocstatus', 'readonly', 'filename', 'modified' ] ] + \ }, + \ 'component_function': { + \ 'cocstatus': 'coc#status' + \ }, + \ } + +autocmd User CocStatusChange,CocDiagnosticChange call lightline#update()