From 2069fd8e14ba8224c4f040b4e2b0f2ec0000743f Mon Sep 17 00:00:00 2001 From: Juliardi Date: Wed, 10 Nov 2021 07:22:44 +0700 Subject: add statusclock plugin (#82) --- README.md | 1 + plugins/statusclock.lua | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 plugins/statusclock.lua diff --git a/README.md b/README.md index 5e40895..e5d7481 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,7 @@ Plugin | Description [`smallclock`](plugins/smallclock.lua?raw=1) | Displays the current time in the corner of the status view [`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* +[`statusclock`](plugins/statusclock.lua?raw=1) | Displays the current date and time in the corner of the status view [`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)) [`texcompile`](plugins/texcompile.lua?raw=1) | Compile Tex files into PDF [`theme16`](https://github.com/monolifed/theme16)* | Theme manager with base16 themes diff --git a/plugins/statusclock.lua b/plugins/statusclock.lua new file mode 100644 index 0000000..8289502 --- /dev/null +++ b/plugins/statusclock.lua @@ -0,0 +1,54 @@ +-- mod-version:2 -- lite-xl 2.0 +local core = require "core" +local config = require "core.config" +local style = require "core.style" +local StatusView = require "core.statusview" +local scan_rate = 1 + +config.plugins.statusclock = { + time_format = "%H:%M:%S", + date_format = "%A, %d %B %Y" +} + +local time_data = { + time_text = '', + date_text = '', +} + +core.add_thread(function() + while true do + local time_text = os.date(config.plugins.statusclock.time_format) + local date_text = os.date(config.plugins.statusclock.date_format) + + if time_data.time_text ~= time_text or time_data.time_text ~= date_text then + core.redraw = true + time_data.time_text = time_text + time_data.date_text = date_text + end + + coroutine.yield(scan_rate) + end +end) + +local get_items = StatusView.get_items + +function StatusView:get_items() + local left, right = get_items(self) + + local t = { + style.dim, + self.separator, + style.dim and style.text, + time_data.date_text, + style.dim, + self.separator, + style.dim and style.text, + time_data.time_text, + } + for _, item in ipairs(t) do + table.insert(right, item) + end + + return left, right +end + -- cgit v1.2.3