Initial Commit
This commit is contained in:
commit
d18f18fc29
28 changed files with 1415 additions and 0 deletions
1
nvim/config/init.lua
Executable file
1
nvim/config/init.lua
Executable file
|
|
@ -0,0 +1 @@
|
|||
require 'FoehammerVim'.init()
|
||||
3
nvim/config/lua/.luarc.json
Executable file
3
nvim/config/lua/.luarc.json
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"workspace.checkThirdParty": false
|
||||
}
|
||||
10
nvim/config/lua/FoehammerVim/init.lua
Executable file
10
nvim/config/lua/FoehammerVim/init.lua
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
local function init()
|
||||
require 'FoehammerVim.vim'.init()
|
||||
require 'FoehammerVim.theme'.init()
|
||||
require 'FoehammerVim.languages'.init()
|
||||
require 'FoehammerVim.telescope'.init()
|
||||
end
|
||||
|
||||
return {
|
||||
init = init,
|
||||
}
|
||||
239
nvim/config/lua/FoehammerVim/languages.lua
Executable file
239
nvim/config/lua/FoehammerVim/languages.lua
Executable file
|
|
@ -0,0 +1,239 @@
|
|||
local lspconfig = require 'lspconfig'
|
||||
local treesitter = require 'nvim-treesitter.configs'
|
||||
local treesitter_context = require 'treesitter-context'
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
local cmp_lsp = require 'cmp_nvim_lsp'
|
||||
local rust_tools = require 'rust-tools'
|
||||
|
||||
local function autocmd(args)
|
||||
local event = args[1]
|
||||
local group = args[2]
|
||||
local callback = args[3]
|
||||
|
||||
vim.api.nvim_create_autocmd(event, {
|
||||
group = group,
|
||||
buffer = args[4],
|
||||
callback = function()
|
||||
callback()
|
||||
end,
|
||||
once = args.once,
|
||||
})
|
||||
end
|
||||
|
||||
local function on_attach(client, buffer)
|
||||
local augroup_highlight = vim.api.nvim_create_augroup("custom-lsp-references", { clear = true })
|
||||
local autocmd_clear = vim.api.nvim_clear_autocmds
|
||||
|
||||
local opts = { buffer = buffer, remap = false }
|
||||
|
||||
vim.bo[buffer].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
||||
|
||||
|
||||
-- Enable completion triggered by <c-x><c-o>
|
||||
vim.bo[buffer].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
||||
|
||||
vim.keymap.set('n', '<leader>gD', vim.lsp.buf.declaration, opts)
|
||||
vim.keymap.set('n', '<leader>gd', vim.lsp.buf.definition, opts)
|
||||
vim.keymap.set('n', '<leader>K', vim.lsp.buf.hover, opts)
|
||||
vim.keymap.set('n', '<leader>gi', vim.lsp.buf.implementation, opts)
|
||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
|
||||
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
|
||||
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
|
||||
vim.keymap.set('n', '<leader>wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, opts)
|
||||
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, opts)
|
||||
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
|
||||
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts)
|
||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
|
||||
vim.keymap.set('n', '<leader>f', function() vim.lsp.buf.format { async = true } end, opts)
|
||||
|
||||
vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format({ async = false })]]
|
||||
|
||||
if client.server_capabilities.documentHighlightProvider then
|
||||
autocmd_clear { group = augroup_highlight, buffer = buffer }
|
||||
autocmd { "CursorHold", augroup_highlight, vim.lsp.buf.document_highlight, buffer }
|
||||
autocmd { "CursorMoved", augroup_highlight, vim.lsp.buf.clear_references, buffer }
|
||||
end
|
||||
end
|
||||
|
||||
local function init()
|
||||
rust_tools.setup {
|
||||
server = {
|
||||
settings = {
|
||||
['rust-analyzer'] = {
|
||||
cargo = {
|
||||
buildScripts = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
diagnostics = {
|
||||
enable = false,
|
||||
},
|
||||
files = {
|
||||
excludeDirs = { ".direnv", ".git" },
|
||||
watcherExclude = { ".direnv", ".git" },
|
||||
},
|
||||
},
|
||||
},
|
||||
on_attach = on_attach,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
local language_servers = {
|
||||
astro = {},
|
||||
clangd = {},
|
||||
cssls = {},
|
||||
dagger = {},
|
||||
diagnosticls = {
|
||||
filetypes = { "python" },
|
||||
init_options = {
|
||||
filetypes = {
|
||||
python = "black"
|
||||
},
|
||||
formatFiletypes = {
|
||||
python = { "black" }
|
||||
},
|
||||
formatters = {
|
||||
black = {
|
||||
command = "black",
|
||||
args = { "--quiet", "-" },
|
||||
rootPatterns = { "pyproject.toml" },
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
elixirls = {
|
||||
cmd = { "elixir-ls" },
|
||||
},
|
||||
gopls = {
|
||||
settings = {
|
||||
gopls = {
|
||||
gofumpt = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
html = {
|
||||
filetypes = { "html", "htmldjango" },
|
||||
},
|
||||
jsonls = {},
|
||||
lua_ls = {
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = {
|
||||
globals = { "vim" },
|
||||
},
|
||||
runtime = {
|
||||
version = 'LuaJIT',
|
||||
},
|
||||
telemetry = {
|
||||
enable = false,
|
||||
},
|
||||
workspace = {
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
nil_ls = {
|
||||
settings = {
|
||||
['nil'] = {
|
||||
formatting = { command = { 'alejandra' } },
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
pyright = {},
|
||||
tsserver = {},
|
||||
tailwindcss = {
|
||||
filetypes = { "templ", "astro", "typescriptreact", "react", "html", "heex" },
|
||||
settings = {
|
||||
tailwindCSS = {
|
||||
includeLanguages = {
|
||||
templ = "html",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
yamlls = {
|
||||
settings = {
|
||||
yaml = {
|
||||
keyOrdering = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
zls = {},
|
||||
}
|
||||
|
||||
local capabilities = cmp_lsp.default_capabilities()
|
||||
|
||||
-- Initialize servers
|
||||
for server, server_config in pairs(language_servers) do
|
||||
local config = { on_attach = on_attach, capabilities = capabilities }
|
||||
|
||||
if server_config then
|
||||
for k, v in pairs(server_config) do
|
||||
config[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
lspconfig[server].setup(config)
|
||||
end
|
||||
|
||||
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float)
|
||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
|
||||
|
||||
|
||||
treesitter.setup {
|
||||
auto_install = false,
|
||||
ignore_install = {},
|
||||
ensure_installed = {},
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
modules = {},
|
||||
rainbow = { enable = true },
|
||||
sync_install = false,
|
||||
}
|
||||
|
||||
treesitter_context.setup()
|
||||
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
-- REQUIRED - you must specify a snippet engine
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body) -- For `luasnip` users.
|
||||
end,
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' }, -- For luasnip users.
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
|
||||
vim.g.vimtex_view_method = "zathura"
|
||||
end
|
||||
|
||||
|
||||
return {
|
||||
init = init,
|
||||
}
|
||||
45
nvim/config/lua/FoehammerVim/telescope.lua
Executable file
45
nvim/config/lua/FoehammerVim/telescope.lua
Executable file
|
|
@ -0,0 +1,45 @@
|
|||
local telescope = require 'telescope'
|
||||
local actions = require 'telescope.actions'
|
||||
|
||||
local function init()
|
||||
telescope.setup {
|
||||
defaults = {
|
||||
file_ignore_patterns = {
|
||||
"node_modules/.*",
|
||||
"%.pem"
|
||||
},
|
||||
layout_strategy = "flex",
|
||||
layout_config = {
|
||||
horizontal = {
|
||||
prompt_position = "bottom",
|
||||
preview_width = 0.55,
|
||||
},
|
||||
vertical = { mirror = false },
|
||||
width = 0.87,
|
||||
height = 0.8,
|
||||
preview_cutoff = 125,
|
||||
},
|
||||
mappings = {
|
||||
i = {
|
||||
["<esc>"] = actions.close,
|
||||
["<C-u>"] = false,
|
||||
["<c-d>"] = actions.delete_buffer + actions.move_to_top,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
telescope.load_extension('notify')
|
||||
|
||||
local options = { noremap = true, silent = true }
|
||||
|
||||
vim.keymap.set('n', '<leader>ff', '<CMD>lua require ("telescope.builtin").find_files()<CR>', options)
|
||||
vim.keymap.set('n', '<leader>fg', '<CMD>lua require ("telescope.builtin").live_grep()<CR>', options)
|
||||
vim.keymap.set('n', '<leader>cd', '<CMD>lua require ("telescope.builtin").diagnostics()<CR>', options)
|
||||
|
||||
vim.keymap.set('n', '<leader>b', '<CMD>lua require ("telescope.builtin").buffers()<CR>', options)
|
||||
end
|
||||
|
||||
return {
|
||||
init = init,
|
||||
}
|
||||
162
nvim/config/lua/FoehammerVim/theme.lua
Executable file
162
nvim/config/lua/FoehammerVim/theme.lua
Executable file
|
|
@ -0,0 +1,162 @@
|
|||
local gitsigns = require 'gitsigns'
|
||||
local lualine = require 'lualine'
|
||||
local noice = require 'noice'
|
||||
local notify = require 'notify'
|
||||
local gruvbox = require 'gruvbox'
|
||||
|
||||
local function setup_lualine()
|
||||
local colors = {
|
||||
black = '#282828',
|
||||
white = '#ebdbb2',
|
||||
red = '#fb4934',
|
||||
green = '#b8bb26',
|
||||
blue = '#459588',
|
||||
yellow = '#faBD2f',
|
||||
gray = '#928374',
|
||||
darkgray = '#3c3836',
|
||||
lightgray = '#504945',
|
||||
inactivegray = '#7c6f64',
|
||||
}
|
||||
|
||||
local theme = {
|
||||
normal = {
|
||||
a = { bg = colors.gray, fg = colors.black, gui = 'bold' },
|
||||
b = { bg = colors.lightgray, fg = colors.white },
|
||||
c = { bg = colors.darkgray, fg = colors.gray },
|
||||
},
|
||||
insert = {
|
||||
a = { bg = colors.blue, fg = colors.black, gui = 'bold' },
|
||||
b = { bg = colors.lightgray, fg = colors.white },
|
||||
c = { bg = colors.lightgray, fg = colors.white },
|
||||
},
|
||||
visual = {
|
||||
a = { bg = colors.yellow, fg = colors.black, gui = 'bold' },
|
||||
b = { bg = colors.lightgray, fg = colors.white },
|
||||
c = { bg = colors.inactivegray, fg = colors.black },
|
||||
},
|
||||
replace = {
|
||||
a = { bg = colors.red, fg = colors.black, gui = 'bold' },
|
||||
b = { bg = colors.lightgray, fg = colors.white },
|
||||
c = { bg = colors.black, fg = colors.white },
|
||||
},
|
||||
command = {
|
||||
a = { bg = colors.green, fg = colors.black, gui = 'bold' },
|
||||
b = { bg = colors.lightgray, fg = colors.white },
|
||||
c = { bg = colors.inactivegray, fg = colors.black },
|
||||
},
|
||||
inactive = {
|
||||
a = { bg = colors.darkgray, fg = colors.gray, gui = 'bold' },
|
||||
b = { bg = colors.darkgray, fg = colors.gray },
|
||||
c = { bg = colors.darkgray, fg = colors.gray },
|
||||
},
|
||||
}
|
||||
|
||||
lualine.setup({
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = theme,
|
||||
component_separators = { left = '', right = '' },
|
||||
section_separators = { left = '', right = '' },
|
||||
disabled_filetypes = {
|
||||
statusline = {},
|
||||
winbar = {},
|
||||
},
|
||||
ignore_focus = {},
|
||||
always_divide_middle = true,
|
||||
globalstatus = vim.go.laststatus == 3,
|
||||
refresh = {
|
||||
statusline = 1000,
|
||||
tabline = 1000,
|
||||
winbar = 1000,
|
||||
},
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { 'mode' },
|
||||
lualine_b = { 'branch', 'diff', 'diagnostics' },
|
||||
lualine_c = { 'filename' },
|
||||
lualine_x = { 'encoding', {
|
||||
'fileformat',
|
||||
symbols = {
|
||||
unix = "",
|
||||
mac = "",
|
||||
}
|
||||
},
|
||||
'filetype' },
|
||||
lualine_y = { 'progress' },
|
||||
lualine_z = { 'location' },
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_c = { 'filename' },
|
||||
lualine_x = { 'location' },
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
local function init()
|
||||
gitsigns.setup {}
|
||||
|
||||
setup_lualine()
|
||||
|
||||
notify.setup({
|
||||
render = "compact",
|
||||
timeout = 1000,
|
||||
})
|
||||
|
||||
noice.setup({
|
||||
lsp = {
|
||||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
|
||||
},
|
||||
},
|
||||
-- you can enable a preset for easier configuration
|
||||
presets = {
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||
},
|
||||
})
|
||||
|
||||
gruvbox.setup {
|
||||
terminal_colors = true,
|
||||
undercurl = true,
|
||||
underline = true,
|
||||
bold = true,
|
||||
italic = {
|
||||
strings = true,
|
||||
emphasis = true,
|
||||
comments = true,
|
||||
operators = false,
|
||||
folds = true,
|
||||
},
|
||||
strikethrough = true,
|
||||
invert_selection = false,
|
||||
invert_signs = false,
|
||||
invert_tabline = false,
|
||||
invert_intend_guides = false,
|
||||
inverse = true, -- invert background for search, diffs, statuslines and errors
|
||||
contrast = "", -- can be "hard", "soft" or empty string
|
||||
palette_overrides = {},
|
||||
overrides = {},
|
||||
dim_inactive = false,
|
||||
transparent_mode = false,
|
||||
}
|
||||
|
||||
|
||||
|
||||
vim.o.background = "dark"
|
||||
vim.cmd [[colorscheme gruvbox]]
|
||||
end
|
||||
|
||||
|
||||
return {
|
||||
init = init,
|
||||
}
|
||||
72
nvim/config/lua/FoehammerVim/vim.lua
Executable file
72
nvim/config/lua/FoehammerVim/vim.lua
Executable file
|
|
@ -0,0 +1,72 @@
|
|||
local function set_vim_g()
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
end
|
||||
|
||||
local function set_vim_opt()
|
||||
local settings = {
|
||||
relativenumber = true,
|
||||
number = true,
|
||||
showmode = false,
|
||||
clipboard = 'unnamedplus',
|
||||
breakindent = true,
|
||||
undofile = true,
|
||||
ignorecase = true,
|
||||
smartcase = true,
|
||||
signcolumn = 'yes',
|
||||
updatetime = 250,
|
||||
timeoutlen = 300,
|
||||
splitright = true,
|
||||
splitbelow = true,
|
||||
inccommand = 'split',
|
||||
cursorline = true,
|
||||
scrolloff = 10,
|
||||
hlsearch = true,
|
||||
termguicolors = true,
|
||||
tabstop = 4,
|
||||
shiftwidth = 4
|
||||
}
|
||||
|
||||
for k, v in pairs(settings) do
|
||||
vim.opt[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
local function set_vim_keymaps()
|
||||
local options = { noremap = false, silent = true }
|
||||
|
||||
vim.keymap.set('n', '<leader>h', '<CMD>wincmd h<CR>', options)
|
||||
vim.keymap.set('n', '<leader>j', '<CMD>wincmd j<CR>', options)
|
||||
vim.keymap.set('n', '<leader>k', '<CMD>wincmd k<CR>', options)
|
||||
vim.keymap.set('n', '<leader>l', '<CMD>wincmd l<CR>', options)
|
||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||
|
||||
-- Bandaid Peel
|
||||
vim.keymap.set('n', '<left>', '<Nop>')
|
||||
vim.keymap.set('n', '<right>', '<Nop>')
|
||||
vim.keymap.set('n', '<up>', '<Nop>')
|
||||
vim.keymap.set('n', '<down>', '<No')
|
||||
|
||||
-- Tabs:
|
||||
vim.api.nvim_set_keymap("n", "<leader>ta", ":$tabnew<CR>", { noremap = true })
|
||||
vim.api.nvim_set_keymap("n", "<leader>tc", ":tabclose<CR>", { noremap = true })
|
||||
vim.api.nvim_set_keymap("n", "<leader>to", ":tabonly<CR>", { noremap = true })
|
||||
vim.api.nvim_set_keymap("n", "<leader>tn", ":tabn<CR>", { noremap = true })
|
||||
vim.api.nvim_set_keymap("n", "<leader>tp", ":tabp<CR>", { noremap = true })
|
||||
-- move current tab to previous position
|
||||
vim.api.nvim_set_keymap("n", "<leader>tmp", ":-tabmove<CR>", { noremap = true })
|
||||
-- move current tab to next position
|
||||
vim.api.nvim_set_keymap("n", "<leader>tmn", ":+tabmove<CR>", { noremap = true })
|
||||
end
|
||||
|
||||
|
||||
local function init()
|
||||
vim.loader.enable()
|
||||
set_vim_g()
|
||||
set_vim_opt()
|
||||
set_vim_keymaps()
|
||||
end
|
||||
|
||||
return {
|
||||
init = init,
|
||||
}
|
||||
91
nvim/default.nix
Normal file
91
nvim/default.nix
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
{pkgs, ...}: let
|
||||
plugins = let
|
||||
inherit (pkgs) vimPlugins;
|
||||
in
|
||||
with vimPlugins; [
|
||||
# Languages
|
||||
nvim-lspconfig
|
||||
nvim-treesitter.withAllGrammars
|
||||
nvim-cmp
|
||||
luasnip
|
||||
cmp_luasnip
|
||||
cmp-nvim-lsp
|
||||
cmp-buffer
|
||||
rust-tools-nvim
|
||||
|
||||
# Telescope Stuff
|
||||
telescope-nvim
|
||||
plenary-nvim
|
||||
|
||||
# Extra Stuff
|
||||
gitsigns-nvim
|
||||
lualine-nvim
|
||||
noice-nvim
|
||||
nvim-notify
|
||||
gruvbox-nvim
|
||||
nui-nvim
|
||||
nvim-treesitter-context
|
||||
nvim-web-devicons
|
||||
vimtex
|
||||
];
|
||||
|
||||
packages = let
|
||||
inherit (pkgs) nodePackages;
|
||||
in
|
||||
with pkgs; [
|
||||
#LSPs
|
||||
cuelsp
|
||||
elixir-ls
|
||||
gopls
|
||||
lua-language-server
|
||||
rust-analyzer
|
||||
tailwindcss-language-server
|
||||
nil
|
||||
nodePackages."@astrojs/language-server"
|
||||
nodePackages."typescript-language-server"
|
||||
nodePackages."diagnostic-languageserver"
|
||||
nodePackages."vscode-langservers-extracted"
|
||||
nodePackages."yaml-language-server"
|
||||
pyright
|
||||
zls
|
||||
|
||||
#Formatters
|
||||
gofumpt
|
||||
alejandra
|
||||
rustfmt
|
||||
python3Packages.black
|
||||
|
||||
# Telescope Stuff
|
||||
ripgrep
|
||||
fd
|
||||
];
|
||||
|
||||
vimPlugin = let
|
||||
inherit (pkgs.vimUtils) buildVimPlugin;
|
||||
in
|
||||
buildVimPlugin {
|
||||
name = "FoehammerVim";
|
||||
src = ./config;
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
lua << EOF
|
||||
require 'FoehammerVim'.init()
|
||||
EOF
|
||||
'';
|
||||
in {
|
||||
home.packages = with pkgs; [ripgrep fd];
|
||||
|
||||
programs.neovim = {
|
||||
inherit extraConfig;
|
||||
plugins = plugins ++ [vimPlugin];
|
||||
extraPackages = packages;
|
||||
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
||||
withNodeJs = true;
|
||||
withPython3 = true;
|
||||
withRuby = true;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue