[-- Attachment #1: Type: text/plain, Size: 764 bytes --] Tags: patch Both these methods can be called without arguments, so the font locking of "bare" calls to either is incorrect. The fix is to font-lock them as for other kernel methods which accepts zero or more arguments. In GNU Emacs 28.0.50 (build 1, x86_64-apple-darwin20.4.0, NS appkit-2022.44 Version 10.16 (Build 20E232)) Repository revision: 30d974bf5c02a1367291fbb6fa17a182bb7974b7 Repository branch: master Windowing system distributor 'Apple', version 10.3.2022 System Description: macOS 11.3 Configured using: 'configure --prefix=/nix/store/kvhx6vn5wvif4s9aiwp75v8pxplh19i2-emacs-gcc-20210502.0 --disable-build-details --with-modules --with-ns --disable-ns-self-contained --with-native-compilation CFLAGS=-DMAC_OS_X_VERSION_MAX_ALLOWED=101200' [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-lisp-progmodes-ruby-mode.el-puts-and-printf-do-not-r.patch --] [-- Type: text/patch, Size: 1268 bytes --] From 6041b603c0a4cadbd1eaa92a2d9c0162bedbd939 Mon Sep 17 00:00:00 2001 From: Steve Purcell <steve@sanityinc.com> Date: Mon, 3 May 2021 12:54:53 +1200 Subject: [PATCH] lisp/progmodes/ruby-mode.el: puts and printf do not require args Both these methods can be called without arguments, so the font locking of "bare" calls to either is incorrect. The fix is to font-lock them as for other kernel methods which accepts zero or more arguments. --- lisp/progmodes/ruby-mode.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 35772827ce2..0c54a1d27a6 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -2127,11 +2127,9 @@ ruby-font-lock-keywords "loop" "open" "p" - "print" "printf" "proc" "putc" - "puts" "require" "require_relative" "spawn" @@ -2180,9 +2178,11 @@ ruby-font-lock-keywords "fork" "global_variables" "local_variables" + "print" "private" "protected" "public" + "puts" "raise" "rand" "readline" -- 2.31.1
Steve Purcell <steve@sanityinc.com> writes: > Both these methods can be called without arguments, so the font > locking of "bare" calls to either is incorrect. The fix is to > font-lock them as for other kernel methods which accepts zero or more > arguments. Thanks; applied to Emacs 28. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
Hi Steve,
On 03.05.2021 04:01, Steve Purcell wrote:
> Both these methods can be called without arguments, so the font
> locking of "bare" calls to either is incorrect. The fix is to
> font-lock them as for other kernel methods which accepts zero or more
> arguments.
Is that important? Like, is anybody likely to call either without args?
font-lock is not a precise facility (that anything depends on), so we
can afford to be wrong in 0.01% cases.
If we institute this principle, I suppose we'll need to do this for all
functions that can work without args? In my testing, that's also:
p, open, loop, warn, print
Also note that your title says 'printf', but the patch said 'print'.
>> Both these methods can be called without arguments, so the font
>> locking of "bare" calls to either is incorrect. The fix is to
>> font-lock them as for other kernel methods which accepts zero or more
>> arguments.
>
> Is that important? Like, is anybody likely to call either without args?
> font-lock is not a precise facility (that anything depends on), so we can
> afford to be wrong in 0.01% cases.
It always bothered me that in ruby-mode highlighting was broken for printing
without arguments, but I had no time to investigate. Now finally this is fixed.
Maybe some other printing like "p" could be fixed as well, but the
already fixed "puts" and "print" is an improvement.
On 4 May 2021, at 04:42, Juri Linkov <juri@linkov.net> wrote:
>
>> Is that important? Like, is anybody likely to call either without args?
>> font-lock is not a precise facility (that anything depends on), so we can
>> afford to be wrong in 0.01% cases.
>
> It always bothered me that in ruby-mode highlighting was broken for printing
> without arguments, but I had no time to investigate. Now finally this is fixed.
> Maybe some other printing like "p" could be fixed as well, but the
> already fixed "puts" and "print" is an improvement.
Yes, it’s actually pretty common to just use “puts” without args to print an empty line.
On 03.05.2021 23:31, Steve Purcell wrote:
>> It always bothered me that in ruby-mode highlighting was broken for printing
>> without arguments, but I had no time to investigate. Now finally this is fixed.
>> Maybe some other printing like "p" could be fixed as well, but the
>> already fixed "puts" and "print" is an improvement.
>
> Yes, it’s actually pretty common to just use “puts” without args to print an empty line.
Very good, then.