Skip to content

Commit c5bb651

Browse files
hmajid2301GaetanLepage
authored andcommitted
plugins/arrow: init
1 parent 3c09f58 commit c5bb651

File tree

3 files changed

+303
-0
lines changed

3 files changed

+303
-0
lines changed

plugins/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
./ui/zen-mode.nix
127127

128128
./utils/alpha.nix
129+
./utils/arrow.nix
129130
./utils/auto-save.nix
130131
./utils/auto-session.nix
131132
./utils/autoclose.nix

plugins/utils/arrow.nix

Lines changed: 220 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,220 @@
1+
{
2+
lib,
3+
helpers,
4+
config,
5+
pkgs,
6+
...
7+
}:
8+
with lib;
9+
helpers.neovim-plugin.mkNeovimPlugin config {
10+
name = "arrow";
11+
originalName = "arrow.nvim";
12+
defaultPackage = pkgs.vimPlugins.arrow-nvim;
13+
14+
maintainers = [ maintainers.hmajid2301 ];
15+
16+
settingsOptions = {
17+
show_icons = helpers.defaultNullOpts.mkBool false ''
18+
If true will show icons.
19+
'';
20+
21+
always_show_path = helpers.defaultNullOpts.mkBool false ''
22+
If true will show path.
23+
'';
24+
25+
separate_by_branch = helpers.defaultNullOpts.mkBool false ''
26+
If true will split bookmarks by git branch.
27+
'';
28+
29+
hide_handbook = helpers.defaultNullOpts.mkBool false ''
30+
If true to hide the shortcuts on menu.
31+
'';
32+
33+
save_path = helpers.defaultNullOpts.mkLuaFn ''
34+
function()
35+
return vim.fn.stdpath("cache") .. "/arrow"
36+
end
37+
'' "Function used to determine where to save arrow data.";
38+
39+
mapping = {
40+
edit = helpers.defaultNullOpts.mkStr "e" ''
41+
Mapping to edit bookmarks.
42+
'';
43+
44+
delete_mode = helpers.defaultNullOpts.mkStr "d" ''
45+
Mapping to go to delete mode, where you can remove bookmarks.
46+
'';
47+
48+
clear_all_items = helpers.defaultNullOpts.mkStr "C" ''
49+
Mapping to clear all bookmarks.
50+
'';
51+
52+
toggle = helpers.defaultNullOpts.mkStr "s" ''
53+
Mapping to save if `separate_save_and_remove` is true.
54+
'';
55+
56+
open_vertical = helpers.defaultNullOpts.mkStr "v" ''
57+
Mapping to open bookmarks in vertical split.
58+
'';
59+
60+
open_horizontal = helpers.defaultNullOpts.mkStr "-" ''
61+
Mapping to open bookmarks in horizontal split.
62+
'';
63+
64+
quit = helpers.defaultNullOpts.mkStr "q" ''
65+
Mapping to quit arrow.
66+
'';
67+
68+
remove = helpers.defaultNullOpts.mkStr "x" ''
69+
Mapping to remove bookmarks. Only used if `separate_save_and_remove` is true.
70+
'';
71+
72+
next_item = helpers.defaultNullOpts.mkStr "]" ''
73+
Mapping to go to next bookmark.
74+
'';
75+
76+
prev_item = helpers.defaultNullOpts.mkStr "[" ''
77+
Mapping to go to previous bookmark.
78+
'';
79+
};
80+
81+
custom_actions = {
82+
open =
83+
helpers.defaultNullOpts.mkLuaFn
84+
''
85+
function(target_file_name, current_file_name) end
86+
''
87+
''
88+
- `target_file_name`: file selected to be open
89+
- `current_file_name`: filename from where this was called
90+
'';
91+
92+
split_vertical = helpers.defaultNullOpts.mkLuaFn ''
93+
function(target_file_name, current_file_name) end
94+
'' "";
95+
96+
split_horizontal = helpers.defaultNullOpts.mkLuaFn ''
97+
function(target_file_name, current_file_name) end
98+
'' "";
99+
};
100+
101+
window =
102+
helpers.defaultNullOpts.mkAttrsOf types.anything
103+
''
104+
{
105+
relative = "editor";
106+
width = "auto";
107+
height = "auto";
108+
row = "auto";
109+
col = "auto";
110+
style = "minimal";
111+
border = "single";
112+
}
113+
''
114+
''
115+
Controls the appearance and position of an arrow window.
116+
See `:h nvim_open_win()` for all options.
117+
'';
118+
119+
per_buffer_config = {
120+
lines = helpers.defaultNullOpts.mkInt 4 ''
121+
Number of lines on preview.
122+
'';
123+
124+
sort_automatically = helpers.defaultNullOpts.mkBool true ''
125+
If true will sort buffer marks automatically.
126+
'';
127+
128+
satellite = {
129+
enable = helpers.defaultNullOpts.mkBool false ''
130+
If true will display arrow index in scrollbar at every update.
131+
'';
132+
133+
overlap = helpers.defaultNullOpts.mkBool false '''';
134+
135+
priority = helpers.defaultNullOpts.mkInt 1000 '''';
136+
};
137+
138+
zindex = helpers.defaultNullOpts.mkInt 50 ''
139+
Z index of the buffer.
140+
'';
141+
};
142+
143+
separate_save_and_remove = helpers.defaultNullOpts.mkBool false ''
144+
If true will remove the toggle and create the save/remove keymaps.
145+
'';
146+
147+
leader_key = helpers.defaultNullOpts.mkStr ";" ''
148+
The leader key to use for arrow. Will precede all mappings.
149+
Recommended to be a single character.
150+
'';
151+
152+
save_key = helpers.defaultNullOpts.mkStr "cwd" ''
153+
What will be used as root to save the bookmarks. Can be also `git_root`.
154+
'';
155+
156+
global_bookmarks = helpers.defaultNullOpts.mkBool false ''
157+
If true arrow will save files globally (ignores `separate_by_branch`).
158+
'';
159+
160+
index_keys = helpers.defaultNullOpts.mkStr "123456789zxcbnmZXVBNM,afghjklAFGHJKLwrtyuiopWRTYUIOP" ''
161+
Keys mapped to bookmark index.
162+
'';
163+
164+
full_path_list = helpers.defaultNullOpts.mkListOf types.str ''[ "update_stuff" ]'' ''
165+
Filenames on this list will ALWAYS show the file path too
166+
'';
167+
};
168+
169+
settingsExample = {
170+
show_icons = true;
171+
always_show_path = false;
172+
separate_by_branch = false;
173+
hide_handbook = false;
174+
save_path = ''
175+
function()
176+
return vim.fn.stdpath("cache") .. "/arrow"
177+
end
178+
'';
179+
mappings = {
180+
edit = "e";
181+
delete_mode = "d";
182+
clear_all_items = "C";
183+
toggle = "s";
184+
open_vertical = "v";
185+
open_horizontal = "-";
186+
quit = "q";
187+
remove = "x";
188+
next_item = "]";
189+
prev_item = "[";
190+
};
191+
custom_actions = {
192+
open = "function(target_file_name, current_file_name) end";
193+
split_vertical = "function(target_file_name, current_file_name) end";
194+
split_horizontal = "function(target_file_name, current_file_name) end";
195+
};
196+
window = {
197+
width = "auto";
198+
height = "auto";
199+
row = "auto";
200+
col = "auto";
201+
border = "double";
202+
};
203+
per_buffer_config = {
204+
lines = 4;
205+
sort_automatically = true;
206+
satellite = {
207+
enable = false;
208+
overlap = true;
209+
priority = 1000;
210+
};
211+
zindex = 10;
212+
};
213+
separate_save_and_remove = false;
214+
leader_key = ";";
215+
save_key = "cwd";
216+
global_bookmarks = false;
217+
index_keys = "123456789zxcbnmZXVBNM,afghjklAFGHJKLwrtyuiopWRTYUIOP";
218+
full_path_list = [ "update_stuff" ];
219+
};
220+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{
2+
empty = {
3+
plugins.arrow.enable = true;
4+
};
5+
6+
defaults = {
7+
plugins.arrow = {
8+
enable = true;
9+
10+
settings = {
11+
show_icons = true;
12+
always_show_path = false;
13+
separate_by_branch = false;
14+
hide_handbook = false;
15+
save_path = ''
16+
function()
17+
return vim.fn.stdpath("cache") .. "/arrow"
18+
end
19+
'';
20+
mappings = {
21+
edit = "e";
22+
delete_mode = "d";
23+
clear_all_items = "C";
24+
toggle = "s";
25+
open_vertical = "v";
26+
open_horizontal = "-";
27+
quit = "q";
28+
remove = "x";
29+
next_item = "]";
30+
prev_item = "[";
31+
};
32+
custom_actions = {
33+
open = ''function(target_file_name, current_file_name) end'';
34+
split_vertical = ''function(target_file_name, current_file_name) end'';
35+
split_horizontal = ''function(target_file_name, current_file_name) end'';
36+
};
37+
window = {
38+
width = "auto";
39+
height = "auto";
40+
row = "auto";
41+
col = "auto";
42+
border = "double";
43+
};
44+
per_buffer_config = {
45+
lines = 4;
46+
sort_automatically = true;
47+
satellite = {
48+
enable = false;
49+
overlap = true;
50+
priority = 1000;
51+
};
52+
zindex = 10;
53+
};
54+
separate_save_and_remove = false;
55+
leader_key = ";";
56+
save_key = "cwd";
57+
global_bookmarks = false;
58+
index_keys = "123456789zxcbnmZXVBNM,afghjklAFGHJKLwrtyuiopWRTYUIOP";
59+
full_path_list = [ "update_stuff" ];
60+
};
61+
};
62+
};
63+
64+
example = {
65+
plugins.arrow = {
66+
enable = true;
67+
68+
settings = {
69+
show_icons = true;
70+
leader_key = ";";
71+
window = {
72+
width = 50;
73+
height = "auto";
74+
row = "auto";
75+
col = "auto";
76+
border = "double";
77+
};
78+
index_keys = "azertyuiopAZERTYUIOP123456789";
79+
};
80+
};
81+
};
82+
}

0 commit comments

Comments
 (0)