Subject: Re: bug#25379: 26.0.50; Minor: Call looking-back as advertised
From: Rolf Ade <[email-masked]>
To: [email-masked]
Date: Tue, 30 Jul 2019 23:41:23 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Rolf Ade <[email-masked]> writes:
> Since emacs 25.1
>
> C-h f looking-back RET
>
> shows:
>
> looking-back is a compiled Lisp function in ‘subr.el’.
>
> (looking-back REGEXP LIMIT &optional GREEDY)
> ...
>
> This is because of
>
>   (declare
>    (advertised-calling-convention (regexp limit &optional greedy) "25.1"))
>
> at the start of the looking-back implementation.
>
> It still can be called with only one argument (in this cases LIMIT will
> default to nil) and there are still a few such calls in the emacs core
> lisp code.
>
> This doesn't do any harm other than unnecessary
>
> "[...]Warning: looking-back called with 1 argument, but requires 2-3"
>
> noise in the compiling output while byte-compiling that files.
>
> The patch below silence that (simply by explicitly adding nil as second
> argument). This handles all such calls, that an el-search-load-path with
> the pattern `(looking-back ,_) found (see
> https://elpa.gnu.org/packages/el-search.html) with an appropriate
> load-path. That means, if that works as promoted: this patch handles all
> such cases curently still in the core.
>
> Commit message:
>
> * lisp/emulation/viper-ex.el (ex-cmd-read-exit):
> * lisp/org/org.el (org-read-date-minibuffer-local-map):
> * lisp/progmodes/hideshow.el (hs-hide-block-at-point):
> * lisp/progmodes/sql.el (sql-end-of-statement): Call looking-back as
> advertised.
>
> Copyright-paperwork-exempt: yes
>
>
> diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el
> index edc71ea..3fdeadb 100644
> --- a/lisp/emulation/viper-ex.el
> +++ b/lisp/emulation/viper-ex.el
> @@ -548,9 +548,9 @@ ex-cmd-read-exit
>        (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
>        (set-buffer viper-ex-work-buf)
>        (goto-char (point-max)))
> -    (cond ((looking-back quit-regex1) (exit-minibuffer))
> -	  ((looking-back stay-regex)  (insert " "))
> -	  ((looking-back quit-regex2) (exit-minibuffer))
> +    (cond ((looking-back quit-regex1 nil) (exit-minibuffer))
> +	  ((looking-back stay-regex nil)  (insert " "))
> +	  ((looking-back quit-regex2 nil) (exit-minibuffer))
>  	  (t (insert " ")))))
>  
>  (declare-function viper-tmp-insert-at-eob "viper-cmd" (msg))
> diff --git a/lisp/org/org.el b/lisp/org/org.el
> index 02a7a0c..2659a4d 100644
> --- a/lisp/org/org.el
> +++ b/lisp/org/org.el
> @@ -16249,7 +16249,7 @@ org-read-date-minibuffer-local-map
>      (org-defkey map (kbd ".")
>                  (lambda () (interactive)
>  		  ;; Are we at the beginning of the prompt?
> -		  (if (looking-back "^[^:]+: ")
> +		  (if (looking-back "^[^:]+: " nil)
>  		      (org-eval-in-calendar '(calendar-goto-today))
>  		    (insert "."))))
>      (org-defkey map (kbd "C-.")
> diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
> index 0e4e670..5328526 100644
> --- a/lisp/progmodes/hideshow.el
> +++ b/lisp/progmodes/hideshow.el
> @@ -582,7 +582,7 @@ hs-hide-block-at-point
>  	  (setq p (line-end-position)))
>  	;; `q' is the point at the end of the block
>  	(hs-forward-sexp mdata 1)
> -	(setq q (if (looking-back hs-block-end-regexp)
> +	(setq q (if (looking-back hs-block-end-regexp nil)
>  		    (match-beginning 0)
>  		  (point)))
>          (when (and (< p q) (> (count-lines p q) 1))
> diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
> index d6c9516..06ef4df 100644
> --- a/lisp/progmodes/sql.el
> +++ b/lisp/progmodes/sql.el
> @@ -2790,7 +2790,7 @@ sql-end-of-statement
>      ;; Iterate until we've moved the desired number of stmt ends
>      (while (not (= (cl-signum arg) 0))
>        ;; if we're looking at the terminator, jump by 2
> -      (if (or (and (> 0 arg) (looking-back term))
> +      (if (or (and (> 0 arg) (looking-back term nil))
>                (and (< 0 arg) (looking-at term)))
>            (setq n 2)
>          (setq n 1))
>
>
>
> In GNU Emacs 26.0.50.5 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.10)
>  of 2017-01-06 built on linux-qg7d
> Repository revision: 8f0376309ee37e4f1da21d78971c4df2df5fd7b6
> Windowing system distributor 'The X.Org Foundation', version 11.0.11203000
> System Description:	openSUSE 12.2 (x86_64)

All the in this bug mentioned looking-at are in the meantimenow called
with the advertised two args; no warning message regarding to this
created anymore. This was done. (By others, mostly in the way I proposed
in my patch.)