|:syn-priority| is respected now, :syn-skip & :syn-keepend are used
when appropriate, newlines don't jank stuff up, comments don't extend
match regions, numbers are much more reliable, and stack effect error
highlights return.
A feature request has even been sent to Bram.
https://github.com/vim/vim/issues/872#issuecomment-641025231
(Thanks, @mrjbq7!) Now:
+ `CHAR:` literals highlight the whole next token.
+ `0b...` binary literals don't require invalid `+=0b` or `-=0b` syntax.
+ Float literals can't start with a `,` separator.
+ Float literals can have exponents with `,` separators.
+ `foo: ...` stack effects function as intended in general.
+ Syntax clusters might be a bit cleaner with `g:factor_syn_no_error`.
+ Error match priority should be cleaned up.
(Thanks, @mrjbq7!) Now:
+ `CHAR:` literals highlight the whole next token.
+ `0b...` binary literals don't require invalid `+=0b` or `-=0b` syntax.
+ Float literals can't start with a `,` separator.
+ Float literals can have exponents with `,` separators.
+ `foo: ...` stack effects function as intended in general.
+ Syntax clusters might be a bit cleaner with `g:factor_syn_no_error`.
Also fixes comments in a lot more places than a few commits ago.
Syntax like the following is proper, and the comment highlighting fixes
from last commit make the incorrect highlighting here really stand out:
```factor
USE: ! only this line highlights
kernel
```
From Vim's |pattern.txt|, |/\v| |/\V|:
> Use of "\v" means that after it, all ASCII characters except
> '0'-'9', 'a'-'z', 'A'-'Z' and '_' have special meaning: "very magic"
This mostly makes some upcoming syntax pattern refactoring cleaner,
though most patterns still get shorter here.
This lets Factor's overly long line highlighting avoid bleeding over
into documentation source buffers, or buffers of other non-Factor file
types entirely. Also, by taking `:2match` instead of `:match`,
clobbering of most user matches (or vice versa) can be avoided.
Unfortunately, the highlighting effects all windows in a multi-buffer
split setup, but since we can't reasonably make this a `:syntax match`
group, it'll have to do. (And this behavior isn't new.)
The emacs command `kill-word`, used by `fuel-factor-inline-word` does not
delete the complete word if that contains hyphens. Using `kill-sexps` instead
exhibits correct behavior.
This makes the FUEL <-> Elisp ipc much simpler. All code called from
Elisp should put one result item on the stack. The fuel-pprint word
serializes it.