all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#74132: 31.0.50; thing-at-pt, ffap and Github markdown
@ 2024-10-31 10:36 Madhu
       [not found] ` <handler.74132.B.173037135112690.ack@debbugs.gnu.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Madhu @ 2024-10-31 10:36 UTC (permalink / raw)
  To: 74132

[-- Attachment #1: Type: Text/Plain, Size: 877 bytes --]

Consider the following text as is typically found on README.md

```
[![GitHub Releases Downloads](https://img.shields.io/github/downloads/raysan5/raylib/total)](https://github.com/raysan5/raylib/releases)
```

If the point is say at "r" at "raylib/releases", invoking
(ffap-url-at-point) fails.  this eventually calls
thing-at-point-bounds-of-url-at-point, which has hardcoded behaviour
to, skip over "allowed characters" backwards to find the beginning of
the bound. here it it finds the space character (in "Release
Downloads") and the whole thing fails.

This particular failure can be addressed by supplying the lim
paramater to the skip-chars-backward, as shown in the attached
patch.

does this look like a problem which ought to be solved? and is this
appropriate? (I was going to post on emacs-devel but decided to post
to the bug list instead) -- Best Regards, Madhu


[-- Attachment #2: 0001-lisp-thingatpt.el-recognize-urls-better-in-markdown-.patch --]
[-- Type: Text/X-Patch, Size: 1752 bytes --]

From 5971b7c10d7c38d540fdf278a0cd559c96b10ed2 Mon Sep 17 00:00:00 2001
From: Madhu <enometh@net.meer>
Date: Thu, 31 Oct 2024 15:40:42 +0530
Subject: [PATCH] lisp/thingatpt.el: recognize urls better in markdown text

* lisp/thingatpt.el: (thing-at-point-bounds-of-url-at-point): supply a
LIM when calling (skip-chars-backward allowed-chars), which is the
position where `thing-at-point-beginning-of-url-regexp' matches
backwards

problematic url e.g.
```
[![GitHub Releases Downloads](https://img.shields.io/github/downloads/raysan5/raylib/total)](https://github.com/raysan5/raylib/releases)
```
If the point is in the the second url, skip-chars-backwards goes to the
space (between s and D) and `ffap-url-at-point' eventually fails.
but if we supply a limit with a left anchor, we work around it.
---
 lisp/thingatpt.el | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 3cfd3905701..0b8e28af5b9 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -502,9 +502,14 @@ thing-at-point-bounds-of-url-at-point
       (let* ((allowed-chars "--:=&?$+@-Z_[:alpha:]~#,%;*()!'[]")
 	     (skip-before "^[0-9a-zA-Z]")
 	     (skip-after  ":;.,!?'")
+             (hard-beg (and thing-at-point-beginning-of-url-regexp
+                            (save-excursion
+                              (re-search-backward
+                               thing-at-point-beginning-of-url-regexp nil t)
+                              (point))))
 	     (pt (point))
 	     (beg (save-excursion
-		    (skip-chars-backward allowed-chars)
+		    (skip-chars-backward allowed-chars hard-beg)
 		    (skip-chars-forward skip-before pt)
 		    (point)))
 	     (end (save-excursion
-- 
2.46.0.27.gfa3b914457


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

* bug#74132: Acknowledgement (31.0.50; thing-at-pt, ffap and Github markdown)
       [not found] ` <handler.74132.B.173037135112690.ack@debbugs.gnu.org>
@ 2024-11-01  5:38   ` Madhu
  2024-11-02 22:04     ` Stefan Kangas
  0 siblings, 1 reply; 3+ messages in thread
From: Madhu @ 2024-11-01  5:38 UTC (permalink / raw)
  To: 74132

There was a typo in the patch I posted. It should instead look like this
```
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -502,9 +502,15 @@ thing-at-point-bounds-of-url-at-point
       (let* ((allowed-chars "--:=&?$+@-Z_[:alpha:]~#,%;*()!'[]")
 	     (skip-before "^[0-9a-zA-Z]")
 	     (skip-after  ":;.,!?'")
+             (hard-beg (and thing-at-point-beginning-of-url-regexp
+                            (save-excursion
+                              (and
+                               (re-search-backward
+                                thing-at-point-beginning-of-url-regexp nil t)
+                               (point)))))
 	     (pt (point))
 	     (beg (save-excursion
-		    (skip-chars-backward allowed-chars)
+		    (skip-chars-backward allowed-chars hard-beg)
 		    (skip-chars-forward skip-before pt)
 		    (point)))
 	     (end (save-excursion
```





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

* bug#74132: Acknowledgement (31.0.50; thing-at-pt, ffap and Github markdown)
  2024-11-01  5:38   ` bug#74132: Acknowledgement (31.0.50; thing-at-pt, ffap and Github markdown) Madhu
@ 2024-11-02 22:04     ` Stefan Kangas
  0 siblings, 0 replies; 3+ messages in thread
From: Stefan Kangas @ 2024-11-02 22:04 UTC (permalink / raw)
  To: Madhu, 74132

Madhu <enometh@meer.net> writes:

> There was a typo in the patch I posted. It should instead look like this

Could you please resend the amended patch as an attachment?

Also, how about having some tests for this?

> ```
> diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
> --- a/lisp/thingatpt.el
> +++ b/lisp/thingatpt.el
> @@ -502,9 +502,15 @@ thing-at-point-bounds-of-url-at-point
>        (let* ((allowed-chars "--:=&?$+@-Z_[:alpha:]~#,%;*()!'[]")
>  	     (skip-before "^[0-9a-zA-Z]")
>  	     (skip-after  ":;.,!?'")
> +             (hard-beg (and thing-at-point-beginning-of-url-regexp
> +                            (save-excursion
> +                              (and
> +                               (re-search-backward
> +                                thing-at-point-beginning-of-url-regexp nil t)
> +                               (point)))))
>  	     (pt (point))
>  	     (beg (save-excursion
> -		    (skip-chars-backward allowed-chars)
> +		    (skip-chars-backward allowed-chars hard-beg)
>  		    (skip-chars-forward skip-before pt)
>  		    (point)))
>  	     (end (save-excursion
> ```





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

end of thread, other threads:[~2024-11-02 22:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-31 10:36 bug#74132: 31.0.50; thing-at-pt, ffap and Github markdown Madhu
     [not found] ` <handler.74132.B.173037135112690.ack@debbugs.gnu.org>
2024-11-01  5:38   ` bug#74132: Acknowledgement (31.0.50; thing-at-pt, ffap and Github markdown) Madhu
2024-11-02 22:04     ` Stefan Kangas

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.