From df6739c85e53ddde8b1a2f7b8f21542de8b54432 Mon Sep 17 00:00:00 2001 From: "K. Lange" Date: Sat, 25 Sep 2021 12:27:24 +0900 Subject: [PATCH] bim: syntax highlighter for /etc/issue files --- base/usr/share/bim/syntax/issue.krk | 72 +++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 base/usr/share/bim/syntax/issue.krk diff --git a/base/usr/share/bim/syntax/issue.krk b/base/usr/share/bim/syntax/issue.krk new file mode 100644 index 00000000..c5dfb9c8 --- /dev/null +++ b/base/usr/share/bim/syntax/issue.krk @@ -0,0 +1,72 @@ +from syntax import Highlighter, bind + +class EtcIssueHighlighter(Highlighter): + name = "issue" + extensions = ('/etc/issue',) + spaces = True + e_types = [ + ('bold', Highlighter.FLAG_BOLD), + ('reset', Highlighter.FLAG_NONE), + ('blue', Highlighter.FLAG_KEYWORD), + ('red', Highlighter.FLAG_DIFFMINUS), + ('black', Highlighter.FLAG_COMMENT), + ('brown', Highlighter.FLAG_TYPE), + ('cyan', Highlighter.FLAG_KEYWORD), + ('darkgray', Highlighter.FLAG_COMMENT), + ('gray', Highlighter.FLAG_COMMENT), + ('green', Highlighter.FLAG_DIFFPLUS), + ('lightblue', Highlighter.FLAG_KEYWORD), + ('lightcyan', Highlighter.FLAG_KEYWORD), + ('lightgray', Highlighter.FLAG_COMMENT), + ('lightgreen', Highlighter.FLAG_DIFFPLUS), + ('lightmagenta', Highlighter.FLAG_NUMERAL), + ('lightred', Highlighter.FLAG_DIFFMINUS), + ('magenta', Highlighter.FLAG_NUMERAL), + ('reverse', Highlighter.FLAG_UNDERLINE), + ('yellow', Highlighter.FLAG_NOTICE), + ] + + def calculate(self): + if self[0] == '\\': + if self[1] in ('\\','n','s','r','m','v','l','d','t'): + self.paint(2, self.FLAG_ESCAPE) + return 0 + else if not self[1]: + self.paint(1, self.FLAG_ESCAPE) + return None + else if self[1] == 'e': + if self[2] == '{': + self.paint(3, self.FLAG_ESCAPE) + for tname, tcolor in self.e_types: + if self.matchAndPaint(tname, tcolor, self.cKeywordQualifier): + break + if not self[0] == '}': + self.paint(1, self.FLAG_ERROR) + else: + self.paint(1, self.FLAG_ESCAPE) + return 0 + else: + self.paint(2, self.FLAG_ESCAPE) + return 0 + else if self[1] == '4': + if self[2] == '{': + self.paint(3, self.FLAG_ESCAPE) + while self[0] and self[0] != '}': + self.paint(1, self.FLAG_KEYWORD) + if self[0] == '}': + self.paint(1, self.FLAG_ESCAPE) + return 0 + else: + self.paint(2, self.FLAG_ESCAPE) + return 0 + else: + self.skip() + return 0 + else if self[0]: + self.skip() + return 0 + else: + return None + +bind(EtcIssueHighlighter) +