From 6697092099efd42daee681cc3f81f68a92ab4d8b Mon Sep 17 00:00:00 2001 From: mehbark Date: Sun, 13 Aug 2023 22:57:02 -0400 Subject: [PATCH] initial --- configuration.nix | 135 ++++++++ hardware-configuration.nix | 40 +++ home.nix | 634 +++++++++++++++++++++++++++++++++++++ 3 files changed, 809 insertions(+) create mode 100644 configuration.nix create mode 100644 hardware-configuration.nix create mode 100644 home.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..9f841a3 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,135 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ./home.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot/efi"; + + networking.hostName = "nix"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/New_York"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.mbk = { + isNormalUser = true; + description = "mehbark"; + extraGroups = [ "networkmanager" "wheel" ]; + }; + + # services.emacs.enable = true; + # services.emacs.package = import /home/mbk/.emacs.d { pkgs = pkgs; }; + # services.emacs.defaultEditor = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + neovim + wget + unzip + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + environment.variables.EDITOR = "nvim"; + environment.variables.SHELL = "fish"; + environment.variables.TERM = "kitty"; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "22.11"; # Did you read the comment? +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..4552b0e --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,40 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "ehci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/bbba7906-baa7-41e2-b744-82d1017b1496"; + fsType = "ext4"; + }; + + fileSystems."/boot/efi" = + { device = "/dev/disk/by-uuid/C50D-A980"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/3fdd00f2-308d-43aa-9168-70a192be1e3e"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.opengl.driSupport32Bit = true; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..52a7474 --- /dev/null +++ b/home.nix @@ -0,0 +1,634 @@ +{ config, pkgs, ... }: +{ + imports = [ + + ]; + + home-manager.users.mbk = {pkgs, ...}: { + /* The home.stateVersion option does not have a default and must be set */ + home.stateVersion = "18.09"; + home.packages = with pkgs; [ + firefox + clojure + deno + kitty + # bsdgames + fortune + cowsay + git + sbcl + lispPackages.trivia + # lutris + # mono5 + nethack + chezmoi + # wineWowPackages.stable + # winetricks + # foliate + # thunderbird + starship + exa + ]; + + programs.fish = { + enable = true; + + shellInit = '' + #### BEGIN ALIASES #### + alias v='nvim' + + alias vcf="v ~/.config/nvim/init.vim" + + alias vw='nvim ~/vimwiki/index.wiki; commit-vimwiki' + + function commit-vimwiki --description "go to and from the vimwiki directory, commit with message (to encourage uh, good stuff, and go back" + cd ~/vimwiki + git add * + git commit + prevd + end + + alias vt='nvim ~/vimwiki/Tasks.wiki' + + alias vwo="firefox ~/vimwiki_html/index.html" + alias vwr="nvim -c "VimwikiAll2HTML" -c "q" ~/vimwiki/index.wiki" + alias nv='neovide' + # alias hx='helix' + alias lv="~/.local/bin/lvim" + alias e='emacs' + alias ce='code .' + alias se="serve ." + alias co='code --reuse-window' + alias ok='okular' + alias ko='kitty .' + alias du="du -h --total" + + #exa + alias ls="exa" + alias tree="exa --tree -I target" + + # some more ls aliases + # alias ls='ls --color=always' + alias ll='ls -alF' + alias la='ls -a' + alias l='ls -CF' + + #some cargo aliases :) + alias c='cargo' + alias cn='cargo new' + alias cnl='cargo new --lib' + alias ci='cargo init' + alias cr='cargo run' + alias cb='cargo build' + alias ct='cargo test' + alias cv='cargo clippy' + alias cf='cargo flamegraph' + alias cff='cargo flamegraph;firefox flamegraph.svg' + alias cvp='cargo clippy -- -W clippy::pedantic' + alias cw="cargo watch -c --poll -x 'clippy -- -W clippy::pedantic'" + alias cwr='cargo watch -c -x run' + alias cwt='cargo watch -c -x test' + alias cbr='cargo build --release' + alias crr='cargo run --release' + alias crd="cargo rustdoc" + alias cft="cargo fmt" + alias cdc="cargo doc; firefox target/doc/settings.html" + + #general rust aliases + alias rft='rustfmt' + + #git aliases + alias g="git" + alias gcs="batcat -p -l bash /home/mehbark/main/misc/gitCliCheatSheet.js" + alias gco="git checkout" + alias gb="git branch" + alias gc="git commit -m" + alias gst="git status" + alias ga="git add" + alias gp="git push" + alias gl='git log --oneline --graph --decorate --all' + alias gi='git init' + + #more complex aliases + alias ri="git init; cargo init" + alias rn="new_cargo_quick" + alias ka="killall -r '.*'" + + function new_cargo_quick --description "make a cargo project with git version control, cd to it and open vscode" + mkdir "$argv[1]" + cd "$argv[1]" + git init + cargo init + code . + end + + function speed-up --description "take arg 1, speed it up by arg 3 and output it to arg 2" + echo "$argv[1]" + mencoder -o "$argv[2]" -speed "$argv[3]" -ovc lavc -oac lavc "$argv[1]" + end + + alias doom='~/.config/emacs/bin/doom' + alias pipers='pipes-rs' + alias yt='yt-dlp' + alias compile_and_serve="cargo run --quiet --release example_in example_out;cd example_out;serve;cd .." + alias icat="kitty +kitten icat" + + alias do="dolphin . &> /dev/null &" + + #homestuck + alias hnav "source /home/mbk/hs/bin/hsnav" + alias hstree "tree ~/hs" + alias codestuck "code ~/hs" + + function m + mkdir $argv[1] + cd $argv[1] + end + + function playflac + flac -c -d $argv | aplay + end + + function filelink + echo "file://$(realpath $argv)" + end + alias xpy '~/Aims/rust/x.py' + alias sbcl "rlwrap sbcl" + alias guile "rlwrap guile" + #alias clj 'clojure -Sdeps "{:deps {com.bhauman/rebel-readline {:mvn/version \"0.1.4\"} $args}}" -m rebel-readline.main' + alias csi "rlwrap chicken-csi" + + # zig + alias zb "zig build" + alias zbr "zig build run" + alias zbt "zig build test" + + # nix + alias nrb "sudo nixos-rebuild" + #### END ALIASES #### + export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$HOME/.local/bin:$HOME/.emacs.d/bin:$PATH:$HOME/.ghcup/bin:$HOME/.cabal/bin:$HOME/hs/bin:$HOME/.cargo/bin:$HOME/.deno/bin:$HOME/Aims/curlfire" + + # [ -f ~/.fzf.bash ] && source ~/.fzf.bash + # setopt autocd + fish_vi_key_bindings + fish_vi_cursor + starship init fish | source + export RUSTC_FORCE_INCREMENTAL=1 + export EDITOR="nvim" + export TROLLNAMES_PATH="/home/mbk/hs/content/mine/trollname/6-letter-english-words.txt" + + set fish_greeting + + if status is-interactive + if set -q ASCIINEMA_REC + return + end + if test $PWD = "/home/mbk/hs" + homestartup + else + fortune | cowsay + end + end + + export CHEZSCHEMELIBDIRS="/home/mbk/Aims/chez/thunderchez:/home/mbk/Aims/chez/thunderchez:/home/mbk/Aims/chez/chez-srfi:/home/mbk/Aims/chez/pfds" + + # opam configuration + source /home/mbk/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true + ''; + }; + + # programs.vscode = { + # enable = true; + # # i prefer to let vscode manage stuff + # mutableExtensionsDir = true; + # }; + + programs.neovim = { + enable = true; + coc.enable = true; + defaultEditor = true; + plugins = with pkgs.vimPlugins; [ + vim-airline + vim-airline-themes + ale + + vim-fugitive + + vim-bufkill + + suda-vim + + # navigation + nerdtree + nerdtree-git-plugin + plenary-nvim + telescope-nvim + + vim-rooter + # Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } + # Plug 'junegunn/fzf.vim' + # Plug 'jlanzarotta/bufexplorer' + + vim-commentary + #Plug 'mrtazz/DoxygenToolkit.vim' + vim-surround + vim-sexp + + vim-operator-user + #Plug 'rhysd/vim-clang-format' + + #vim-scripts/a.vim + vim-highlightedyank + + # Plug 'autozimu/LanguageClient-neovim', { 'branch': 'next', 'do': 'bash install.sh' } + ncm2 + nvim-yarp + + # Completion plugins + #Plug 'ncm2/ncm2-bufword' + ncm2-path + + # CoC + # Plug 'neoclide/coc.nvim', {'branch': 'release'} + + haskell-vim + + # Syntactic language support + rust-vim + vim-toml + elixir-tools-nvim + #vim-rubocop + zig-vim + gruvbox + ]; + extraConfig = '' + let mapleader = ";" + let maplocalleader = ";;" + + let g:ConqueGdb_GdbExe = 'arm-none-eabi-gdb' + + " call plug#begin('~/.config/nvim/plugged') + " " Using master branch + " call plug#end() + + + "===== Code Completion =====" + autocmd BufEnter * call ncm2#enable_for_buffer() + set completeopt=noinsert,menuone,noselect + " tab to select + " and don't hijack my enter key + inoremap (pumvisible()?(empty(v:completed_item)?"\":"\"):"\") + inoremap (pumvisible()?(empty(v:completed_item)?"\\":"\"):"\") + + "===== Compilation Error Navigation =====" + nmap (coc-diagnostic-next-error) + nmap (coc-diagnostic-next) + + + "===== Key bindings =====" + map :BufExplorer " Explore buffers + map :bnext " Next buffer! + map :bprev " Prev buffer! + map :Commentary " Toggle comment on this line + + map w :w + map q :q + + " mehbark added this, bracket and braces and stuff completion + " https://coderwall.com/p/h1dv0g/completion-for-parentheses-braces-and-brackets-in-vim + " inoremap { {} + " inoremap {{ { + " inoremap {} {} + " inoremap { {}O + " inoremap [ [] + " inoremap [[ [ + " inoremap [] [] + " inoremap ( () + " inoremap (( ( + " inoremap () () + " inoremap " "" + " inoremap "" "" + + "===== Airline =====" + set ttimeoutlen=50 + set laststatus=2 + let g:airline_powerline_fonts = 1 + let g:airline_theme='base16' + let g:airline#extensions#tabline#enabled = 1 + " let g:airline_left_sep="" + " let g:airline_right_sep="" + " let g:airline#extensions#whitespace#checks = [ 'indent' ] + + " Map f4 to switch header/source for c projects + map :A + + " remove trailing white spaces when saving + autocmd BufWritePre * :%s/\s\+$//e + + " OCaml settings + filetype indent on + filetype plugin on + + au BufRead,BufNewFile *.ml,*.mli compiler ocaml + + " different color schemes depending on the file type + syntax enable + "let g:rehash256 = 1 + colorscheme gruvbox + + + "===== NERDTree =====" + "Auto close if only NERDTree is open + autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif + + "Open nerd tree if no cl argument supplied + " function! StartUp() + " if 0 == argc() + " NERDTree . + " end + " endfunction + " let g:NERDTreeWinPos = 'right' + + " autocmd VimEnter * call StartUp() + + "toggle on Ctrl+n + map :NERDTreeToggle + + " let g:NERDTreeWinSize=60 + + + "===== Rust =====" + autocmd FileType rust nnoremap :RustFmt + let g:rustfmt_autosave = 1 + let g:rustfmt_command = "rustfmt" + au BufNewFile,BufRead *.rs setlocal colorcolumn=100 + let g:ycm_rust_src_path = '~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src' + + + "===== Nvim Behaviour =====" + " Changes regular vim behaviours + " Set so the files auto updates when changed on disk + set autoread + + " No swap files + set backupdir-=. + set backupdir^=~/tmp,/tmp + + " Fold the code + set foldmethod=syntax + " activate the folder + set foldcolumn=1 + " automatically fold larger files, for small ones, it doesn't matter + autocmd! BufReadPost * :if line('$') < 200 | set foldlevel=99 | else | set foldlevel=1 |endif + " Relative line numbers in normal mode, absolute in insert (mainly for reading errors easier) + set number + + autocmd InsertEnter * :set norelativenumber + autocmd InsertLeave * :set relativenumber + + + "===== Persistent Undo =====" + " Keep undo history across sessions, by storing in file. + silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1 + set undodir=~/.config/nvim/backups + set undofile + + + "===== Close current buffer =====" + nnoremap :BW + + + "===== Typo fixes =====" + "Fix common typos when saving and exiting + command WQ wq + command Wq wq + command W w + command Q q + + + "===== Misc =====" + set nocompatible + " Dont update view in scripts, 10000 times speedup + set lazyredraw + " set Colour support so airline works + set t_Co=256 + " set mouse activated + set mouse=a + set clipboard=unnamedplus + " Include stdlib dirs for 'gf' command. Also include all subdir in + " workingfolder + let &path.="src/include,/usr/include/AL,.**" + " Search for tags file, from current directory until home directory + set tags=./tags;$HOME + + + "===== Terminal =====" + " Set exiting term mode to esc esc + tnoremap + + + set incsearch + set ignorecase + set smartcase + set tabstop=4 shiftwidth=4 expandtab + set wrap linebreak nolist " list disables line break + " indicate where the 80 chars wide is + set cc=100 + set textwidth=0 + set wrapmargin=0 + " set spell spelllang=en_us + set number + set relativenumber + set langmenu=en_US + let $LANG = 'en_US' + set cursorline + " retain undo history in buffers + set hidden + " set so the files auto updates when changed on disk + set autoread + " Better default for yanking + :map Y y$ + " Set yank highlight to something reasonable + let g:highlightedyank_highlight_duration = 150 + + + """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + "==== Haskell + """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + let g:haskell_enable_quantification = 1 " to enable highlighting of `forall` + let g:haskell_enable_recursivedo = 1 " to enable highlighting of `mdo` and `rec` + let g:haskell_enable_arrowsyntax = 1 " to enable highlighting of `proc` + let g:haskell_enable_pattern_synonyms = 1 " to enable highlighting of `pattern` + let g:haskell_enable_typeroles = 1 " to enable highlighting of type roles + let g:haskell_enable_static_pointers = 1 " to enable highlighting of `static` + let g:haskell_backpack = 1 " to enable highlighting of backpack keywords + + """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + "==== Coc settings + """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + + " Give more space for displaying messages. + set cmdheight=2 + + " Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable + " delays and poor user experience. + set updatetime=300 + + " Don't pass messages to |ins-completion-menu|. + set shortmess+=c + + " Always show the signcolumn, otherwise it would shift the text each time + " diagnostics appear/become resolved. + set signcolumn=yes + + "function! s:check_back_space() abort + " let col = col('.') - 1 + " return !col || getline('.')[col - 1] =~# '\s' + "endfunction + " + "" 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() ? "\" : "\" + + inoremap + \ coc#pum#visible() ? coc#pum#next(1) : + \ CheckBackspace() ? "\" : + \ coc#refresh() + inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" + + function! CheckBackspace() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' + endfunction + + " Make to accept selected completion item or notify coc.nvim to format + " u breaks current undo, please make your own choice. + inoremap coc#pum#visible() ? coc#pum#confirm() + \: "\u\\=coc#on_enter()\" + + " Use to trigger completion. + inoremap coc#refresh() + + " Use to confirm completion, `u` means break undo chain at current + " position. Coc only does snippet and additional edit on confirm. + " if has('patch8.1.1068') + " " Use `complete_info` if your (Neo)Vim version supports it. + " inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" + " else + " imap pumvisible() ? "\" : "\u\" + " endif + + " Use `[g` and `]g` to navigate diagnostics + 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() + + let g:sexp_insert_after_wrap = 0 + + function! s:show_documentation() + if (index(['vim','help'], &filetype) >= 0) + execute 'h '.expand('') + else + call CocAction('doHover') + 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 line. + nmap ac (coc-codeaction) + " Apply AutoFix to problem on the current line. + nmap qf (coc-fix-current) + + " Introduce function text object + " NOTE: Requires 'textDocument.documentSymbol' support from the language server. + xmap if (coc-funcobj-i) + xmap af (coc-funcobj-a) + omap if (coc-funcobj-i) + omap af (coc-funcobj-a) + + " Use for selections ranges. + " NOTE: Requires 'textDocument/selectionRange' support from the language server. + " coc-tsserver, coc-python are the examples of servers that support it. + 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') + + let g:airline#extensions#coc#enabled = 1 + " 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',''')} + + " hopefully this fixes the weird thing with the working directory being a + " parent directory + " it hasn't, yet + set autochdir + + " Mappings using 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 + + """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + " / Coc settings + """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + ''; + }; + }; +}