Newer
Older
dotfiles / .config / lite-xl / plugins / lintplus / linters / php.lua
@Edoko Edoko 25 days ago 869 bytes initial commit
-- PHP lint plugin for lint+

--- CONFIG ---

-- config.lint.php_args: {string}
--   passes the specified arguments to php

--- IMPLEMENTATION ---

local lintplus = require "plugins.lintplus"

lintplus.add("php") {
  filename = "%.php$",
  procedure = {
    command = lintplus.args_command(
      {
        "php",
        "-l",
        lintplus.args,
        lintplus.filename
      },
      "php_args"
    ),
    interpreter = function (filename, line, context)
      local line_processed = false
      return function ()
        if line_processed then
          return nil
        end
        local message, file, line_num = line:match(
          "[%a ]+:%s*(.*)%s+in%s+(%g+)%s+on%sline%s+(%d+)"
        )
        if line_num then
          line_processed = true
          return filename, tonumber(line_num), 1, "error", message
        end
      end
    end
  },
}