From 982c79ebc1eed3d40ec75f94a2f9ad7a37c1423e Mon Sep 17 00:00:00 2001
From: Matthew Leong <mattleong91@gmail.com>
Date: Sun, 9 Jun 2024 23:45:05 -0700
Subject: [PATCH] feat: init toggleterm

---
 lua/cosmic/config/examples/editor.lua        |  2 +-
 lua/cosmic/core/mappings.lua                 | 11 +++++-
 lua/cosmic/plugins/auto-session/mappings.lua |  2 +-
 lua/cosmic/plugins/noice/init.lua            |  2 +-
 lua/cosmic/plugins/nvim-tree/init.lua        |  2 +-
 lua/cosmic/plugins/telescope/init.lua        |  2 +-
 lua/cosmic/plugins/terminal/init.lua         |  6 ++--
 lua/cosmic/plugins/terminal/mappings.lua     |  2 +-
 lua/cosmic/plugins/toggleterm/init.lua       | 37 +++++++++++---------
 lua/cosmic/utils/init.lua                    |  4 +--
 10 files changed, 41 insertions(+), 29 deletions(-)

diff --git a/lua/cosmic/config/examples/editor.lua b/lua/cosmic/config/examples/editor.lua
index aec7e5b..6604db6 100644
--- a/lua/cosmic/config/examples/editor.lua
+++ b/lua/cosmic/config/examples/editor.lua
@@ -1,7 +1,7 @@
 -- Override Cosmic editor options
 
 local g = vim.g
-local map = require('cosmic.utils').map
+local map = require('cosmic.utils').set_keymap
 local opt = vim.opt
 
 -- Default leader is <space>
diff --git a/lua/cosmic/core/mappings.lua b/lua/cosmic/core/mappings.lua
index a7743fe..a36b4ac 100644
--- a/lua/cosmic/core/mappings.lua
+++ b/lua/cosmic/core/mappings.lua
@@ -1,4 +1,4 @@
-local map = require('cosmic.utils').map
+local map = require('cosmic.utils').set_keymap
 
 -- Quickfix mappings
 map('n', '<leader>ck', ':cexpr []<cr>', { desc = 'Clear list' })
@@ -34,4 +34,13 @@ map('n', '<C-Down>', ':resize +2<CR>', { desc = 'Resize +2' })
 map('n', '<C-Left>', ':vertical resize -2<CR>', { desc = 'Vertical Resize -2' })
 map('n', '<C-Right>', ':vertical resize +2<CR>', { desc = 'Vertical Resize +2' })
 
+-- map('n', '<C-h>', [[<Cmd>wincmd h<CR>]], {})
+-- map('n', '<C-j>', [[<Cmd>wincmd j<CR>]], {})
+-- map('n', '<C-k>', [[<Cmd>wincmd k<CR>]], {})
+-- map('n', '<C-l>', [[<Cmd>wincmd l<CR>]], {})
+--[[ map('n', '<C-h>', '<C-w>h', {}) ]]
+--[[ map('n', '<C-j>', '<C-w>j', {}) ]]
+--[[ map('n', '<C-k>', '<C-w>k', {}) ]]
+--[[ map('n', '<C-l>', '<C-w>l', {}) ]]
+
 map('n', '<leader>bo', '<cmd>%bd|e#<cr>', { desc = 'Close all buffers but the current one' }) -- https://stackoverflow.com/a/42071865/516188
diff --git a/lua/cosmic/plugins/auto-session/mappings.lua b/lua/cosmic/plugins/auto-session/mappings.lua
index 339df10..1b7ef87 100644
--- a/lua/cosmic/plugins/auto-session/mappings.lua
+++ b/lua/cosmic/plugins/auto-session/mappings.lua
@@ -1,4 +1,4 @@
-local map = require('cosmic.utils').map
+local map = require('cosmic.utils').set_keymap
 
 -- session
 map('n', '<leader>sl', '<cmd>silent RestoreSession<cr>', { desc = 'Restore session' })
diff --git a/lua/cosmic/plugins/noice/init.lua b/lua/cosmic/plugins/noice/init.lua
index 103851a..7b1178c 100644
--- a/lua/cosmic/plugins/noice/init.lua
+++ b/lua/cosmic/plugins/noice/init.lua
@@ -1,6 +1,6 @@
 local user_config = require('cosmic.core.user')
 local u = require('cosmic.utils')
-local map = require('cosmic.utils').map
+local map = require('cosmic.utils').set_keymap
 
 return {
   'folke/noice.nvim',
diff --git a/lua/cosmic/plugins/nvim-tree/init.lua b/lua/cosmic/plugins/nvim-tree/init.lua
index 6baff09..2703be3 100644
--- a/lua/cosmic/plugins/nvim-tree/init.lua
+++ b/lua/cosmic/plugins/nvim-tree/init.lua
@@ -46,7 +46,7 @@ return {
     require('nvim-tree').setup(u.merge(args, user_config.plugins.nvim_tree or {}))
   end,
   init = function()
-    local map = require('cosmic.utils').map
+    local map = require('cosmic.utils').set_keymap
 
     map('n', '<C-n>', ':NvimTreeToggle<CR>', { desc = 'Toggle Tree' })
     map('n', '<leader>nt', ':NvimTreeToggle<CR>', { desc = 'Toggle Tree' })
diff --git a/lua/cosmic/plugins/telescope/init.lua b/lua/cosmic/plugins/telescope/init.lua
index aa064c0..85bc515 100644
--- a/lua/cosmic/plugins/telescope/init.lua
+++ b/lua/cosmic/plugins/telescope/init.lua
@@ -15,7 +15,7 @@ return {
   init = function()
     -- normal mappings
     local u = require('cosmic.utils')
-    local map = u.map
+    local map = u.set_keymap
 
     map('n', '<leader>ff', '', {
       callback = require('cosmic.plugins.telescope.utils').project_files,
diff --git a/lua/cosmic/plugins/terminal/init.lua b/lua/cosmic/plugins/terminal/init.lua
index 4c460e6..c66062a 100644
--- a/lua/cosmic/plugins/terminal/init.lua
+++ b/lua/cosmic/plugins/terminal/init.lua
@@ -3,9 +3,9 @@ local user_config = require('cosmic.core.user')
 return {
   'voldikss/vim-floaterm',
   cmd = { 'FloatermToggle', 'FloatermNew' },
-  keys = {
-    { '<C-l>', '<cmd>FloatermToggle<cr>', desc = 'Floating Terminal' },
-  },
+  --[[ keys = { ]]
+  --[[   { '<C-l>', '<cmd>FloatermToggle<cr>', desc = 'Floating Terminal' }, ]]
+  --[[ }, ]]
   config = function()
     local g = vim.g
     local title = vim.env.SHELL
diff --git a/lua/cosmic/plugins/terminal/mappings.lua b/lua/cosmic/plugins/terminal/mappings.lua
index 1b18aa5..614ae55 100644
--- a/lua/cosmic/plugins/terminal/mappings.lua
+++ b/lua/cosmic/plugins/terminal/mappings.lua
@@ -1,4 +1,4 @@
-local map = require('cosmic.utils').map
+local map = require('cosmic.utils').set_keymap
 
 map('n', '<C-l>', ':FloatermToggle<CR>', { desc = 'Toggle Floaterm' })
 map('t', '<C-l>', [[<C-\><C-n>]], { desc = 'Close Floaterm' })
diff --git a/lua/cosmic/plugins/toggleterm/init.lua b/lua/cosmic/plugins/toggleterm/init.lua
index ea270c1..f837bcb 100644
--- a/lua/cosmic/plugins/toggleterm/init.lua
+++ b/lua/cosmic/plugins/toggleterm/init.lua
@@ -1,5 +1,5 @@
 local user_config = require('cosmic.core.user')
-local map = require('cosmic.utils').map
+local map = require('cosmic.utils').set_keymap
 local create_buf_map = require('cosmic.utils').create_buf_map
 return {
   'akinsho/toggleterm.nvim',
@@ -9,29 +9,32 @@ return {
       float_opts = {
         border = user_config.border,
       },
+      highlights = {
+        FloatBorder = {
+          link = 'FloatBorder',
+        },
+      },
     })
 
     local Terminal = require('toggleterm.terminal').Terminal
 
-    function new_terminal()
-      local terminal = Terminal:new({
-        on_open = function(term)
-          local buf_map = create_buf_map(term.bufnr, {
-            noremap = false,
-          })
-          vim.cmd('startinsert!')
-        end,
-        -- function to run on closing the terminal
-        on_close = function(term)
-          vim.cmd('startinsert!')
-        end,
-      })
+    local function new_terminal()
+      local terminal = Terminal:new()
       terminal:toggle()
     end
 
-    map('n', '<C-l>', ':ToggleTerm<CR>', { desc = 'Toggle Terminal' })
-    map('t', '<esc>', [[<C-\><C-n>]], { desc = 'Close Floaterm' })
-    map('t', '<C-w>n', new_terminal, { desc = 'New terminal' })
+    map('n', '<leader>kn', new_terminal, { desc = 'New terminal' })
+
+    map('n', '<leader>k', ':ToggleTerm<CR>', { desc = 'Toggle Terminal' })
+    map('t', '<leader>k', [[<C-\><C-n>]] .. ':ToggleTerm<CR>', { desc = 'Toggle Terminal' })
+    map('n', '<leader>kk', ':TermSelect<CR>', { desc = 'Choose open terminal' })
+    map('t', '<leader>kk', [[<C-\><C-n>]] .. ':TermSelect<CR>', { desc = 'Choose open terminal' })
+
+    map('t', '<esc>', [[<C-\><C-n>]], { desc = 'Visual mode' })
+    map('t', '<leader>kn', new_terminal, { desc = 'New terminal' })
+    map('n', '<leader>kr', ':ToggleTermSetName<CR>', { desc = 'Rename terminal' })
+
+    -- @TODO: close all
   end,
   lazy = false,
 }
diff --git a/lua/cosmic/utils/init.lua b/lua/cosmic/utils/init.lua
index a848e92..4143fec 100644
--- a/lua/cosmic/utils/init.lua
+++ b/lua/cosmic/utils/init.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.map(mode, lhs, rhs, opts)
+function M.set_keymap(mode, lhs, rhs, opts)
   local defaults = {
     silent = true,
     noremap = true,
@@ -10,7 +10,7 @@ end
 
 function M.create_buf_map(bufnr, opts)
   return function(mode, lhs, rhs, map_opts)
-    M.map(
+    M.set_keymap(
       mode,
       lhs,
       rhs,