unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
       [not found] ` <E1XyOqS-0007dA-S5@vcs.savannah.gnu.org>
@ 2014-12-09 21:47   ` Dmitry Gutov
  2014-12-09 21:50     ` Bozhidar Batsov
  2014-12-09 22:07     ` Bozhidar Batsov
  2014-12-10  2:11   ` Ted Zlatanov
  1 sibling, 2 replies; 9+ messages in thread
From: Dmitry Gutov @ 2014-12-09 21:47 UTC (permalink / raw)
  To: emacs-devel; +Cc: Bozhidar Batsov

Hi!

Bozhidar Batsov <bozhidar@batsov.com> writes:

> +(defun ruby--string-region ()
> +  "Return region for string at point."
> +  (let ((orig-point (point)) (regex "'\\(\\(\\\\'\\)\\|[^']\\)*'\\|\"\\(\\(\\\\\"\\)\\|[^\"]\\)*\"") beg end)
> +    (save-excursion
> +      (goto-char (line-beginning-position))
> +      (while (and (re-search-forward regex (line-end-position) t) (not (and beg end)))
> +        (let ((match-beg (match-beginning 0)) (match-end (match-end 0)))
> +          (when (and
> +                 (> orig-point match-beg)
> +                 (< orig-point match-end))
> +            (setq beg match-beg)
> +            (setq end match-end))))
> +      (and beg end (list beg end)))))

Any reason this doesn't do something like

(let ((state (syntax-ppss)))
  (when (memq (nth 3 state) '(?' ?\"))
    (goto-char (nth 8 state))
    (forward-sexp)
    (list (nth 8 state) (point))))

?



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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
  2014-12-09 21:47   ` master e8acfc7: Add a command for string quotes toggling to ruby-mode Dmitry Gutov
@ 2014-12-09 21:50     ` Bozhidar Batsov
  2014-12-09 22:10       ` Dmitry Gutov
  2014-12-09 22:07     ` Bozhidar Batsov
  1 sibling, 1 reply; 9+ messages in thread
From: Bozhidar Batsov @ 2014-12-09 21:50 UTC (permalink / raw)
  To: Dmitry Gutov, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1086 bytes --]

I was thinking it might cause problems for strings that are not quoted literals. I might be wrong, though.

— 
Cheers,
Bozhidar

On December 9, 2014 at 23:47:37, Dmitry Gutov (dgutov@yandex.ru) wrote:

Hi!  

Bozhidar Batsov <bozhidar@batsov.com> writes:  

> +(defun ruby--string-region ()  
> + "Return region for string at point."  
> + (let ((orig-point (point)) (regex "'\\(\\(\\\\'\\)\\|[^']\\)*'\\|\"\\(\\(\\\\\"\\)\\|[^\"]\\)*\"") beg end)  
> + (save-excursion  
> + (goto-char (line-beginning-position))  
> + (while (and (re-search-forward regex (line-end-position) t) (not (and beg end)))  
> + (let ((match-beg (match-beginning 0)) (match-end (match-end 0)))  
> + (when (and  
> + (> orig-point match-beg)  
> + (< orig-point match-end))  
> + (setq beg match-beg)  
> + (setq end match-end))))  
> + (and beg end (list beg end)))))  

Any reason this doesn't do something like  

(let ((state (syntax-ppss)))  
(when (memq (nth 3 state) '(?' ?\"))  
(goto-char (nth 8 state))  
(forward-sexp)  
(list (nth 8 state) (point))))  

?  

[-- Attachment #2: Type: text/html, Size: 2147 bytes --]

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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
  2014-12-09 21:47   ` master e8acfc7: Add a command for string quotes toggling to ruby-mode Dmitry Gutov
  2014-12-09 21:50     ` Bozhidar Batsov
@ 2014-12-09 22:07     ` Bozhidar Batsov
  2014-12-09 22:23       ` Dmitry Gutov
  1 sibling, 1 reply; 9+ messages in thread
From: Bozhidar Batsov @ 2014-12-09 22:07 UTC (permalink / raw)
  To: Dmitry Gutov, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]

The thought about using syntax-ppss crossed my mind, but I’m not particularly knowledgable there so I took a familiar route.
I’ll update the code.

P.S. Got to love cryptic code like (nth 8 state). This definitely needs a more digestible API.

-- 
Bozhidar Batsov
On December 9, 2014 at 23:47:37, Dmitry Gutov (dgutov@yandex.ru) wrote:

Hi!  

Bozhidar Batsov <bozhidar@batsov.com> writes:  

> +(defun ruby--string-region ()  
> + "Return region for string at point."  
> + (let ((orig-point (point)) (regex "'\\(\\(\\\\'\\)\\|[^']\\)*'\\|\"\\(\\(\\\\\"\\)\\|[^\"]\\)*\"") beg end)  
> + (save-excursion  
> + (goto-char (line-beginning-position))  
> + (while (and (re-search-forward regex (line-end-position) t) (not (and beg end)))  
> + (let ((match-beg (match-beginning 0)) (match-end (match-end 0)))  
> + (when (and  
> + (> orig-point match-beg)  
> + (< orig-point match-end))  
> + (setq beg match-beg)  
> + (setq end match-end))))  
> + (and beg end (list beg end)))))  

Any reason this doesn't do something like  

(let ((state (syntax-ppss)))  
(when (memq (nth 3 state) '(?' ?\"))  
(goto-char (nth 8 state))  
(forward-sexp)  
(list (nth 8 state) (point))))  

?  

[-- Attachment #2: Type: text/html, Size: 2643 bytes --]

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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
  2014-12-09 21:50     ` Bozhidar Batsov
@ 2014-12-09 22:10       ` Dmitry Gutov
  0 siblings, 0 replies; 9+ messages in thread
From: Dmitry Gutov @ 2014-12-09 22:10 UTC (permalink / raw)
  To: Bozhidar Batsov, emacs-devel

On 12/09/2014 11:50 PM, Bozhidar Batsov wrote:
> I was thinking it might cause problems for strings that are not quoted
> literals. I might be wrong, though.

What kind of problems? The suggestion does check the string's type (the 
terminating character).

IIRC, I have this kind of code somewhere else, so I'd be good to know if 
it's not ideal.



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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
  2014-12-09 22:07     ` Bozhidar Batsov
@ 2014-12-09 22:23       ` Dmitry Gutov
  0 siblings, 0 replies; 9+ messages in thread
From: Dmitry Gutov @ 2014-12-09 22:23 UTC (permalink / raw)
  To: Bozhidar Batsov, emacs-devel

On 12/10/2014 12:07 AM, Bozhidar Batsov wrote:

> I’ll update the code.

Thanks.

> P.S. Got to love cryptic code like (nth 8 state). This definitely needs
> a more digestible API.

I don't know, I kinda like the succinctness.

Although the fact that I do have to look up the `parse-partial-sexp' 
description almost every time, says that a handful of defsubsts might 
indeed be of help.



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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
       [not found] ` <E1XyOqS-0007dA-S5@vcs.savannah.gnu.org>
  2014-12-09 21:47   ` master e8acfc7: Add a command for string quotes toggling to ruby-mode Dmitry Gutov
@ 2014-12-10  2:11   ` Ted Zlatanov
  2014-12-10  8:30     ` Bozhidar Batsov
  1 sibling, 1 reply; 9+ messages in thread
From: Ted Zlatanov @ 2014-12-10  2:11 UTC (permalink / raw)
  To: emacs-devel; +Cc: Bozhidar Batsov

On Tue, 09 Dec 2014 17:45:09 +0000 Bozhidar Batsov <bozhidar@batsov.com> wrote: 

BB>     Add a command for string quotes toggling to ruby-mode
    
BB>     * progmodes/ruby-mode.el (ruby-toggle-string-quotes): New command that
BB>     allows you to quickly toggle between single-quoted and double-quoted
BB>     string literals.

Boshidar, this would be useful for other languages too (at least Perl
and CFEngine).  Would you be able to generalize your contribution?  If
not, would it be OK with you if I do it?

Thanks
Ted



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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
  2014-12-10  2:11   ` Ted Zlatanov
@ 2014-12-10  8:30     ` Bozhidar Batsov
  2014-12-10 13:25       ` Ted Zlatanov
  0 siblings, 1 reply; 9+ messages in thread
From: Bozhidar Batsov @ 2014-12-10  8:30 UTC (permalink / raw)
  To: emacs-devel, Ted Zlatanov

[-- Attachment #1: Type: text/plain, Size: 751 bytes --]

I’m fine with you generalising it, but I guess I’ll have to apply the refactoring suggested by Dmitry first.

-- 
Bozhidar Batsov
On December 10, 2014 at 04:10:48, Ted Zlatanov (tzz@lifelogs.com) wrote:

On Tue, 09 Dec 2014 17:45:09 +0000 Bozhidar Batsov <bozhidar@batsov.com> wrote:  

BB> Add a command for string quotes toggling to ruby-mode  

BB> * progmodes/ruby-mode.el (ruby-toggle-string-quotes): New command that  
BB> allows you to quickly toggle between single-quoted and double-quoted  
BB> string literals.  

Boshidar, this would be useful for other languages too (at least Perl  
and CFEngine). Would you be able to generalize your contribution? If  
not, would it be OK with you if I do it?  

Thanks  
Ted  

[-- Attachment #2: Type: text/html, Size: 1609 bytes --]

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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
  2014-12-10  8:30     ` Bozhidar Batsov
@ 2014-12-10 13:25       ` Ted Zlatanov
  2014-12-22 15:06         ` Bozhidar Batsov
  0 siblings, 1 reply; 9+ messages in thread
From: Ted Zlatanov @ 2014-12-10 13:25 UTC (permalink / raw)
  To: emacs-devel

On Wed, 10 Dec 2014 10:30:28 +0200 Bozhidar Batsov <bozhidar@batsov.com> wrote: 

BB> On December 10, 2014 at 04:10:48, Ted Zlatanov (tzz@lifelogs.com) wrote:

TZ> Bozhidar, this would be useful for other languages too (at least Perl  
TZ> and CFEngine). Would you be able to generalize your contribution? If  
TZ> not, would it be OK with you if I do it?  

BB> I’m fine with you generalising [`ruby-toggle-string-quotes'], but I
BB> guess I’ll have to apply the refactoring suggested by Dmitry first.

OK, let me know when you're ready with that and I'll extract it.

I am excited to use it, I've needed it several times :)

Ted




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

* Re: master e8acfc7: Add a command for string quotes toggling to ruby-mode
  2014-12-10 13:25       ` Ted Zlatanov
@ 2014-12-22 15:06         ` Bozhidar Batsov
  0 siblings, 0 replies; 9+ messages in thread
From: Bozhidar Batsov @ 2014-12-22 15:06 UTC (permalink / raw)
  To: Ted Zlatanov, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 874 bytes --]

Just committed the updated version. Looking forward to seeing this in as many modes as possible.

—
Cheers, 
Bozhidar

On December 10, 2014 at 3:25:56 PM, Ted Zlatanov (tzz@lifelogs.com) wrote:

On Wed, 10 Dec 2014 10:30:28 +0200 Bozhidar Batsov <bozhidar@batsov.com> wrote:  

BB> On December 10, 2014 at 04:10:48, Ted Zlatanov (tzz@lifelogs.com) wrote:  

TZ> Bozhidar, this would be useful for other languages too (at least Perl  
TZ> and CFEngine). Would you be able to generalize your contribution? If  
TZ> not, would it be OK with you if I do it?  

BB> I’m fine with you generalising [`ruby-toggle-string-quotes'], but I  
BB> guess I’ll have to apply the refactoring suggested by Dmitry first.  

OK, let me know when you're ready with that and I'll extract it.  

I am excited to use it, I've needed it several times :)  

Ted  



[-- Attachment #2: Type: text/html, Size: 1754 bytes --]

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

end of thread, other threads:[~2014-12-22 15:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20141209174508.29184.57986@vcs.savannah.gnu.org>
     [not found] ` <E1XyOqS-0007dA-S5@vcs.savannah.gnu.org>
2014-12-09 21:47   ` master e8acfc7: Add a command for string quotes toggling to ruby-mode Dmitry Gutov
2014-12-09 21:50     ` Bozhidar Batsov
2014-12-09 22:10       ` Dmitry Gutov
2014-12-09 22:07     ` Bozhidar Batsov
2014-12-09 22:23       ` Dmitry Gutov
2014-12-10  2:11   ` Ted Zlatanov
2014-12-10  8:30     ` Bozhidar Batsov
2014-12-10 13:25       ` Ted Zlatanov
2014-12-22 15:06         ` Bozhidar Batsov

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).