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