aboutsummaryrefslogtreecommitdiffstats
path: root/hm/soispha/conf/nvim/plgs/goto-preview
diff options
context:
space:
mode:
Diffstat (limited to 'hm/soispha/conf/nvim/plgs/goto-preview')
-rw-r--r--hm/soispha/conf/nvim/plgs/goto-preview/default.nix42
-rw-r--r--hm/soispha/conf/nvim/plgs/goto-preview/lua/goto-preview.lua21
2 files changed, 63 insertions, 0 deletions
diff --git a/hm/soispha/conf/nvim/plgs/goto-preview/default.nix b/hm/soispha/conf/nvim/plgs/goto-preview/default.nix
new file mode 100644
index 00000000..740bb04c
--- /dev/null
+++ b/hm/soispha/conf/nvim/plgs/goto-preview/default.nix
@@ -0,0 +1,42 @@
+{
+ pkgs,
+ lib,
+ ...
+}: {
+ programs.nixvim = {
+ # TODO: package goto-preview though a module
+ extraConfigLuaPost = ''
+ ${lib.strings.fileContents ./lua/goto-preview.lua}
+ '';
+ extraPlugins = [
+ pkgs.vimExtraPlugins.goto-preview
+ ];
+ maps.normal = {
+ "<space>gd" = {
+ action = "require('goto-preview').goto_preview_definition";
+ lua = true;
+ desc = "[G]oto [D]efinition";
+ };
+ "<space>gtd" = {
+ action = "require('goto-preview').goto_preview_type_definition";
+ lua = true;
+ desc = "[G]oto the [t]ype [D]efinition";
+ };
+ "<space>gi" = {
+ action = "require('goto-preview').goto_preview_implementation";
+ lua = true;
+ desc = "[G]oto [I]mplementations";
+ };
+ "<space>gr" = {
+ action = "require('goto-preview').goto_preview_references";
+ lua = true;
+ desc = "[G]o to all [R]eferences of the symbol";
+ };
+ "\\<space>" = {
+ action = "require('goto-preview').close_all_win";
+ lua = true;
+ desc = "close all preview windows";
+ };
+ };
+ };
+}
diff --git a/hm/soispha/conf/nvim/plgs/goto-preview/lua/goto-preview.lua b/hm/soispha/conf/nvim/plgs/goto-preview/lua/goto-preview.lua
new file mode 100644
index 00000000..cde50d3e
--- /dev/null
+++ b/hm/soispha/conf/nvim/plgs/goto-preview/lua/goto-preview.lua
@@ -0,0 +1,21 @@
+require("goto-preview").setup({
+ width = 120; -- Width of the floating window
+ height = 15; -- Height of the floating window
+ border = { "↖"; "─"; "┐"; "│"; "┘"; "─"; "└"; "│"; }; -- Border characters of the floating window
+ default_mappings = false; -- Bind default mappings
+ debug = false; -- Print debug information
+ opacity = nil; -- 0-100 opacity level of the floating window where 100 is fully transparent.
+ resizing_mappings = false; -- Binds arrow keys to resizing the floating window.
+ post_open_hook = nil; -- A function taking two arguments, a buffer and a window to be ran as a hook.
+ post_close_hook = nil; -- A function taking two arguments, a buffer and a window to be ran as a hook.
+ references = { -- Configure the telescope UI for slowing the references cycling window.
+ telescope = {}; -- require("telescope.themes").get_dropdown({ hide_preview = false })
+ };
+ -- These two configs can also be passed down to the goto-preview definition and implementation calls for one off "peak" functionality.
+ focus_on_open = true; -- Focus the floating window when opening it.
+ dismiss_on_move = false; -- Dismiss the floating window when moving the cursor.
+ force_close = true; -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
+ bufhidden = "wipe"; -- the bufhidden option to set on the floating window. See :h bufhidden
+ stack_floating_preview_windows = true; -- Whether to nest floating windows
+ preview_window_title = { enable = true; position = "left"; }; -- Whether to set the preview window title as the filename
+})