init.lua - dotfiles - These are my dotfiles. There are many like it, but these are mine.
 (HTM) git clone git://jay.scot/dotfiles
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
       init.lua (3416B)
       ---
            1 --- bootstrap
            2 
            3 local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
            4 if not vim.loop.fs_stat(lazypath) then
            5         vim.fn.system({
            6                 "git",
            7                 "clone",
            8                 "--filter=blob:none",
            9                 "https://github.com/folke/lazy.nvim.git",
           10                 "--branch=stable",
           11                 lazypath,
           12         })
           13 end
           14 vim.opt.rtp:prepend(lazypath)
           15 
           16 --- plugins
           17 
           18 require("lazy").setup({
           19 
           20         -- colour theme
           21         {
           22                 "ellisonleao/gruvbox.nvim",
           23                 priority = 1000,
           24                 config = function()
           25                         require("gruvbox").setup({
           26                                 contrast = "hard",
           27                         })
           28                         vim.cmd([[colorscheme gruvbox]])
           29                 end,
           30         },
           31 
           32         -- status bar
           33         {
           34                 "nvim-lualine/lualine.nvim",
           35                 dependencies = { "nvim-tree/nvim-web-devicons" },
           36                 config = function()
           37                         require("lualine").setup({
           38                                 options = {
           39                                         theme = "gruvbox",
           40                                         icons_enabled = false,
           41                                 },
           42                                 sections = {
           43                                         lualine_c = {
           44                                                 {
           45                                                         "filename",
           46                                                         file_status = true,
           47                                                         path = 1,
           48                                                 },
           49                                         },
           50                                 },
           51                         })
           52                 end,
           53         },
           54 
           55         -- remove spaces at the end of lines
           56         {
           57                 "lewis6991/spaceless.nvim",
           58                 config = function()
           59                         require("spaceless").setup()
           60                 end,
           61         },
           62 
           63         -- comments
           64         {
           65                 "numToStr/Comment.nvim",
           66                 config = function()
           67                         require("Comment").setup()
           68                 end,
           69         },
           70 
           71         -- file fuzzy finding
           72         {
           73                 "nvim-telescope/telescope.nvim",
           74                 dependencies = {
           75                         "nvim-lua/plenary.nvim",
           76                 },
           77         },
           78 
           79         -- file browser
           80         {
           81                 "nvim-telescope/telescope-file-browser.nvim",
           82                 dependencies = {
           83                         "nvim-telescope/telescope.nvim",
           84                         "nvim-lua/plenary.nvim",
           85                 },
           86         },
           87 
           88         -- ale
           89         {
           90     'dense-analysis/ale',
           91     config = function()
           92         local g = vim.g
           93 
           94         g.ale_ruby_rubocop_auto_correct_all = 1
           95                 g.ale_c_cc_options = "-ansi -pedantic -std=c89 -Wall"
           96                 g.ale_fixers = {
           97                         c = {'gcc'}
           98                 }
           99         end
          100         },
          101 
          102         -- terraform
          103         {
          104                 "hashivim/vim-terraform",
          105                 lazy = true,
          106                 ft = { 'terraform', 'hcl' }
          107     },
          108 
          109 })
          110 
          111 --- settings
          112 
          113 -- appearance
          114 vim.opt.number = true
          115 vim.opt.signcolumn = "yes"
          116 vim.opt.colorcolumn = "72"
          117 vim.opt.termguicolors = true
          118 
          119 -- behaviour
          120 vim.opt.backup = false
          121 vim.opt.swapfile = false
          122 vim.opt.showmatch = true
          123 vim.opt.mouse = ""
          124 
          125 -- spelling
          126 vim.opt.spell = true
          127 vim.opt.spelllang = "en_gb"
          128 vim.opt.spelloptions = "camel"
          129 
          130 -- search
          131 vim.opt.hlsearch = true
          132 vim.opt.incsearch = true
          133 vim.opt.ignorecase = true
          134 
          135 -- indent
          136 vim.opt.wrap = false
          137 vim.opt.tabstop = 4
          138 vim.opt.expandtab = false
          139 vim.opt.shiftwidth = 4
          140 vim.opt.smartindent = true
          141 
          142 -- show space and tab characters
          143 vim.o.list = true
          144 vim.o.listchars = "tab:› ,trail:⋅,nbsp:␣"
          145 
          146 -- map leader to <space>
          147 vim.keymap.set("n", " ", "<Nop>", { silent = true, remap = false })
          148 vim.g.mapleader = " "
          149 
          150 -- indenting
          151 vim.keymap.set("v", "<", "<gv")
          152 vim.keymap.set("v", ">", ">gv")
          153 
          154 -- comments
          155 vim.keymap.set("n", "<C-/>", "gcc", { noremap = false })
          156 vim.keymap.set("v", "<C-/>", "gcc", { noremap = false })
          157 
          158 -- open file_browser with the path of the current buffer
          159 vim.keymap.set("n", "<leader>ff", ":Telescope file_browser path=%:p:h select_buffer=true<CR>", { noremap = true })
          160 
          161 -- open fuzzy find file browser
          162 vim.keymap.set("n", "<leader>fg", ":Telescope find_files<CR>", { noremap = true })
          163 
          164 -- open buffers list
          165 vim.keymap.set("n", "<leader>fb", ":Telescope buffers<CR>", { noremap = true })
          166 
          167 -- format paragraphs
          168 vim.keymap.set("n", "<leader>pp", "gqap", { noremap = true, silent = true })
          169 vim.opt.textwidth = 72
          170 
          171 -- enable spellchecking
          172 vim.keymap.set("n", "<leader>ps", ":setlocal spell! spelllang=en_gb<CR>", { noremap = true, silent = true })
          173 
          174 vim.g.terraform_fmt_on_save = 1
          175