aboutsummaryrefslogtreecommitdiff
path: root/user/.config/nvim/lua
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2023-05-09 14:32:06 +0300
committeromagdy7 <omar.professional8777@gmail.com>2023-05-09 14:32:06 +0300
commit9ebae7f03a11e53a6bfe580f80d74f545febf419 (patch)
tree3f171142e4e14c1ef0a93bc0024d3fae97ebd37a /user/.config/nvim/lua
parent9a55d55c753ec48c62735fa482ffa8cad3705d9a (diff)
downloaddotfiles-9ebae7f03a11e53a6bfe580f80d74f545febf419.tar.xz
dotfiles-9ebae7f03a11e53a6bfe580f80d74f545febf419.zip
Added a user for astrovim
Diffstat (limited to 'user/.config/nvim/lua')
-rw-r--r--user/.config/nvim/lua/user/.stylua.toml7
-rw-r--r--user/.config/nvim/lua/user/highlights/duskfox.lua3
-rw-r--r--user/.config/nvim/lua/user/highlights/init.lua3
-rw-r--r--user/.config/nvim/lua/user/init.lua80
-rw-r--r--user/.config/nvim/lua/user/mappings.lua42
-rw-r--r--user/.config/nvim/lua/user/options.lua29
-rw-r--r--user/.config/nvim/lua/user/plugins/colorscheme.lua59
-rw-r--r--user/.config/nvim/lua/user/plugins/community.lua10
-rw-r--r--user/.config/nvim/lua/user/plugins/core.lua77
-rw-r--r--user/.config/nvim/lua/user/plugins/mason.lua26
-rw-r--r--user/.config/nvim/lua/user/plugins/null-ls.lua17
-rw-r--r--user/.config/nvim/lua/user/plugins/treesitter.lua6
-rw-r--r--user/.config/nvim/lua/user/plugins/user.lua135
13 files changed, 494 insertions, 0 deletions
diff --git a/user/.config/nvim/lua/user/.stylua.toml b/user/.config/nvim/lua/user/.stylua.toml
new file mode 100644
index 0000000..bfcffff
--- /dev/null
+++ b/user/.config/nvim/lua/user/.stylua.toml
@@ -0,0 +1,7 @@
+column_width = 120
+line_endings = "Unix"
+indent_type = "Spaces"
+indent_width = 2
+quote_style = "AutoPreferDouble"
+call_parentheses = "None"
+collapse_simple_statement = "Always"
diff --git a/user/.config/nvim/lua/user/highlights/duskfox.lua b/user/.config/nvim/lua/user/highlights/duskfox.lua
new file mode 100644
index 0000000..31318ee
--- /dev/null
+++ b/user/.config/nvim/lua/user/highlights/duskfox.lua
@@ -0,0 +1,3 @@
+return { -- a table of overrides/changes to the duskfox theme
+ Normal = { bg = "#000000" },
+}
diff --git a/user/.config/nvim/lua/user/highlights/init.lua b/user/.config/nvim/lua/user/highlights/init.lua
new file mode 100644
index 0000000..f7e055b
--- /dev/null
+++ b/user/.config/nvim/lua/user/highlights/init.lua
@@ -0,0 +1,3 @@
+return { -- this table overrides highlights in all themes
+ -- Normal = { bg = "#000000" },
+}
diff --git a/user/.config/nvim/lua/user/init.lua b/user/.config/nvim/lua/user/init.lua
new file mode 100644
index 0000000..9dbb6b8
--- /dev/null
+++ b/user/.config/nvim/lua/user/init.lua
@@ -0,0 +1,80 @@
+return {
+ -- Configure AstroNvim updates
+ updater = {
+ remote = "origin", -- remote to use
+ channel = "stable", -- "stable" or "nightly"
+ version = "latest", -- "latest", tag name, or regex search like "v1.*" to only do updates before v2 (STABLE ONLY)
+ branch = "nightly", -- branch name (NIGHTLY ONLY)
+ commit = nil, -- commit hash (NIGHTLY ONLY)
+ pin_plugins = nil, -- nil, true, false (nil will pin plugins on stable only)
+ skip_prompts = false, -- skip prompts about breaking changes
+ show_changelog = true, -- show the changelog after performing an update
+ auto_quit = false, -- automatically quit the current session after a successful update
+ remotes = { -- easily add new remotes to track
+ -- ["remote_name"] = "https://remote_url.come/repo.git", -- full remote url
+ -- ["remote2"] = "github_user/repo", -- GitHub user/repo shortcut,
+ -- ["remote3"] = "github_user", -- GitHub user assume AstroNvim fork
+ },
+ },
+ -- Set colorscheme to use
+ colorscheme = "material",
+ -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
+ diagnostics = {
+ virtual_text = true,
+ underline = true,
+ },
+ lsp = {
+ -- customize lsp formatting options
+ formatting = {
+ -- control auto formatting on save
+ format_on_save = {
+ enabled = true, -- enable or disable format on save globally
+ allow_filetypes = { -- enable format on save for specified filetypes only
+ -- "go",
+ },
+ ignore_filetypes = { -- disable format on save for specified filetypes
+ -- "python",
+ },
+ },
+ disabled = { -- disable formatting capabilities for the listed language servers
+ -- disable lua_ls formatting capability if you want to use StyLua to format your lua code
+ -- "lua_ls",
+ },
+ timeout_ms = 1000, -- default format timeout
+ -- filter = function(client) -- fully override the default formatting function
+ -- return true
+ -- end
+ },
+ -- enable servers that you already have installed without mason
+ servers = {
+ -- "pyright"
+ },
+ },
+ -- Configure require("lazy").setup() options
+ lazy = {
+ defaults = { lazy = true },
+ performance = {
+ rtp = {
+ -- customize default disabled vim plugins
+ disabled_plugins = { "tohtml", "gzip", "matchit", "zipPlugin", "netrwPlugin", "tarPlugin" },
+ },
+ },
+ },
+ -- This function is run last and is a good place to configuring
+ -- augroups/autocommands and custom filetypes also this just pure lua so
+ -- anything that doesn't fit in the normal config locations above can go here
+ polish = function()
+ -- Set up custom filetypes
+ -- vim.filetype.add {
+ -- extension = {
+ -- foo = "fooscript",
+ -- },
+ -- filename = {
+ -- ["Foofile"] = "fooscript",
+ -- },
+ -- pattern = {
+ -- ["~/%.config/foo/.*"] = "fooscript",
+ -- },
+ -- }
+ end,
+}
diff --git a/user/.config/nvim/lua/user/mappings.lua b/user/.config/nvim/lua/user/mappings.lua
new file mode 100644
index 0000000..4d1ff82
--- /dev/null
+++ b/user/.config/nvim/lua/user/mappings.lua
@@ -0,0 +1,42 @@
+-- Mapping data with "desc" stored directly by vim.keymap.set().
+--
+-- Please use this mappings table to set keyboard mapping since this is the
+-- lower level configuration and more robust one. (which-key will
+-- automatically pick-up stored data by this setting.)
+return {
+ -- first key is the mode
+ n = {
+ -- second key is the lefthand side of the map
+ -- mappings seen under group name "Buffer"
+ ["<leader>bn"] = { "<cmd>tabnew<cr>", desc = "New tab" },
+ ["<leader>bD"] = {
+ function()
+ require("astronvim.utils.status").heirline.buffer_picker(function(bufnr)
+ require("astronvim.utils.buffer").close(
+ bufnr)
+ end)
+ end,
+ desc = "Pick to close",
+ },
+ -- tables with the `name` key will be registered with which-key if it's installed
+ -- this is useful for naming menus
+ ["<leader>b"] = { name = "Buffers" },
+ ["<C-d>"] = { "<C-d>zz" },
+ ["<C-u>"] = { "<C-u>zz" },
+ ["n"] = { "nzz" },
+ ["<S-l>"] = { function() require("astronvim.utils.buffer").nav(vim.v.count > 0 and vim.v.count or 1) end, desc =
+ "Next buffer" },
+ ["<S-h>"] = { function() require("astronvim.utils.buffer").nav(-(vim.v.count > 0 and vim.v.count or 1)) end, desc =
+ "Previous buffer" },
+ ["<F2>"] = { "<cmd> CompetiTestReceive problem <CR>", desc = "Receive test" },
+ ["<F4>"] = { "<cmd> CompetiTestRun <CR>", desc = "Run test" },
+ ["<F5>"] = { "<cmd> CompetiTestAdd <CR>", desc = "Add test" },
+ ["<leader>h"] = { "<cmd> noh <CR>", desc = "nohighlights" },
+ -- quick save
+ -- ["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
+ },
+ t = {
+ -- setting a mapping to false will disable it
+ -- ["<esc>"] = false,
+ },
+}
diff --git a/user/.config/nvim/lua/user/options.lua b/user/.config/nvim/lua/user/options.lua
new file mode 100644
index 0000000..389b4dd
--- /dev/null
+++ b/user/.config/nvim/lua/user/options.lua
@@ -0,0 +1,29 @@
+-- set vim options here (vim.<first_key>.<second_key> = value)
+return {
+ opt = {
+ -- set to true or false etc.
+ relativenumber = true, -- sets vim.opt.relativenumber
+ number = true, -- sets vim.opt.number
+ spell = false, -- sets vim.opt.spell
+ signcolumn = "auto", -- sets vim.opt.signcolumn to auto
+ wrap = false, -- sets vim.opt.wrap
+ },
+ g = {
+ mapleader = " ", -- sets vim.g.mapleader
+ autoformat_enabled = true, -- enable or disable auto formatting at start (lsp.formatting.format_on_save must be enabled)
+ cmp_enabled = true, -- enable completion at start
+ autopairs_enabled = true, -- enable autopairs at start
+ diagnostics_mode = 3, -- set the visibility of diagnostics in the UI (0=off, 1=only show in status line, 2=virtual text off, 3=all on)
+ icons_enabled = true, -- disable icons in the UI (disable if no nerd font is available, requires :PackerSync after changing)
+ ui_notifications_enabled = true, -- disable notifications when toggling UI elements
+ },
+}
+-- If you need more control, you can use the function()...end notation
+-- return function(local_vim)
+-- local_vim.opt.relativenumber = true
+-- local_vim.g.mapleader = " "
+-- local_vim.opt.whichwrap = vim.opt.whichwrap - { 'b', 's' } -- removing option from list
+-- local_vim.opt.shortmess = vim.opt.shortmess + { I = true } -- add to option list
+--
+-- return local_vim
+-- end
diff --git a/user/.config/nvim/lua/user/plugins/colorscheme.lua b/user/.config/nvim/lua/user/plugins/colorscheme.lua
new file mode 100644
index 0000000..c166e41
--- /dev/null
+++ b/user/.config/nvim/lua/user/plugins/colorscheme.lua
@@ -0,0 +1,59 @@
+return {
+ "marko-cerovac/material.nvim",
+ init = function()
+ vim.g.material_style = "deep ocean" -- "deep ocean" is also quite nice!
+ end,
+ config = function()
+ local colors = require("material.colors")
+ require("material").setup({
+ contrast = {
+ non_current_windows = true,
+ cursor_line = true,
+ floating_windows = true,
+ },
+ styles = {
+ comments = { italic = true },
+ functions = { bold = true },
+ },
+ high_visibility = {
+ darker = true,
+ },
+ plugins = {
+ "dap",
+ "gitsigns",
+ -- "indent-blankline", -- we use the plugin but the theme makes it worse
+ "nvim-cmp",
+ "nvim-web-devicons",
+ "telescope",
+ "which-key",
+ },
+ custom_highlights = {
+ DiagnosticVirtualTextError = {
+ fg = colors.lsp.error,
+ bg = colors.main.black,
+ italic = true,
+ },
+ DiagnosticVirtualTextHint = {
+ fg = colors.lsp.hint,
+ bg = colors.main.black,
+ italic = true,
+ },
+ DiagnosticVirtualTextInfo = {
+ fg = colors.lsp.info,
+ bg = colors.main.black,
+ italic = true,
+ },
+ DiagnosticVirtualTextOk = {
+ fg = colors.lsp.info,
+ bg = colors.main.black,
+ italic = true,
+ },
+ DiagnosticVirtualTextWarn = {
+ fg = colors.lsp.warning,
+ bg = colors.main.black,
+ italic = true,
+ },
+ },
+ })
+ end,
+}
diff --git a/user/.config/nvim/lua/user/plugins/community.lua b/user/.config/nvim/lua/user/plugins/community.lua
new file mode 100644
index 0000000..9fbafdd
--- /dev/null
+++ b/user/.config/nvim/lua/user/plugins/community.lua
@@ -0,0 +1,10 @@
+return {
+ -- Add the community repository of plugin specifications
+ "AstroNvim/astrocommunity",
+ -- example of imporing a plugin, comment out to use it or add your own
+ -- available plugins can be found at https://github.com/AstroNvim/astrocommunity
+
+ { import = "astrocommunity.colorscheme.catppuccin" },
+ { import = "astrocommunity.motion.nvim-surround" },
+ -- { import = "astrocommunity.completion.copilot-lua-cmp" },
+}
diff --git a/user/.config/nvim/lua/user/plugins/core.lua b/user/.config/nvim/lua/user/plugins/core.lua
new file mode 100644
index 0000000..be1fc3e
--- /dev/null
+++ b/user/.config/nvim/lua/user/plugins/core.lua
@@ -0,0 +1,77 @@
+return {
+ -- customize alpha options
+ {
+ "goolord/alpha-nvim",
+ opts = function(_, opts)
+ -- customize the dashboard header
+ opts.section.header.val = {
+ " █████ ███████ ████████ ██████ ██████",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "███████ ███████ ██ ██████ ██ ██",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "██ ██ ███████ ██ ██ ██ ██████",
+ " ",
+ " ███  ██ ██  ██ ██ ███  ███",
+ " ████  ██ ██  ██ ██ ████  ████",
+ " ██ ██  ██ ██  ██ ██ ██ ████ ██",
+ " ██  ██ ██  ██  ██  ██ ██  ██  ██",
+ " ██   ████   ████   ██ ██      ██",
+ }
+ return opts
+ end,
+ },
+ -- You can disable default plugins as follows:
+ -- { "max397574/better-escape.nvim", enabled = false },
+ --
+ -- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
+ -- {
+ -- "L3MON4D3/LuaSnip",
+ -- config = function(plugin, opts)
+ -- require "plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call
+ -- -- add more custom luasnip configuration such as filetype extend or custom snippets
+ -- local luasnip = require "luasnip"
+ -- luasnip.filetype_extend("javascript", { "javascriptreact" })
+ -- end,
+ -- },
+ -- {
+ -- "windwp/nvim-autopairs",
+ -- config = function(plugin, opts)
+ -- require "plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call
+ -- -- add more custom autopairs configuration such as custom rules
+ -- local npairs = require "nvim-autopairs"
+ -- local Rule = require "nvim-autopairs.rule"
+ -- local cond = require "nvim-autopairs.conds"
+ -- npairs.add_rules(
+ -- {
+ -- Rule("$", "$", { "tex", "latex" })
+ -- -- don't add a pair if the next character is %
+ -- :with_pair(cond.not_after_regex "%%")
+ -- -- don't add a pair if the previous character is xxx
+ -- :with_pair(
+ -- cond.not_before_regex("xxx", 3)
+ -- )
+ -- -- don't move right when repeat character
+ -- :with_move(cond.none())
+ -- -- don't delete if the next character is xx
+ -- :with_del(cond.not_after_regex "xx")
+ -- -- disable adding a newline when you press <cr>
+ -- :with_cr(cond.none()),
+ -- },
+ -- -- disable for .vim files, but it work for another filetypes
+ -- Rule("a", "a", "-vim")
+ -- )
+ -- end,
+ -- },
+ -- By adding to the which-key config and using our helper function you can add more which-key registered bindings
+ -- {
+ -- "folke/which-key.nvim",
+ -- config = function(plugin, opts)
+ -- require "plugins.configs.which-key"(plugin, opts) -- include the default astronvim config that calls the setup call
+ -- -- Add bindings which show up as group name
+ -- local wk = require "which-key"
+ -- wk.register({
+ -- b = { name = "Buffer" },
+ -- }, { mode = "n", prefix = "<leader>" })
+ -- end,
+ -- },
+}
diff --git a/user/.config/nvim/lua/user/plugins/mason.lua b/user/.config/nvim/lua/user/plugins/mason.lua
new file mode 100644
index 0000000..9018347
--- /dev/null
+++ b/user/.config/nvim/lua/user/plugins/mason.lua
@@ -0,0 +1,26 @@
+-- customize mason plugins
+return {
+ -- use mason-lspconfig to configure LSP installations
+ {
+ "williamboman/mason-lspconfig.nvim",
+ -- overrides `require("mason-lspconfig").setup(...)`
+ opts = {
+ -- ensure_installed = { "lua_ls" },
+ },
+ },
+ -- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
+ {
+ "jay-babu/mason-null-ls.nvim",
+ -- overrides `require("mason-null-ls").setup(...)`
+ opts = {
+ -- ensure_installed = { "prettier", "stylua" },
+ },
+ },
+ {
+ "jay-babu/mason-nvim-dap.nvim",
+ -- overrides `require("mason-nvim-dap").setup(...)`
+ opts = {
+ -- ensure_installed = { "python" },
+ },
+ },
+}
diff --git a/user/.config/nvim/lua/user/plugins/null-ls.lua b/user/.config/nvim/lua/user/plugins/null-ls.lua
new file mode 100644
index 0000000..beceeda
--- /dev/null
+++ b/user/.config/nvim/lua/user/plugins/null-ls.lua
@@ -0,0 +1,17 @@
+return {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, config)
+ -- config variable is the default configuration table for the setup function call
+ -- local null_ls = require "null-ls"
+
+ -- Check supported formatters and linters
+ -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
+ -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
+ config.sources = {
+ -- Set a formatter
+ -- null_ls.builtins.formatting.stylua,
+ -- null_ls.builtins.formatting.prettier,
+ }
+ return config -- return final config table
+ end,
+}
diff --git a/user/.config/nvim/lua/user/plugins/treesitter.lua b/user/.config/nvim/lua/user/plugins/treesitter.lua
new file mode 100644
index 0000000..fdb13b9
--- /dev/null
+++ b/user/.config/nvim/lua/user/plugins/treesitter.lua
@@ -0,0 +1,6 @@
+return {
+ "nvim-treesitter/nvim-treesitter",
+ opts = {
+ ensure_installed = { "lua", "cpp", "rust", "typescript", "tsx", "css", "html", "python", "java" },
+ },
+}
diff --git a/user/.config/nvim/lua/user/plugins/user.lua b/user/.config/nvim/lua/user/plugins/user.lua
new file mode 100644
index 0000000..88a5b5d
--- /dev/null
+++ b/user/.config/nvim/lua/user/plugins/user.lua
@@ -0,0 +1,135 @@
+return {
+ -- You can also add new plugins here as well:
+ -- Add plugins, the lazy syntax
+ -- "andweeb/presence.nvim",
+ -- {
+ -- "ray-x/lsp_signature.nvim",
+ -- event = "BufRead",
+ -- config = function()
+ -- require("lsp_signature").setup()
+ -- end,
+ -- },
+ --
+ { "marko-cerovac/material.nvim", lazy = true },
+ {
+ 'xeluxee/competitest.nvim',
+ requires = 'MunifTanjim/nui.nvim',
+ event = "BufRead",
+ config = function()
+ require 'competitest'.setup(
+ {
+ local_config_file_name = ".competitest.lua",
+ floating_border = "rounded",
+ floating_border_highlight = "FloatBorder",
+ picker_ui = {
+ width = 0.2,
+ height = 0.3,
+ mappings = {
+ focus_next = { "j", "<down>", "<Tab>" },
+ focus_prev = { "k", "<up>", "<S-Tab>" },
+ close = { "<esc>", "<C-c>", "q", "Q" },
+ submit = { "<cr>" },
+ },
+ },
+ editor_ui = {
+ popup_width = 0.4,
+ popup_height = 0.6,
+ show_nu = true,
+ show_rnu = false,
+ normal_mode_mappings = {
+ switch_window = { "<C-h>", "<C-l>", "<C-i>" },
+ save_and_close = "<C-s>",
+ cancel = { "q", "Q" },
+ },
+ insert_mode_mappings = {
+ switch_window = { "<C-h>", "<C-l>", "<C-i>" },
+ save_and_close = "<C-s>",
+ cancel = "<C-q>",
+ },
+ },
+ runner_ui = {
+ interface = "popup",
+ selector_show_nu = false,
+ selector_show_rnu = false,
+ show_nu = true,
+ show_rnu = false,
+ mappings = {
+ run_again = "R",
+ run_all_again = "<C-r>",
+ kill = "K",
+ kill_all = "<C-k>",
+ view_input = { "i", "I" },
+ view_output = { "a", "A" },
+ view_stdout = { "o", "O" },
+ view_stderr = { "e", "E" },
+ toggle_diff = { "d", "D" },
+ close = { "q", "Q" },
+ },
+ viewer = {
+ width = 0.5,
+ height = 0.5,
+ show_nu = true,
+ show_rnu = false,
+ close_mappings = { "q", "Q" },
+ },
+ },
+ popup_ui = {
+ total_width = 0.8,
+ total_height = 0.8,
+ layout = {
+ { 4, "tc" },
+ { 5, { { 1, "so" }, { 1, "si" } } },
+ { 5, { { 1, "eo" }, { 1, "se" } } },
+ },
+ },
+ split_ui = {
+ position = "right",
+ relative_to_editor = true,
+ total_width = 0.3,
+ vertical_layout = {
+ { 1, "tc" },
+ { 1, { { 1, "so" }, { 1, "eo" } } },
+ { 1, { { 1, "si" }, { 1, "se" } } },
+ },
+ total_height = 0.4,
+ horizontal_layout = {
+ { 2, "tc" },
+ { 3, { { 1, "so" }, { 1, "si" } } },
+ { 3, { { 1, "eo" }, { 1, "se" } } },
+ },
+ },
+ save_current_file = true,
+ save_all_files = false,
+ compile_directory = ".",
+ compile_command = {
+ c = { exec = "gcc", args = { "-Wall", "$(FNAME)", "-o", "$(FNOEXT)" } },
+ cpp = { exec = "g++", args = { "-Wall", "$(FNAME)", "-o", "$(FNOEXT)" } },
+ rust = { exec = "rustc", args = { "$(FNAME)" } },
+ java = { exec = "javac", args = { "$(FNAME)" } },
+ },
+ running_directory = ".",
+ run_command = {
+ c = { exec = "./$(FNOEXT)" },
+ cpp = { exec = "./$(FNOEXT)" },
+ rust = { exec = "./$(FNOEXT)" },
+ python = { exec = "python", args = { "$(FNAME)" } },
+ java = { exec = "java", args = { "$(FNOEXT)" } },
+ },
+ multiple_testing = -1,
+ maximum_time = 5000,
+ output_compare_method = "squish",
+ view_output_diff = false,
+ testcases_directory = ".",
+ testcases_use_single_file = false,
+ testcases_auto_detect_storage = true,
+ testcases_single_file_format = "$(FNOEXT).testcases",
+ testcases_input_file_format = "$(FNOEXT)_input$(TCNUM).txt",
+ testcases_output_file_format = "$(FNOEXT)_output$(TCNUM).txt",
+ companion_port = 27121,
+ receive_print_message = true,
+ template_file = false,
+ }
+ )
+ end
+ },
+}