unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: master 0d5036061b5: Skip Eglot test if using very old clangd
       [not found] ` <20230321184332.93736C13913@vcs2.savannah.gnu.org>
@ 2023-03-22 10:38   ` Robert Pluim
  2023-03-22 10:49     ` João Távora
  0 siblings, 1 reply; 6+ messages in thread
From: Robert Pluim @ 2023-03-22 10:38 UTC (permalink / raw)
  To: emacs-devel; +Cc: João Távora

>>>>> On Tue, 21 Mar 2023 14:43:32 -0400 (EDT), João Távora <joaotavora@gmail.com> said:

    João> branch: master
    João> commit 0d5036061b544f5a306ccd275502f608ec9d3f25
    João> Author: João Távora <joaotavora@gmail.com>
    João> Commit: João Távora <joaotavora@gmail.com>

    João>     Skip Eglot test if using very old clangd
    
    João>     * test/lisp/progmodes/eglot-tests.el (eglot--clangd-version): New
    João>     helper.
    João>     (eglot-test-diagnostic-tags-unnecessary-code): Use it.
    João> ---
    João>  test/lisp/progmodes/eglot-tests.el | 7 +++++++
    João>  1 file changed, 7 insertions(+)

    João> diff --git a/test/lisp/progmodes/eglot-tests.el b/test/lisp/progmodes/eglot-tests.el
    João> index 7ac26732737..c4b23bfd64e 100644
    João> --- a/test/lisp/progmodes/eglot-tests.el
    João> +++ b/test/lisp/progmodes/eglot-tests.el
    João> @@ -314,6 +314,12 @@ then restored."
    João>    (setq last-command-event char)
    João>    (call-interactively (key-binding (vector char))))
 
    João> +(defun eglot--clangd-version ()
    João> +  "Report on the clangd version used in various tests."
    João> +  (replace-regexp-in-string
    João> +   ".*version[[:space:]]+\\(.*\\)" "\\1"
    João> +   (car (split-string (shell-command-to-string "clangd --version") "\n"))))

Not all clangd have the version string and only the version string at
the end of 'clangd --version'. Hereʼs one I installed from git earlier:

clangd version 16.0.0 (https://github.com/llvm/llvm-project.git 08d094a0e457360ad8b94b017d2dc277e697ca76)
Features: linux
Platform: x86_64-unknown-linux-gnu

So how about the following (or we could just say 'everything
non-space', but Iʼm assuming clangd versions are always made up of
numbers and '.')

diff --git c/test/lisp/progmodes/eglot-tests.el i/test/lisp/progmodes/eglot-tests.el
index c4b23bfd64e..557bd899ab7 100644
--- c/test/lisp/progmodes/eglot-tests.el
+++ i/test/lisp/progmodes/eglot-tests.el
@@ -317,7 +317,7 @@ eglot--simulate-key-event
 (defun eglot--clangd-version ()
   "Report on the clangd version used in various tests."
   (replace-regexp-in-string
-   ".*version[[:space:]]+\\(.*\\)" "\\1"
+   ".*version[[:space:]]+\\([0-9.]*\\).*" "\\1"
    (car (split-string (shell-command-to-string "clangd --version") "\n"))))
 
 \f


Robert
-- 



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: master 0d5036061b5: Skip Eglot test if using very old clangd
  2023-03-22 10:38   ` master 0d5036061b5: Skip Eglot test if using very old clangd Robert Pluim
@ 2023-03-22 10:49     ` João Távora
  2023-03-22 11:12       ` Robert Pluim
  0 siblings, 1 reply; 6+ messages in thread
From: João Távora @ 2023-03-22 10:49 UTC (permalink / raw)
  To: Robert Pluim; +Cc: emacs-devel

On Wed, Mar 22, 2023 at 10:38 AM Robert Pluim <rpluim@gmail.com> wrote:

> Not all clangd have the version string and only the version string at
> the end of 'clangd --version'. Hereʼs one I installed from git earlier:
>
> clangd version 16.0.0 (https://github.com/llvm/llvm-project.git 08d094a0e457360ad8b94b017d2dc277e697ca76)
> Features: linux
> Platform: x86_64-unknown-linux-gnu
>
> So how about the following (or we could just say 'everything
> non-space', but Iʼm assuming clangd versions are always made up of
> numbers and '.')
>
> diff --git c/test/lisp/progmodes/eglot-tests.el i/test/lisp/progmodes/eglot-tests.el
> index c4b23bfd64e..557bd899ab7 100644
> --- c/test/lisp/progmodes/eglot-tests.el
> +++ i/test/lisp/progmodes/eglot-tests.el
> @@ -317,7 +317,7 @@ eglot--simulate-key-event
>  (defun eglot--clangd-version ()
>    "Report on the clangd version used in various tests."
>    (replace-regexp-in-string
> -   ".*version[[:space:]]+\\(.*\\)" "\\1"
> +   ".*version[[:space:]]+\\([0-9.]*\\).*" "\\1"
>     (car (split-string (shell-command-to-string "clangd --version") "\n"))))


Sure, thanks.  Bonus points for getting rid of the split-string
and using a regexp that looks at the whole string and
catches the version.  I tried and failed.

João



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: master 0d5036061b5: Skip Eglot test if using very old clangd
  2023-03-22 10:49     ` João Távora
@ 2023-03-22 11:12       ` Robert Pluim
  2023-03-22 11:14         ` João Távora
  0 siblings, 1 reply; 6+ messages in thread
From: Robert Pluim @ 2023-03-22 11:12 UTC (permalink / raw)
  To: João Távora; +Cc: emacs-devel

>>>>> On Wed, 22 Mar 2023 10:49:41 +0000, João Távora <joaotavora@gmail.com> said:

    João> On Wed, Mar 22, 2023 at 10:38 AM Robert Pluim <rpluim@gmail.com> wrote:
    >> Not all clangd have the version string and only the version string at
    >> the end of 'clangd --version'. Hereʼs one I installed from git earlier:
    >> 
    >> clangd version 16.0.0 (https://github.com/llvm/llvm-project.git 08d094a0e457360ad8b94b017d2dc277e697ca76)
    >> Features: linux
    >> Platform: x86_64-unknown-linux-gnu
    >> 
    >> So how about the following (or we could just say 'everything
    >> non-space', but Iʼm assuming clangd versions are always made up of
    >> numbers and '.')
    >> 
    >> diff --git c/test/lisp/progmodes/eglot-tests.el i/test/lisp/progmodes/eglot-tests.el
    >> index c4b23bfd64e..557bd899ab7 100644
    >> --- c/test/lisp/progmodes/eglot-tests.el
    >> +++ i/test/lisp/progmodes/eglot-tests.el
    >> @@ -317,7 +317,7 @@ eglot--simulate-key-event
    >> (defun eglot--clangd-version ()
    >> "Report on the clangd version used in various tests."
    >> (replace-regexp-in-string
    >> -   ".*version[[:space:]]+\\(.*\\)" "\\1"
    >> +   ".*version[[:space:]]+\\([0-9.]*\\).*" "\\1"
    >> (car (split-string (shell-command-to-string "clangd --version") "\n"))))


    João> Sure, thanks.  Bonus points for getting rid of the split-string
    João> and using a regexp that looks at the whole string and
    João> catches the version.  I tried and failed.

This doesnʼt care where 'version ' appears:

(defun eglot--clangd-version ()
  "Report on the clangd version used in various tests."
  (let ((version (shell-command-to-string "clangd --version")))
    (when (string-match "version[[:space:]]+\\([0-9.]*\\)"
                        version)
      (match-string 1 version))))

Robert
-- 



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: master 0d5036061b5: Skip Eglot test if using very old clangd
  2023-03-22 11:12       ` Robert Pluim
@ 2023-03-22 11:14         ` João Távora
  2023-03-22 11:51           ` Robert Pluim
  0 siblings, 1 reply; 6+ messages in thread
From: João Távora @ 2023-03-22 11:14 UTC (permalink / raw)
  To: Robert Pluim; +Cc: emacs-devel

On Wed, Mar 22, 2023 at 11:12 AM Robert Pluim <rpluim@gmail.com> wrote:
>
> >>>>> On Wed, 22 Mar 2023 10:49:41 +0000, João Távora <joaotavora@gmail.com> said:
>
>     João> On Wed, Mar 22, 2023 at 10:38 AM Robert Pluim <rpluim@gmail.com> wrote:
>     >> Not all clangd have the version string and only the version string at
>     >> the end of 'clangd --version'. Hereʼs one I installed from git earlier:
>     >>
>     >> clangd version 16.0.0 (https://github.com/llvm/llvm-project.git 08d094a0e457360ad8b94b017d2dc277e697ca76)
>     >> Features: linux
>     >> Platform: x86_64-unknown-linux-gnu
>     >>
>     >> So how about the following (or we could just say 'everything
>     >> non-space', but Iʼm assuming clangd versions are always made up of
>     >> numbers and '.')
>     >>
>     >> diff --git c/test/lisp/progmodes/eglot-tests.el i/test/lisp/progmodes/eglot-tests.el
>     >> index c4b23bfd64e..557bd899ab7 100644
>     >> --- c/test/lisp/progmodes/eglot-tests.el
>     >> +++ i/test/lisp/progmodes/eglot-tests.el
>     >> @@ -317,7 +317,7 @@ eglot--simulate-key-event
>     >> (defun eglot--clangd-version ()
>     >> "Report on the clangd version used in various tests."
>     >> (replace-regexp-in-string
>     >> -   ".*version[[:space:]]+\\(.*\\)" "\\1"
>     >> +   ".*version[[:space:]]+\\([0-9.]*\\).*" "\\1"
>     >> (car (split-string (shell-command-to-string "clangd --version") "\n"))))
>
>
>     João> Sure, thanks.  Bonus points for getting rid of the split-string
>     João> and using a regexp that looks at the whole string and
>     João> catches the version.  I tried and failed.
>
> This doesnʼt care where 'version ' appears:
>
> (defun eglot--clangd-version ()
>   "Report on the clangd version used in various tests."
>   (let ((version (shell-command-to-string "clangd --version")))
>     (when (string-match "version[[:space:]]+\\([0-9.]*\\)"
>                         version)
>       (match-string 1 version))))

Looks good, can you push?  I wonder why this is so difficult
to do with replace-regexp-in-string.

João



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: master 0d5036061b5: Skip Eglot test if using very old clangd
  2023-03-22 11:14         ` João Távora
@ 2023-03-22 11:51           ` Robert Pluim
  2023-03-22 18:24             ` João Távora
  0 siblings, 1 reply; 6+ messages in thread
From: Robert Pluim @ 2023-03-22 11:51 UTC (permalink / raw)
  To: João Távora; +Cc: emacs-devel

>>>>> On Wed, 22 Mar 2023 11:14:05 +0000, João Távora <joaotavora@gmail.com> said:
    >> This doesnʼt care where 'version ' appears:
    >> 
    >> (defun eglot--clangd-version ()
    >> "Report on the clangd version used in various tests."
    >> (let ((version (shell-command-to-string "clangd --version")))
    >> (when (string-match "version[[:space:]]+\\([0-9.]*\\)"
    >> version)
    >> (match-string 1 version))))

    João> Looks good, can you push?

Done

    João> I wonder why this is so difficult
    João> to do with replace-regexp-in-string.

Itʼs because we donʼt have a 'really-match-everything' version of '.',
so you end up with

  (replace-regexp-in-string
   ".*version[[:space:]]+\\([0-9.]*\\)\\(.\\|[\n\r]\\)*" "\\1"
   (shell-command-to-string "clangd --version"))

which I personally donʼt like the look of.

Robert
-- 



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: master 0d5036061b5: Skip Eglot test if using very old clangd
  2023-03-22 11:51           ` Robert Pluim
@ 2023-03-22 18:24             ` João Távora
  0 siblings, 0 replies; 6+ messages in thread
From: João Távora @ 2023-03-22 18:24 UTC (permalink / raw)
  To: Robert Pluim; +Cc: emacs-devel

Robert Pluim <rpluim@gmail.com> writes:

>     João> I wonder why this is so difficult
>     João> to do with replace-regexp-in-string.
>
> Itʼs because we donʼt have a 'really-match-everything' version of '.',
> so you end up with
>
>   (replace-regexp-in-string
>    ".*version[[:space:]]+\\([0-9.]*\\)\\(.\\|[\n\r]\\)*" "\\1"
>    (shell-command-to-string "clangd --version"))
>
> which I personally donʼt like the look of.

I concur, your version looks much nicer.  Thanks again.

João



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-03-22 18:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <167942421231.13373.16122455155218245677@vcs2.savannah.gnu.org>
     [not found] ` <20230321184332.93736C13913@vcs2.savannah.gnu.org>
2023-03-22 10:38   ` master 0d5036061b5: Skip Eglot test if using very old clangd Robert Pluim
2023-03-22 10:49     ` João Távora
2023-03-22 11:12       ` Robert Pluim
2023-03-22 11:14         ` João Távora
2023-03-22 11:51           ` Robert Pluim
2023-03-22 18:24             ` João Távora

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).