Minor fix for comment plugin and migrating to use "comment.type" option

Fixing comment plugin not using user settings when overriding default
setting,
Migrating comment plugin to use "comment.type" option instead
This commit is contained in:
Neko Box Coder 2025-05-15 01:11:06 +01:00
parent cc195b6a96
commit 14ae8e394e
No known key found for this signature in database
GPG Key ID: E33FCF170345E0F5
2 changed files with 28 additions and 14 deletions

View File

@ -3,6 +3,7 @@ VERSION = "1.0.0"
local util = import("micro/util") local util = import("micro/util")
local config = import("micro/config") local config = import("micro/config")
local buffer = import("micro/buffer") local buffer = import("micro/buffer")
local micro = import("micro")
local ft = {} local ft = {}
@ -61,17 +62,21 @@ ft["zig"] = "// %s"
ft["zscript"] = "// %s" ft["zscript"] = "// %s"
ft["zsh"] = "# %s" ft["zsh"] = "# %s"
local last_ft
function updateCommentType(buf) function updateCommentType(buf)
if buf.Settings["commenttype"] == nil or (last_ft ~= buf.Settings["filetype"] and last_ft ~= nil) then -- NOTE: Using DoSetOptionNative to avoid LocalSettings[option] = true
if ft[buf.Settings["filetype"]] ~= nil then -- so that "comment.type" can be reset by a "filetype" change to default.
buf:SetOptionNative("commenttype", ft[buf.Settings["filetype"]]) if (buf.Settings["comment.type"] == "") then
-- NOTE: This won't get triggered if a filetype is change via `setlocal filetype`
-- since it is not registered with `RegisterGlobalOption()``
if buf.Settings["commenttype"] ~= nil then
buf:DoSetOptionNative("comment.type", buf.Settings["commenttype"])
else else
buf:SetOptionNative("commenttype", "# %s") if (ft[buf.Settings["filetype"]] ~= nil) then
buf:DoSetOptionNative("comment.type", ft[buf.Settings["filetype"]])
else
buf:DoSetOptionNative("comment.type", "# %s")
end
end end
last_ft = buf.Settings["filetype"]
end end
end end
@ -88,7 +93,7 @@ function commentLine(bp, lineN, indentLen)
updateCommentType(bp.Buf) updateCommentType(bp.Buf)
local line = bp.Buf:Line(lineN) local line = bp.Buf:Line(lineN)
local commentType = bp.Buf.Settings["commenttype"] local commentType = bp.Buf.Settings["comment.type"]
local sel = -bp.Cursor.CurSelection local sel = -bp.Cursor.CurSelection
local curpos = -bp.Cursor.Loc local curpos = -bp.Cursor.Loc
local index = string.find(commentType, "%%s") - 1 local index = string.find(commentType, "%%s") - 1
@ -114,7 +119,7 @@ function uncommentLine(bp, lineN, commentRegex)
updateCommentType(bp.Buf) updateCommentType(bp.Buf)
local line = bp.Buf:Line(lineN) local line = bp.Buf:Line(lineN)
local commentType = bp.Buf.Settings["commenttype"] local commentType = bp.Buf.Settings["comment.type"]
local sel = -bp.Cursor.CurSelection local sel = -bp.Cursor.CurSelection
local curpos = -bp.Cursor.Loc local curpos = -bp.Cursor.Loc
local index = string.find(commentType, "%%s") - 1 local index = string.find(commentType, "%%s") - 1
@ -178,7 +183,7 @@ end
function comment(bp, args) function comment(bp, args)
updateCommentType(bp.Buf) updateCommentType(bp.Buf)
local commentType = bp.Buf.Settings["commenttype"] local commentType = bp.Buf.Settings["comment.type"]
local commentRegex = "^%s*" .. commentType:gsub("%%","%%%%"):gsub("%$","%$"):gsub("%)","%)"):gsub("%(","%("):gsub("%?","%?"):gsub("%*", "%*"):gsub("%-", "%-"):gsub("%.", "%."):gsub("%+", "%+"):gsub("%]", "%]"):gsub("%[", "%["):gsub("%%%%s", "(.*)") local commentRegex = "^%s*" .. commentType:gsub("%%","%%%%"):gsub("%$","%$"):gsub("%)","%)"):gsub("%(","%("):gsub("%?","%?"):gsub("%*", "%*"):gsub("%-", "%-"):gsub("%.", "%."):gsub("%+", "%+"):gsub("%]", "%]"):gsub("%[", "%["):gsub("%%%%s", "(.*)")
if bp.Cursor:HasSelection() then if bp.Cursor:HasSelection() then
@ -204,6 +209,10 @@ function string.starts(String,Start)
return string.sub(String,1,string.len(Start))==Start return string.sub(String,1,string.len(Start))==Start
end end
function preinit()
config.RegisterCommonOption("comment", "type", "")
end
function init() function init()
config.MakeCommand("comment", comment, config.NoComplete) config.MakeCommand("comment", comment, config.NoComplete)
config.TryBindKey("Alt-/", "lua:comment.comment", false) config.TryBindKey("Alt-/", "lua:comment.comment", false)

View File

@ -80,10 +80,10 @@ but it is only available for certain filetypes:
* zsh: `# %s` * zsh: `# %s`
If your filetype is not available here, you can simply modify If your filetype is not available here, you can simply modify
the `commenttype` option: the `comment.type` option:
``` ```
set commenttype "/* %s */" set comment.type "/* %s */"
``` ```
Or in your `settings.json`: Or in your `settings.json`:
@ -91,7 +91,12 @@ Or in your `settings.json`:
```json ```json
{ {
"*.c": { "*.c": {
"commenttype": "/* %s */" "comment.type": "/* %s */"
} }
} }
``` ```
`commenttype` (without the dot) is the legacy option that is
superseded by `comment.type`. `commenttype` is still supported
but will get deprecated in the future.
**Use `comment.type` instead.**