parent
f84bf5ff46
commit
37625890bf
@ -0,0 +1,157 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE muclient>
|
||||
<!-- Saved on Saturday, July 31, 2021, 10:24 PM -->
|
||||
<!-- MuClient version 5.07-pre -->
|
||||
|
||||
<!-- Plugin "Grep" generated by Plugin Wizard -->
|
||||
|
||||
<muclient>
|
||||
<plugin
|
||||
name="grep"
|
||||
author="Naricain"
|
||||
id="679991ab2cdc79c2743f37a8"
|
||||
language="Lua"
|
||||
purpose="Search for matching lines with a command's output"
|
||||
save_state="y"
|
||||
date_written="2021-07-31 22:24:07"
|
||||
requires="5.00"
|
||||
sequence="-5000"
|
||||
version="1.0"
|
||||
>
|
||||
|
||||
</plugin>
|
||||
|
||||
<aliases>
|
||||
<alias
|
||||
match="^(?<cmd>.+) \| grep (?<query>.+)$"
|
||||
script="grep"
|
||||
name="grep"
|
||||
enabled="y"
|
||||
regexp="y"
|
||||
sequence="100"
|
||||
ignore_case="y"
|
||||
echo_alias="y"
|
||||
send_to="12" />
|
||||
<alias
|
||||
match="^grep reload$"
|
||||
script="reload"
|
||||
name="reload"
|
||||
enabled="y"
|
||||
regexp="y"
|
||||
sequence="100"
|
||||
ignore_case="y"
|
||||
send_to="12" />
|
||||
</aliases>
|
||||
<triggers>
|
||||
<trigger
|
||||
match="^GREP START: \{(?<query>.+)\}$"
|
||||
script="grep_start"
|
||||
name="grep_start"
|
||||
enabled="y"
|
||||
regexp="y"
|
||||
sequence="1"
|
||||
keep_evaluating="y"
|
||||
omit_from_output="y"
|
||||
send_to="12" />
|
||||
|
||||
<trigger
|
||||
match="^.*$"
|
||||
script="grep_match"
|
||||
name="grep_match"
|
||||
enabled="n"
|
||||
regexp="y"
|
||||
sequence="100"
|
||||
keep_evaluating="y"
|
||||
omit_from_output="y"
|
||||
send_to="12" />
|
||||
|
||||
<trigger
|
||||
match="^GREP END$"
|
||||
script="grep_end"
|
||||
name="grep_end"
|
||||
enabled="y"
|
||||
regexp="y"
|
||||
sequence="1"
|
||||
omit_from_output="y"
|
||||
send_to="12" />
|
||||
</triggers>
|
||||
|
||||
<script>
|
||||
<![CDATA[
|
||||
local current_grep_query
|
||||
|
||||
function reload()
|
||||
InfoNote("Reloading ", "Grep")
|
||||
Execute(GetAlphaOption("script_prefix") .. "DoAfterSpecial(1, \"ReloadPlugin('" .. GetPluginID() .. "')\", sendto.script)")
|
||||
end
|
||||
|
||||
function generate_grep_query(query)
|
||||
return rex.new(query, rex.flags().CASELESS)
|
||||
end
|
||||
|
||||
function grep(name, line, wildcards)
|
||||
local status = pcall(generate_grep_query, wildcards.query)
|
||||
if status then
|
||||
SendNoEcho("echo GREP START: {" .. wildcards.query .. "}")
|
||||
SendNoEcho(wildcards.cmd)
|
||||
SendNoEcho("echo GREP END")
|
||||
else
|
||||
InfoNote("Grep query ", wildcards.query, " is not a valid regular expression")
|
||||
end
|
||||
end
|
||||
|
||||
function grep_start(name, line, wildcards)
|
||||
local status, query_regex = pcall(generate_grep_query, wildcards.query)
|
||||
if status then
|
||||
current_grep_query = query_regex
|
||||
EnableTrigger("grep_match", true)
|
||||
else
|
||||
InfoNote("Grep query ", wildcards.query, " is not a valid regular expression")
|
||||
end
|
||||
end
|
||||
|
||||
function grep_match(name, line, wildcards, style)
|
||||
-- print("line ", line)
|
||||
if not current_grep_query then
|
||||
InfoNote("Missing grep query")
|
||||
EnableTrigger("grep_match", false)
|
||||
return
|
||||
end
|
||||
|
||||
if current_grep_query:match(line) then
|
||||
for i, s in ipairs(style) do
|
||||
NoteStyle(s.style)
|
||||
ColourTell(RGBColourToName(s.textcolour), RGBColourToName(s.backcolour), s.text)
|
||||
end
|
||||
return Note("")
|
||||
end
|
||||
end
|
||||
|
||||
function grep_end()
|
||||
current_grep_query = nil
|
||||
EnableTrigger("grep_match", false)
|
||||
end
|
||||
|
||||
local LOG_COLORS = {
|
||||
INFO = "#A9A9A9",
|
||||
INFO_HIGHLIGHT = "#4169E1",
|
||||
}
|
||||
|
||||
function InfoNote(...)
|
||||
log_with_alternating_note({"Grep: ",...}, LOG_COLORS.INFO_HIGHLIGHT, LOG_COLORS.INFO)
|
||||
end
|
||||
|
||||
function log_with_alternating_note(messages, color1, color2, background)
|
||||
if background == nil then
|
||||
background = ""
|
||||
end
|
||||
for i, message in ipairs(messages) do
|
||||
ColourTell(color1, background, message)
|
||||
color1, color2 = color2, color1
|
||||
end
|
||||
Note("")
|
||||
end
|
||||
|
||||
]]>
|
||||
</script>
|
||||
</muclient>
|
Loading…
Reference in new issue