Rules have an input and an output directive, which are often used by
name in code. I find it slightly annoying that input has the look of
a Python keyword, while output does not.

Thanks for bringing this up. It's the result of python.el's
python-font-lock-keywords, which assigns font-lock-builtin-face to
"input" because input is a built-in function. Currently, Snakemake
mode's snakemake-font-lock-keywords only overrides this when it
thinks "input" is being used as a field key (i.e., matches "^ +input *:"),
in which case font-lock-type-face is used.

So, if I understand correctly, the main place where you're seeing
"input" highlighted differently than "output" is in the run: body,
while "input" in the shell: commands and in the input: field name
is highlighted the same as "output". Is that right?

How do you feel about this? Would you consider changing
snakemake-mode to not consider input a keyword for
syntax-highlighting purposes?

I agree that "input" and "output" should have the same look. Although
Python's input function works fine in Snakefiles when used outside
of rule blocks, I can't think of any good use-cases for it, so it
doesn't make sense for python-font-lock-keywords to have priority
here.

I'm OK overriding python-font-lock-keywords and removing the
highlighting of "input", but I wonder whether it's better to go the
other way. Should output (and other built-in Snakemake objects that
can be accessed in the run block, like "wildcards" and "params") be
highlighted rather than removing the highlighting from input?


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.