debian-dots

dotfiles (does the obvious)
git clone [email protected]:dracuxan/debian-dots.git
Log | Files | Refs | README | LICENSE

toggleterm.lua (3893B)


      1 local vim = vim
      2 local autoRun = "horizontal"
      3 local default = "vertical"
      4 local status_ok, toggleterm = pcall(require, "toggleterm")
      5 if not status_ok then
      6 	return
      7 end
      8 
      9 toggleterm.setup({
     10 	size = function(term)
     11 		if term.direction == "horizontal" then
     12 			return 20
     13 		else
     14 			return 60
     15 		end
     16 	end,
     17 	open_mapping = [[<C-t>]],
     18 	hide_numbers = true,
     19 	shade_filetypes = {},
     20 	shade_terminals = true,
     21 	shading_factor = 2,
     22 	start_in_insert = true,
     23 	insert_mappings = true,
     24 	persist_size = true,
     25 	direction = default,
     26 	close_on_exit = true,
     27 	shell = vim.o.shell,
     28 	float_opts = {
     29 		border = "curved",
     30 		winblend = 0,
     31 		highlights = {
     32 			border = "Normal",
     33 			background = "Normal",
     34 		},
     35 	},
     36 })
     37 
     38 function _G.set_terminal_keymaps()
     39 	local opts = { noremap = true }
     40 	vim.api.nvim_buf_set_keymap(0, "t", "<esc>", [[<C-\><C-n>]], opts)
     41 	vim.api.nvim_buf_set_keymap(0, "t", "jk", [[<C-\><C-n>]], opts)
     42 end
     43 
     44 vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")
     45 local Terminal = require("toggleterm.terminal").Terminal
     46 
     47 -- Define toggle functions
     48 
     49 function _RUN_SCRIPT()
     50 	local buffname = vim.api.nvim_buf_get_name(0)
     51 	local filepath = vim.fn.fnamemodify(buffname, ":p")
     52 	local script_run = Terminal:new({
     53 		cmd = "run " .. filepath,
     54 		hidden = true,
     55 		close_on_exit = false,
     56 		direction = autoRun,
     57 		persist_size = true,
     58 	})
     59 
     60 	script_run:toggle()
     61 end
     62 
     63 function _RUN_TEST()
     64 	local buffname = vim.api.nvim_buf_get_name(0)
     65 	local filepath = vim.fn.fnamemodify(buffname, ":p")
     66 	local script_test = Terminal:new({
     67 		cmd = "run " .. filepath .. " --test",
     68 		direction = autoRun,
     69 		persist_size = true,
     70 		hidden = true,
     71 		close_on_exit = false,
     72 	})
     73 	script_test:toggle()
     74 end
     75 
     76 function _RUN_REPL()
     77 	local buffname = vim.api.nvim_buf_get_name(0)
     78 	local filepath = vim.fn.fnamemodify(buffname, ":p")
     79 	local script_test = Terminal:new({
     80 		cmd = "run " .. filepath .. " --repl",
     81 		direction = autoRun,
     82 		persist_size = true,
     83 		hidden = true,
     84 		close_on_exit = false,
     85 	})
     86 	script_test:toggle()
     87 end
     88 
     89 function _RUN_MIX()
     90 	local buffname = vim.api.nvim_buf_get_name(0)
     91 	local filepath = vim.fn.fnamemodify(buffname, ":p")
     92 	local script_test = Terminal:new({
     93 		cmd = "run " .. filepath .. " --mix",
     94 		direction = autoRun,
     95 		persist_size = true,
     96 		hidden = true,
     97 		close_on_exit = false,
     98 	})
     99 	script_test:toggle()
    100 end
    101 
    102 function _RUN_BUILD()
    103 	local buffname = vim.api.nvim_buf_get_name(0)
    104 	local filepath = vim.fn.fnamemodify(buffname, ":p")
    105 	local script_build = Terminal:new({
    106 		cmd = "run " .. filepath .. " --build",
    107 		hidden = true,
    108 		direction = autoRun,
    109 		persist_size = true,
    110 		close_on_exit = false,
    111 	})
    112 	script_build:toggle()
    113 end
    114 
    115 function _SEND_BIN()
    116 	local buffname = vim.api.nvim_buf_get_name(0)
    117 	local filepath = vim.fn.fnamemodify(buffname, ":p")
    118 	local sendToServer = "run " .. filepath .. " --build && scp ./bin/* Igris.local:/home/igris/exps"
    119 	local script_send = Terminal:new({
    120 		cmd = sendToServer,
    121 		hidden = true,
    122 		direction = autoRun,
    123 		persist_size = true,
    124 		close_on_exit = false,
    125 	})
    126 	script_send:toggle()
    127 end
    128 
    129 function _LAZYGIT_TOGGLE()
    130 	local lazygit = Terminal:new({ cmd = "lazygit", hidden = true, direction = "float" })
    131 
    132 	lazygit:toggle()
    133 end
    134 
    135 -- Set keymaps
    136 vim.keymap.set("n", "<leader>mr", _RUN_SCRIPT, { noremap = true, silent = true, desc = "run script" })
    137 vim.keymap.set("n", "<leader>mt", _RUN_TEST, { noremap = true, silent = true, desc = "run test(s)" })
    138 vim.keymap.set("n", "<leader>mi", _RUN_REPL, { noremap = true, silent = true, desc = "run REPL" })
    139 vim.keymap.set("n", "<leader>mm", _RUN_MIX, { noremap = true, silent = true, desc = "run with MIX" })
    140 vim.keymap.set("n", "<leader>mb", _RUN_BUILD, { noremap = true, silent = true, desc = "build project" })
    141 vim.keymap.set("n", "<leader>ms", _SEND_BIN, { noremap = true, silent = true, desc = "send binaries to server" })
    142 vim.keymap.set("n", "<leader>ml", _LAZYGIT_TOGGLE, { noremap = true, silent = true, desc = "lazygit" })