mirror of
https://github.com/zyedidia/micro.git
synced 2026-02-04 22:20:20 +09:00
Re-add literate supportg
This commit is contained in:
5
runtime/plugins/literate/README.md
Normal file
5
runtime/plugins/literate/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Literate Micro
|
||||
|
||||
Support for reading `.lit` files from [zyedidia/Literate](https://github.com/zyedidia/Literate).
|
||||
|
||||
This plugin will automatically detect the filetype and highlight the correct language inside the code blocks.
|
||||
53
runtime/plugins/literate/literate.lua
Normal file
53
runtime/plugins/literate/literate.lua
Normal file
@@ -0,0 +1,53 @@
|
||||
VERSION = "1.0.0"
|
||||
|
||||
function startswith(str, start)
|
||||
return string.sub(str,1,string.len(start))==start
|
||||
end
|
||||
|
||||
function endswith(str, endStr)
|
||||
return endStr=='' or string.sub(str,-string.len(endStr))==endStr
|
||||
end
|
||||
|
||||
function split(string, sep)
|
||||
local sep, fields = sep or ":", {}
|
||||
local pattern = string.format("([^%s]+)", sep)
|
||||
string:gsub(pattern, function(c) fields[#fields+1] = c end)
|
||||
return fields
|
||||
end
|
||||
|
||||
function onViewOpen(view)
|
||||
if not endswith(view.Buf.Path, ".lit") then
|
||||
return
|
||||
end
|
||||
|
||||
local codetype = "unknown"
|
||||
for i=1,view.Buf.NumLines do
|
||||
local line = view.Buf:Line(i-1)
|
||||
if startswith(line, "@code_type") then
|
||||
codetype = split(line, " ")[2]
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
local syntaxFile = ""
|
||||
syntaxFile = syntaxFile .. "filetype: literate-" .. codetype .. "\n"
|
||||
syntaxFile = syntaxFile .. "detect:\n"
|
||||
syntaxFile = syntaxFile .. " filename: \"\\\\.lit$\"\n"
|
||||
syntaxFile = syntaxFile .. "rules:\n"
|
||||
syntaxFile = syntaxFile .. " - include: \"markdown\"\n"
|
||||
syntaxFile = syntaxFile .. " - special: \"^(@s|@title|@code_type|@comment_type|@include|@change|@change_end)\"\n"
|
||||
syntaxFile = syntaxFile .. " - special: \"(@add_css|@overwrite_css|@colorscheme|@compiler|@error_format|@book)\"\n"
|
||||
syntaxFile = syntaxFile .. " - default:\n"
|
||||
syntaxFile = syntaxFile .. " start: \"---.*$\"\n"
|
||||
syntaxFile = syntaxFile .. " end: \"---$\"\n"
|
||||
syntaxFile = syntaxFile .. " limit-group: \"identifier\"\n"
|
||||
syntaxFile = syntaxFile .. " rules:\n"
|
||||
syntaxFile = syntaxFile .. " - special:\n"
|
||||
syntaxFile = syntaxFile .. " start: \"@\\\\{\"\n"
|
||||
syntaxFile = syntaxFile .. " end: \"\\\\}\"\n"
|
||||
syntaxFile = syntaxFile .. " rules: []\n"
|
||||
syntaxFile = syntaxFile .. " - include: " .. codetype .. "\n"
|
||||
|
||||
AddRuntimeFileFromMemory("literate", "syntax", "literate.yaml", syntaxFile)
|
||||
Reload()
|
||||
end
|
||||
Reference in New Issue
Block a user