Re: [dev] [surf] [patch] strip uri leading whitespace when ctrl-p

From: Quentin Rameau <quinq_AT_fifth.space>
Date: Thu, 19 Oct 2017 12:19:13 +0200

Hello Jianzhong,

> When using ctrl-p to load uri from clipboard, it's better to strip the
> leading whitespace.

I'm not sure it is.

> For example, to select/copy a uri  from text in terminal and paste to
> surf, currently it need to be very careful not to include any
> whitespace before the uri.

Yes, yo do.

> It's easy for keyboard selection, but for mouse selection, precise
> positioning is a little bit difficult.

I'd suggest you manage this outside of surf, either by training your
mouse skills, or by stripping those leading whitespaces in your
selecting application.

> patch as below:
>
> diff -Nur surf/surf.c surfn/surf.c
> --- surf/surf.c 2017-10-17 13:58:00.636699137 +0800
> +++ surfn/surf.c    2017-10-17 13:58:29.440798516 +0800
> _AT_@ -1707,7 +1707,8 @@
>  void
>  pasteuri(GtkClipboard *clipboard, const char *text, gpointer d)
>  {
> -   Arg a = {.v = text };
> +   char *trimed = g_strstrip(g_strdup(text));
> +   Arg a = {.v = trimed };
>     if (text)
>         loaduri((Client *) d, &a);
>  }

As other stated, you're allocating a new string there whithout ever
releasing it which is wrong.

I'd suggest a simpler approach like this :

diff --git a/surf.c b/surf.c
index 0f8b9c9..8a40a3b 100644
--- a/surf.c
+++ b/surf.c
_AT_@ -1685,9 +1685,14 @@ destroywin(GtkWidget* w, Client *c)
 void
 pasteuri(GtkClipboard *clipboard, const char *text, gpointer d)
 {
- Arg a = {.v = text };
- if (text)
+ Arg a;
+
+ if (text) {
+ for (; *text && (*text == ' ' || *text == '\t'); ++text)
+ ;
+ a.v = text;
                loaduri((Client *) d, &a);
+ }
 }

 void

---
I'm open to discuss this further though if more people complain about
it, thanks for your interest in surf!
-- Quentin
Received on Thu Oct 19 2017 - 12:19:13 CEST

This archive was generated by hypermail 2.3.0 : Thu Oct 19 2017 - 12:24:19 CEST