all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Philippe Vaucher <philippe.vaucher@gmail.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Emacs developers <emacs-devel@gnu.org>
Subject: Re: Help understanding ruby.el percent literal syntax
Date: Wed, 19 Jun 2019 17:51:57 +0200	[thread overview]
Message-ID: <CAGK7Mr4MFxy0yrUEh7vO57xz+_M_fFXH2ciG+cmLMSO5_D70sw@mail.gmail.com> (raw)
In-Reply-To: <jwv4l4l689o.fsf-monnier+emacs@gnu.org>

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

>
> ruby-mode uses syntax-propertize to make it so that
>
>     config.allow_sites = %w{twitter facebook pinterest linkedin}
>
> is treated somewhat like
>
>     config.allow_sites = "w{twitter facebook pinterest linkedin"
>
> So if you go to the end of the line and try to skip back over the
> previous `sexp` you'll end up in front of the `%` rather than in front
> of the `{`.
>
> The purpose is probably to handle things like:
>
>     config.allow_sites = %w{twitter facebook # pinterest linkedin}
>
> where the `#` would otherwise be taken as the beginning of a comment.
>

Ah right, that makes sense.



> > If I comment out the call to `ruby-syntax-propertize-percent-literal',
> then
> > the bug in evil-surround is gone, and everything just looks the same
> > visually (the percent literals are correctly highlighted).
>
> Not sure what "comment out the call" means exactly, but from my reading
> of the code, it would result in mayhem (the %w{ above would probably
> be highlighted as if he extended to the end of the buffer).
>

What I meant was "if I edit `ruby-syntax-propertize' so it never calls
`ruby-syntax-propertize-percent-literal' at line 1929". But I think you are
right, it would probably break on your example with the comment above.


In order to interact better with things like Evil's
> delimiter-replacement, ruby-mode.el could be changed so that instead of
> marking the opening `%` and the closing `}` with the `|` syntax, it
> would mark the `%` and `w` part with `'` syntax and then arrange to mark
> the inside of the delimited text with an ad-hoc syntax table that
> doesn't treat `#` as a comment started nor `"` as a string delimiter
> (i.e., the same syntax-table used by the `with-syntax-table`
> in `ruby-syntax-propertize-percent-literal`).  Or alternatively, it
> could look for things like `#` and `"` and give them a `.` syntax.


Thank you a lot for the explanation and the suggestion! We'll see what we
can do :-)

Kind regards,
Philippe

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

      reply	other threads:[~2019-06-19 15:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-19  9:33 Help understanding ruby.el percent literal syntax Philippe Vaucher
2019-06-19 13:20 ` Stefan Monnier
2019-06-19 15:51   ` Philippe Vaucher [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGK7Mr4MFxy0yrUEh7vO57xz+_M_fFXH2ciG+cmLMSO5_D70sw@mail.gmail.com \
    --to=philippe.vaucher@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.