From 61ff2920bad08c10a4c53e3d93fa152721b348fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 30 May 2017 15:06:01 +0200 Subject: lexer: add simple strace(1) output lexer --- lua/lexers/strace.lua | 31 +++++++++++++++++++++++++++++++ lua/plugins/filetype.lua | 5 +++++ 2 files changed, 36 insertions(+) create mode 100644 lua/lexers/strace.lua (limited to 'lua') diff --git a/lua/lexers/strace.lua b/lua/lexers/strace.lua new file mode 100644 index 0000000..deb8fb7 --- /dev/null +++ b/lua/lexers/strace.lua @@ -0,0 +1,31 @@ +-- strace(1) output lexer + +local l = require('lexer') +local token, word_match = l.token, l.word_match +local S = lpeg.S + +local M = {_NAME = 'strace'} + +local ws = token(l.WHITESPACE, l.space^1) +local string = token(l.STRING, l.delimited_range('"', true) + l.delimited_range("'", true)) +local number = token(l.NUMBER, l.float + l.integer) +local constant = token(l.CONSTANT, (l.upper + '_') * (l.upper + l.digit + '_')^0) +local syscall = token(l.KEYWORD, l.starts_line(l.word)) +local operator = token(l.OPERATOR, S('+-/*%<>~!=^&|?~:;,.()[]{}')) +local comment = token(l.COMMENT, l.nested_pair('/*', '*/') + ('(' * (l.alpha + ' ')^1 * ')\n')) +local result = token(l.TYPE, '= ' * l.integer) + +M._rules = { + {'whitespace', ws}, + {'keyword', syscall}, + {'constant', constant}, + {'string', string}, + {'comment', comment}, + {'type', result}, + {'number', number}, + {'operator', operator}, +} + +M._LEXBYLINE = true + +return M diff --git a/lua/plugins/filetype.lua b/lua/plugins/filetype.lua index 5a6259a..9d44391 100644 --- a/lua/plugins/filetype.lua +++ b/lua/plugins/filetype.lua @@ -349,6 +349,11 @@ vis.ftdetect.filetypes = { sql= { ext = { "%.ddl$", "%.sql$" }, }, + strace = { + detect = function(file, data) + return data:match("^execve%(") + end + }, systemd = { ext = { "%.automount$", "%.device$", "%.mount$", "%.path$", -- cgit v1.2.3