Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import subprocess
import tempfile
from mozlint import formatters
def get_editor():
return os.environ.get("EDITOR")
def edit_issues(result):
if not result.issues:
return
editor = get_editor()
if not editor:
print("warning: could not find a default editor")
return
name = os.path.basename(editor)
if name in ("vim", "nvim", "gvim"):
cmd = [
editor,
# need errorformat to match both Error and Warning, with or without a column
"--cmd",
"set errorformat+=%f:\\ line\\ %l\\\\,\\ col\\ %c\\\\,\\ %trror\\ -\\ %m",
"--cmd",
"set errorformat+=%f:\\ line\\ %l\\\\,\\ col\\ %c\\\\,\\ %tarning\\ -\\ %m",
"--cmd",
"set errorformat+=%f:\\ line\\ %l\\\\,\\ %trror\\ -\\ %m",
"--cmd",
"set errorformat+=%f:\\ line\\ %l\\\\,\\ %tarning\\ -\\ %m",
# start with quickfix window opened
"-c",
"copen",
# running with -q seems to open an empty buffer in addition to the
# first file, this removes that empty buffer
"-c",
"1bd",
]
with tempfile.NamedTemporaryFile(mode="w") as fh:
s = formatters.get("compact", summary=False)(result)
fh.write(s)
fh.flush()
cmd.extend(["-q", fh.name])
subprocess.call(cmd)
else:
for path, errors in result.issues.items():
subprocess.call([editor, path])