aboutsummaryrefslogtreecommitdiffstats
path: root/lua/config/editor.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/config/editor.lua')
-rw-r--r--lua/config/editor.lua140
1 files changed, 140 insertions, 0 deletions
diff --git a/lua/config/editor.lua b/lua/config/editor.lua
new file mode 100644
index 0000000..3db21d6
--- /dev/null
+++ b/lua/config/editor.lua
@@ -0,0 +1,140 @@
1local js_based_languages = { "typescript", "javascript", "typescriptreact", "javascriptreact" }
2local option = vim.opt;
3local keymap = vim.keymap;
4
5local dap = require("dap")
6local telescope = require('telescope.builtin');
7local autotag = require('nvim-ts-autotag').setup();
8local dap_vscode = require("dap-vscode-js").setup({
9 debugger_path = "(runtimedir)/site/pack/packer/opt/vscode-js-debug",
10 adapters = { 'chrome', 'pwa-node', 'pwa-chrome', 'pwa-msedge', 'node-terminal', 'pwa-extensionHost', 'node', 'chrome' },
11})
12
13--Basic Editor Setup
14option.nu = true;
15option.tabstop = 2;
16option.softtabstop = 2;
17option.shiftwidth = 2;
18option.expandtab = true;
19option.smartindent = true;
20option.wrap = false;
21option.swapfile = false;
22option.hlsearch = false;
23option.incsearch = true;
24option.updatetime = 50;
25option.laststatus = 0;
26option.signcolumn = "number";
27option.autoindent = true;
28option.clipboard = "unnamedplus";
29option.termguicolors = true;
30
31-- Setup Editor Theme
32 vim.cmd.colorscheme("gruvbox")
33 vim.cmd([[
34 highlight GitGutterAdd ctermbg=none
35 highlight GitGutterAdd guibg=none
36 highlight Normal ctermbg=none
37 highlight Normal guibg=none
38 highlight signcolumn ctermbg=none
39 highlight signcolumn guibg=none
40 ]])
41
42-- run specific commands after different file extensions
43vim.cmd([[
44 augroup RunPfOnSave
45 autocmd!
46 autocmd BufWritePost *.js,*.ts,*.jsx,*json !prettier --write .
47 autocmd BufWritePost *.tex :VimtexCompile
48 autocmd BufWritePost *.md :MarkdownPreview
49 augroup END
50]])
51
52-- vim.cmd([[
53-- augroup RunPfOnSave
54-- autocmd!
55-- augroup END
56-- ]])
57--
58-- vim.cmd([[
59-- augroup RunPfOnSave
60-- autocmd!
61-- autocmd BufWritePost *.tex :VimtexCompile
62-- augroup END
63--]])
64
65-- Gui options
66vim.o.guifont = "Fira Code:h7"
67vim.g.vimtex_view_method = 'zathura'
68vim.g.vimtex_compiler_method = 'latexrun'
69vim.g.gitgutter_set_sign_backgrounds = 1;
70vim.fn.sign_define('DapBreakpoint',{ text ='🟥', texthl ='', linehl ='', numhl =''})
71vim.fn.sign_define('DapStopped',{ text ='▶️', texthl ='', linehl ='', numhl =''})
72
73--Keybinds
74vim.g.mapleader = (" ")
75keymap.set("n", "<leader>e", vim.cmd.Ex)
76keymap.set('n', '<leader>f', telescope.find_files, {})
77keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
78keymap.set("n", "<leader>a", "ggVG")
79keymap.set("v", "J", ":m '>+1<CR>gv=gv")
80keymap.set("v", "K", ":m '<-2<CR>gv=gv")
81
82-- Debugger keybinds
83keymap.set('n', '<F5>', require 'dap'.continue)
84keymap.set('n', '<F10>', require 'dap'.step_over)
85keymap.set('n', '<F11>', require 'dap'.step_into)
86keymap.set('n', '<F12>', require 'dap'.step_out)
87keymap.set('n', '<leader>b', require 'dap'.toggle_breakpoint)
88
89keymap.set('n', '<leader>B', function()
90 require 'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))
91end)
92
93keymap.set('n', '<leader>ui', require 'dapui'.toggle)
94for _, language in ipairs(js_based_languages) do
95 require("dap").configurations[language] = {
96 {
97 type = "pwa-node",
98 request = "launch",
99 name = "Launch file",
100 program = "${file}",
101 cwd = "${workspaceFolder}",
102 },
103 {
104 type = "pwa-node",
105 request = "attach",
106 name = "Attach",
107 processId = require 'dap.utils'.pick_process,
108 cwd = "${workspaceFolder}",
109 },
110 {
111 type = "pwa-chrome",
112 request = "launch",
113 name = "Start Chrome with \"localhost\"",
114 url = "http://localhost:3000",
115 webRoot = "${workspaceFolder}",
116 userDataDir = "${workspaceFolder}/.vscode/vscode-chrome-debug-userdatadir"
117 }
118 }
119end
120require("dapui").setup()
121local dap, dapui = require("dap"), require("dapui")
122dap.listeners.after.event_initialized["dapui_config"] = function()
123 dapui.open({})
124end
125dap.listeners.before.event_terminated["dapui_config"] = function()
126 dapui.close({})
127end
128dap.listeners.before.event_exited["dapui_config"] = function()
129 dapui.close({})
130end
131
132--Treesitter
133require 'nvim-treesitter.configs'.setup {
134 ensure_installed = { "javascript", "typescript", "rust", "c", "lua", "vim" },
135 sync_install = false,
136 auto_install = true,
137 highlight = {
138 enable = true,
139 }
140}