Initial
This commit is contained in:
commit
3f57c580d1
6 changed files with 192 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
plugin
|
14
init.lua
Normal file
14
init.lua
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
local packer = require("ensure-packer");
|
||||||
|
local plugins = require("plugins");
|
||||||
|
local settings = require("settings");
|
||||||
|
|
||||||
|
-- Theme Section
|
||||||
|
vim.cmd("colorscheme onedark")
|
||||||
|
|
||||||
|
-- Lualine Section
|
||||||
|
require('lualine').setup {
|
||||||
|
options = { theme = 'auto' }
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Comment
|
||||||
|
require('Comment').setup()
|
19
lua/ensure-packer.lua
Normal file
19
lua/ensure-packer.lua
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
local ensure_packer = function()
|
||||||
|
local fn = vim.fn
|
||||||
|
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
|
||||||
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
|
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
|
||||||
|
vim.cmd [[packadd packer.nvim]]
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local packer_bootstrap = ensure_packer();
|
||||||
|
|
||||||
|
vim.cmd([[
|
||||||
|
augroup packer_user_config
|
||||||
|
autocmd!
|
||||||
|
autocmd BufWritePost plugins.lua source <afile> | PackerSync
|
||||||
|
augroup end
|
||||||
|
]])
|
20
lua/plugins.lua
Normal file
20
lua/plugins.lua
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
require('packer').startup(function(use)
|
||||||
|
use 'wbthomason/packer.nvim'
|
||||||
|
use 'numToStr/Comment.nvim'
|
||||||
|
use 'neovim/nvim-lspconfig'
|
||||||
|
use 'glepnir/dashboard-nvim'
|
||||||
|
use 'joshdick/onedark.vim'
|
||||||
|
use 'jiangmiao/auto-pairs'
|
||||||
|
use { 'nvim-treesitter/nvim-treesitter', run = function()
|
||||||
|
local ts_update = require('nvim-treesitter.install').update({ with_sync = true })
|
||||||
|
ts_update()
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
use { 'nvim-lualine/lualine.nvim', requires = { 'kyazdani42/nvim-web-devicons', opt = true } }
|
||||||
|
|
||||||
|
-- Automatically set up your configuration after cloning packer.nvim
|
||||||
|
-- Put this at the end after all plugins
|
||||||
|
if packer_bootstrap then
|
||||||
|
require('packer').sync()
|
||||||
|
end
|
||||||
|
end)
|
72
lua/settings.lua
Normal file
72
lua/settings.lua
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
local g = vim.g
|
||||||
|
local o = vim.o
|
||||||
|
|
||||||
|
o.termguicolors = true
|
||||||
|
|
||||||
|
-- Decrease update time
|
||||||
|
o.timeoutlen = 500
|
||||||
|
o.updatetime = 200
|
||||||
|
|
||||||
|
-- Number of screen lines to keep above and below the cursor
|
||||||
|
o.scrolloff = 8
|
||||||
|
|
||||||
|
-- Better editor UI
|
||||||
|
o.number = true
|
||||||
|
o.numberwidth = 5
|
||||||
|
o.relativenumber = false
|
||||||
|
o.signcolumn = 'yes:2'
|
||||||
|
o.cursorline = true
|
||||||
|
|
||||||
|
-- Better editing experience
|
||||||
|
o.expandtab = true
|
||||||
|
-- o.smasttab = true
|
||||||
|
o.cindent = true
|
||||||
|
-- o.autoindent = true
|
||||||
|
o.wrap = false
|
||||||
|
o.textwidth = 300
|
||||||
|
o.tabstop = 4
|
||||||
|
o.shiftwidth = 0
|
||||||
|
o.softtabstop = -1 -- If negative, shiftwidth value is used
|
||||||
|
o.list = true
|
||||||
|
o.listchars = 'eol:¬,space:·,lead: ,trail:·,nbsp:◇,tab:→-,extends:▸,precedes:◂,multispace:···⬝,leadmultispace:│ ,'
|
||||||
|
-- o.formatoptions = 'qrn1'
|
||||||
|
|
||||||
|
-- Makes neovim and host OS clipboard play nicely with each other
|
||||||
|
o.clipboard = 'unnamedplus'
|
||||||
|
|
||||||
|
-- Case insensitive searching UNLESS /C or capital in search
|
||||||
|
o.ignorecase = true
|
||||||
|
o.smartcase = true
|
||||||
|
|
||||||
|
-- Undo and backup options
|
||||||
|
o.backup = false
|
||||||
|
o.writebackup = false
|
||||||
|
o.undofile = true
|
||||||
|
o.swapfile = false
|
||||||
|
-- o.backupdir = '/tmp/'
|
||||||
|
-- o.directory = '/tmp/'
|
||||||
|
-- o.undodir = '/tmp/'
|
||||||
|
|
||||||
|
-- Remember 50 items in commandline history
|
||||||
|
o.history = 50
|
||||||
|
|
||||||
|
-- Better buffer splitting
|
||||||
|
o.splitright = true
|
||||||
|
o.splitbelow = true
|
||||||
|
|
||||||
|
-- Preserve view while jumping
|
||||||
|
o.jumpoptions = 'view'
|
||||||
|
|
||||||
|
-- BUG: this won't update the search count after pressing `n` or `N`
|
||||||
|
-- When running macros and regexes on a large file, lazy redraw tells neovim/vim not to draw the screen
|
||||||
|
-- o.lazyredraw = true
|
||||||
|
|
||||||
|
-- Better folds (don't fold by default)
|
||||||
|
-- o.foldmethod = 'indent'
|
||||||
|
-- o.foldlevelstart = 99
|
||||||
|
-- o.foldnestmax = 3
|
||||||
|
-- o.foldminlines = 1
|
||||||
|
|
||||||
|
-- Map <leader> to space
|
||||||
|
g.mapleader = ' '
|
||||||
|
g.maplocalleader = ' '
|
66
lua/utils.lua
Normal file
66
lua/utils.lua
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
local fn = vim.fn
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.executable(name)
|
||||||
|
if fn.executable(name) > 0 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
--- check whether a feature exists in Nvim
|
||||||
|
--- @feat: string
|
||||||
|
--- the feature name, like `nvim-0.7` or `unix`.
|
||||||
|
--- return: bool
|
||||||
|
M.has = function(feat)
|
||||||
|
if fn.has(feat) == 1 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Create a dir if it does not exist
|
||||||
|
function M.may_create_dir(dir)
|
||||||
|
local res = fn.isdirectory(dir)
|
||||||
|
|
||||||
|
if res == 0 then
|
||||||
|
fn.mkdir(dir, "p")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.get_nvim_version()
|
||||||
|
local actual_ver = vim.version()
|
||||||
|
|
||||||
|
local nvim_ver_str = string.format("%d.%d.%d", actual_ver.major, actual_ver.minor, actual_ver.patch)
|
||||||
|
return nvim_ver_str
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Generate random integers in the range [Low, High], inclusive,
|
||||||
|
--- adapted from https://stackoverflow.com/a/12739441/6064933
|
||||||
|
--- @low: the lower value for this range
|
||||||
|
--- @high: the upper value for this range
|
||||||
|
function M.rand_int(low, high)
|
||||||
|
-- Use lua to generate random int, see also: https://stackoverflow.com/a/20157671/6064933
|
||||||
|
math.randomseed(os.time())
|
||||||
|
|
||||||
|
return math.random(low, high)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Select a random element from a sequence/list.
|
||||||
|
--- @seq: the sequence to choose an element
|
||||||
|
function M.rand_element(seq)
|
||||||
|
local idx = M.rand_int(1, #seq)
|
||||||
|
|
||||||
|
return seq[idx]
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.add_pack(name)
|
||||||
|
local status, error = pcall(vim.cmd, "packadd " .. name)
|
||||||
|
|
||||||
|
return status
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
Loading…
Reference in a new issue