nXML mode word separators

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

nXML mode word separators

Skip Montanaro
I unfortunately have to work with handwritten XML which is used to
define complex application configs. In that context, apostrophes are
valid string delimiters, at least in whatever XML pseudo-dialect these
files are written in. So, both of these snippets mean the same thing:

<Env INST="2" />
<Env INST='2' />

I'm not in any sort of position to dictate any changes, so I need to
adapt. So, forward-word currently skips over apostrophes (considering
them word characters) and kill-word (even worse) deletes them. It has
probably been a decade since I fiddled with syntax tables. How do I
move apostrophes from word class to quotation(?) class in the relevant
syntax table? FWIW, when editing XML files I seem to be in nxml-mode
(nothing I enabled specifically, must just be the default mode).

Thanks,

Skip Montanaro

Reply | Threaded
Open this post in threaded view
|

Re: nXML mode word separators

Robert Pluim
Skip Montanaro <[hidden email]> writes:

> I unfortunately have to work with handwritten XML which is used to
> define complex application configs. In that context, apostrophes are
> valid string delimiters, at least in whatever XML pseudo-dialect these
> files are written in. So, both of these snippets mean the same thing:
>
> <Env INST="2" />
> <Env INST='2' />
>
> I'm not in any sort of position to dictate any changes, so I need to
> adapt. So, forward-word currently skips over apostrophes (considering
> them word characters) and kill-word (even worse) deletes them. It has
> probably been a decade since I fiddled with syntax tables. How do I
> move apostrophes from word class to quotation(?) class in the relevant
> syntax table? FWIW, when editing XML files I seem to be in nxml-mode
> (nothing I enabled specifically, must just be the default mode).
>

(add-hook 'nxml-mode-hook
          (lambda ()
            (modify-syntax-entry ?' "\"")))

Robert

Reply | Threaded
Open this post in threaded view
|

Re: nXML mode word separators

Noam Postavsky
In reply to this post by Skip Montanaro
On Thu, 7 Feb 2019 at 10:02, Skip Montanaro <[hidden email]> wrote:

> both of these snippets mean the same thing:
>
> <Env INST="2" />
> <Env INST='2' />

This is standard XML, so if there is some trouble with it perhaps a
change to nxml-mode is warranted.

Reply | Threaded
Open this post in threaded view
|

Re: nXML mode word separators

Robert Pluim
Noam Postavsky <[hidden email]> writes:

> On Thu, 7 Feb 2019 at 10:02, Skip Montanaro <[hidden email]> wrote:
>
>> both of these snippets mean the same thing:
>>
>> <Env INST="2" />
>> <Env INST='2' />
>
> This is standard XML, so if there is some trouble with it perhaps a
> change to nxml-mode is warranted.

I think 'sgml-specials' in sgml-mode is to blame here.

should fi

Reply | Threaded
Open this post in threaded view
|

Re: nXML mode word separators

Skip Montanaro
In reply to this post by Robert Pluim
> (add-hook 'nxml-mode-hook
>           (lambda ()
>             (modify-syntax-entry ?' "\"")))

Thanks, Robert. This worked perfectly. I will leave discussion of
broader issues related to nxml-mode and sqml-mode to the experts,
though it does seem that if apostrophes are valid quote string
delimiters everywhere, they should be treated syntactically like
quotation marks.


Skip

Reply | Threaded
Open this post in threaded view
|

Re: nXML mode word separators

Stefan Monnier
In reply to this post by Skip Montanaro
> I unfortunately have to work with handwritten XML which is used to
> define complex application configs. In that context, apostrophes are
> valid string delimiters, at least in whatever XML pseudo-dialect these
> files are written in. So, both of these snippets mean the same thing:
>
> <Env INST="2" />
> <Env INST='2' />
>
> I'm not in any sort of position to dictate any changes, so I need to
> adapt. So, forward-word currently skips over apostrophes (considering
> them word characters) and kill-word (even worse) deletes them.

Word operations are not meant to be sensitive to the major mode, so it's
not a bug for them to behave differently for ' and " here (and this is
a matter of personal preference and hence local customization).

OTOH, syntax-aware operations (such as highlighting, indentation, and
things like that) should not get confused by such a difference since
both are valid XML and equivalent.

So, if the problem you describe only affects word operations, go ahead
and customize them to your heart's content, but if it also affects
syntax-aware operations, please report it as a bug.


        Stefan