diff --git a/README.md b/README.md index f1596fb..1e0fbd0 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,7 @@ require("harpoon").setup({ save_on_toggle = false, save_on_change = true, enter_on_sendcmd = false, + excluded_filetypes = { "harpoon" } }, ... your other configs ... }) @@ -159,6 +160,7 @@ require("harpoon").setup({ what I have found). * `enter_on_sendcmd` will set harpoon to run the command immediately as it's passed to the terminal when calling `sendCommand`. +* `excluded_filetypes` filetypes that you want to prevent from adding to the harpoon list menu. #### Preconfigured Terminal Commands These are project specific commands that you wish to execute on the regular. diff --git a/lua/harpoon/init.lua b/lua/harpoon/init.lua index ae184ad..86300b2 100644 --- a/lua/harpoon/init.lua +++ b/lua/harpoon/init.lua @@ -157,6 +157,7 @@ M.setup = function(config) ["save_on_toggle"] = false, ["save_on_change"] = true, ["enter_on_sendcmd"] = false, + ["excluded_filetypes"] = { "harpoon" }, }, }, expand_dir( c_config diff --git a/lua/harpoon/mark.lua b/lua/harpoon/mark.lua index b87e209..6d7fd3d 100644 --- a/lua/harpoon/mark.lua +++ b/lua/harpoon/mark.lua @@ -115,6 +115,27 @@ local function validate_buf_name(buf_name) end end +local function filter_filetype() + local current_filetype = vim.bo.filetype + local excluded_filetypes = harpoon.get_global_settings().excluded_filetypes + + if current_filetype == "harpoon" then + log.error("filter_filetype(): You can't add harpoon to the harpoon") + error("You can't add harpoon to the harpoon") + return + end + + if vim.tbl_contains(excluded_filetypes, current_filetype) then + log.error( + 'filter_filetype(): This filetype cannot be added or is included in the "excluded_filetypes" option' + ) + error( + 'This filetype cannot be added or is included in the "excluded_filetypes" option' + ) + return + end +end + M.get_index_of = function(item) log.trace("get_index_of():", item) if item == nil then @@ -180,6 +201,7 @@ M.valid_index = function(idx) end M.add_file = function(file_name_or_buf_id) + filter_filetype() local buf_name = get_buf_name(file_name_or_buf_id) log.trace("add_file():", buf_name) @@ -290,6 +312,7 @@ M.get_length = function() end M.set_current_at = function(idx) + filter_filetype() local buf_name = get_buf_name() log.trace("set_current_at(): Setting id", idx, buf_name) local config = harpoon.get_mark_config()