aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--plugins/tabnumbers.lua27
2 files changed, 28 insertions, 0 deletions
diff --git a/README.md b/README.md
index 94b4cc0..d409509 100644
--- a/README.md
+++ b/README.md
@@ -82,6 +82,7 @@ Plugin | Description
[`selectionhighlight`](plugins/selectionhighlight.lua?raw=1) | Highlights regions of code that match the current selection *([screenshot](https://user-images.githubusercontent.com/3920290/80710883-5f597c80-8ae7-11ea-97f0-76dfacc08439.png))*
[`sort`](plugins/sort.lua?raw=1) | Sorts selected lines alphabetically
[`spellcheck`](plugins/spellcheck.lua?raw=1) | Underlines misspelt words *([screenshot](https://user-images.githubusercontent.com/3920290/79923973-9caa7400-842e-11ea-85d4-7a196a91ca50.png))* *— note: on Windows a [`words.txt`](https://github.com/dwyl/english-words/blob/master/words.txt) dictionary file must be placed beside the exe*
+[`tabnumbers`](plugins/tabnumbers.lua?raw=1) | Displays tab numbers from 1–9 next to their names *([screenshot](https://user-images.githubusercontent.com/16415678/101285362-007a8500-37e5-11eb-869b-c10eb9d9d902.png))
[`theme16`](https://github.com/monolifed/theme16)* | Theme manager with base16 themes
[`titleize`](plugins/titleize.lua?raw=1) | Titleizes selected string (`hello world` => `Hello World`)
[`todotreeview`](https://github.com/drmargarido/TodoTreeView)* | Todo tree viewer for annotations in code like `TODO`, `BUG`, `FIX`, `IMPROVEMENT`
diff --git a/plugins/tabnumbers.lua b/plugins/tabnumbers.lua
new file mode 100644
index 0000000..deabbcd
--- /dev/null
+++ b/plugins/tabnumbers.lua
@@ -0,0 +1,27 @@
+local common = require "core.common"
+local core = require "core"
+local style = require "core.style"
+
+-- quite hackish, but Node isn't normally public
+local Node = getmetatable(core.root_view.root_node)
+local draw_tabs = Node.draw_tabs
+
+function Node:draw_tabs(...)
+ draw_tabs(self, ...)
+
+ for i, view in ipairs(self.views) do
+ if i > 9 then break end
+
+ local x, y, w, h = self:get_tab_rect(i)
+ local number = tostring(i)
+ local color = style.dim
+ local title_width = style.font:get_width(view:get_name())
+ local free_real_estate =
+ math.min(math.max((w - title_width) / 2, style.padding.x), h)
+ if view == self.active_view then
+ color = style.accent
+ end
+ -- renderer.draw_rect(x, y + h - 1, free_real_estate, 1, color)
+ common.draw_text(style.font, color, tostring(i), "center", x, y, free_real_estate, h)
+ end
+end