unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* hideshow bug with json-mode
@ 2015-05-06 17:37 Andrew Pennebaker
  2015-05-06 20:45 ` Robert Thorpe
  2015-05-07 13:20 ` Michael Heerdegen
  0 siblings, 2 replies; 7+ messages in thread
From: Andrew Pennebaker @ 2015-05-06 17:37 UTC (permalink / raw)
  To: Emacs Help

If I don't carefully position my cursor right on the opening curly brace,
then hideshow toggles the parent block instead of the current line's block.

package.json:

{
  "name": "dotfiles",
  "repository": {
    "type": "git"
  }
}

Steps to reproduce:

M-g g 3
M-x hs-toggle-hiding RET

Expected:

{
  "name": "dotfiles",
  "repository": { ... }
}

Observed:

{ ... }

This problem only happens in certain major modes; python-mode with
hs-minor-mode works as expected, whereas json-mode with hs-minor-mode
features this problem.

Any suggestions for configuration to work around this problem? I considered
adding advice to automatically go to the end of line before toggling, but
this doesn't work when re-showing the block, as the cursor needs to be on
the brace ({), but before the ellipsis (...).

-- 
Cheers,
Andrew


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

* Re: hideshow bug with json-mode
  2015-05-06 17:37 hideshow bug with json-mode Andrew Pennebaker
@ 2015-05-06 20:45 ` Robert Thorpe
  2015-05-07  2:35   ` Andrew Pennebaker
  2015-05-07 13:20 ` Michael Heerdegen
  1 sibling, 1 reply; 7+ messages in thread
From: Robert Thorpe @ 2015-05-06 20:45 UTC (permalink / raw)
  To: Andrew Pennebaker; +Cc: help-gnu-emacs

Andrew Pennebaker <andrew.pennebaker@gmail.com> writes:

> If I don't carefully position my cursor right on the opening curly brace,
> then hideshow toggles the parent block instead of the current line's block.

That looks like a bug in json-mode.  I think that mode doesn't setup the
syntax table correctly.

That said, I just downloaded https://github.com/joshwnj/json-mode (I
assume that's the one you're using) and ran that, and it worked
correctly.

Have you tried it with emacs -q ?

BR,
Rob



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

* Re: hideshow bug with json-mode
  2015-05-06 20:45 ` Robert Thorpe
@ 2015-05-07  2:35   ` Andrew Pennebaker
  2015-05-07  2:37     ` Andrew Pennebaker
  0 siblings, 1 reply; 7+ messages in thread
From: Andrew Pennebaker @ 2015-05-07  2:35 UTC (permalink / raw)
  To: Robert Thorpe; +Cc: Emacs Help

Odd, I'm using the latest version of json-mode and still observing the
problem. I'll file a bug.

I wonder if I'm not describing the test case clearly enough. Make sure

* the major-mode is json-mode
* cursor is on line 3, at column 0 or anywhere besides columns 16/17 where
the curly brace lives
* use hs-toggle-hiding
* file contents are:

{
  "name": "dotfiles",
  "repository": {
    "type": "git"
  }
}

On my machine, toggling on line 3 before the curly brace collapses the
parent like this:

{ ... }

which gets nasty in a larger JSON document, when all I want collapsed is
this:

{
  "name": "dotfiles",
  "repository": { ... }
}

System:

$ find $HOME/.emacs.d/.cask -type d -name '*json-mode*'

/Users/andrew/.emacs.d/.cask/24.4.1/elpa/json-mode-20150413.1948

$ emacs --version

GNU Emacs 24.4.1

Copyright (C) 2014 Free Software Foundation, Inc.

GNU Emacs comes with ABSOLUTELY NO WARRANTY.

You may redistribute copies of Emacs

under the terms of the GNU General Public License.

For more information about these matters, see the file named COPYING.

On Wed, May 6, 2015 at 3:45 PM, Robert Thorpe <rt@robertthorpeconsulting.com
> wrote:

> Andrew Pennebaker <andrew.pennebaker@gmail.com> writes:
>
> > If I don't carefully position my cursor right on the opening curly brace,
> > then hideshow toggles the parent block instead of the current line's
> block.
>
> That looks like a bug in json-mode.  I think that mode doesn't setup the
> syntax table correctly.
>
> That said, I just downloaded https://github.com/joshwnj/json-mode (I
> assume that's the one you're using) and ran that, and it worked
> correctly.
>
> Have you tried it with emacs -q ?
>
> BR,
> Rob
>



-- 
Cheers,
Andrew


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

* Re: hideshow bug with json-mode
  2015-05-07  2:35   ` Andrew Pennebaker
@ 2015-05-07  2:37     ` Andrew Pennebaker
  0 siblings, 0 replies; 7+ messages in thread
From: Andrew Pennebaker @ 2015-05-07  2:37 UTC (permalink / raw)
  To: Robert Thorpe; +Cc: Emacs Help

I observe the problem even with emacs -Q.

The problem presents itself in json-mode and nxml-mode, too!

On Wed, May 6, 2015 at 9:35 PM, Andrew Pennebaker <
andrew.pennebaker@gmail.com> wrote:

> Odd, I'm using the latest version of json-mode and still observing the
> problem. I'll file a bug.
>
> I wonder if I'm not describing the test case clearly enough. Make sure
>
> * the major-mode is json-mode
> * cursor is on line 3, at column 0 or anywhere besides columns 16/17 where
> the curly brace lives
> * use hs-toggle-hiding
> * file contents are:
>
> {
>   "name": "dotfiles",
>   "repository": {
>     "type": "git"
>   }
> }
>
> On my machine, toggling on line 3 before the curly brace collapses the
> parent like this:
>
> { ... }
>
> which gets nasty in a larger JSON document, when all I want collapsed is
> this:
>
> {
>   "name": "dotfiles",
>   "repository": { ... }
> }
>
> System:
>
> $ find $HOME/.emacs.d/.cask -type d -name '*json-mode*'
>
> /Users/andrew/.emacs.d/.cask/24.4.1/elpa/json-mode-20150413.1948
>
> $ emacs --version
>
> GNU Emacs 24.4.1
>
> Copyright (C) 2014 Free Software Foundation, Inc.
>
> GNU Emacs comes with ABSOLUTELY NO WARRANTY.
>
> You may redistribute copies of Emacs
>
> under the terms of the GNU General Public License.
>
> For more information about these matters, see the file named COPYING.
>
> On Wed, May 6, 2015 at 3:45 PM, Robert Thorpe <
> rt@robertthorpeconsulting.com> wrote:
>
>> Andrew Pennebaker <andrew.pennebaker@gmail.com> writes:
>>
>> > If I don't carefully position my cursor right on the opening curly
>> brace,
>> > then hideshow toggles the parent block instead of the current line's
>> block.
>>
>> That looks like a bug in json-mode.  I think that mode doesn't setup the
>> syntax table correctly.
>>
>> That said, I just downloaded https://github.com/joshwnj/json-mode (I
>> assume that's the one you're using) and ran that, and it worked
>> correctly.
>>
>> Have you tried it with emacs -q ?
>>
>> BR,
>> Rob
>>
>
>
>
> --
> Cheers,
> Andrew
>



-- 
Cheers,
Andrew


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

* Re: hideshow bug with json-mode
  2015-05-06 17:37 hideshow bug with json-mode Andrew Pennebaker
  2015-05-06 20:45 ` Robert Thorpe
@ 2015-05-07 13:20 ` Michael Heerdegen
  2015-05-07 14:02   ` Andrew Pennebaker
  1 sibling, 1 reply; 7+ messages in thread
From: Michael Heerdegen @ 2015-05-07 13:20 UTC (permalink / raw)
  To: help-gnu-emacs

Andrew Pennebaker <andrew.pennebaker@gmail.com> writes:

> This problem only happens in certain major modes; python-mode with
> hs-minor-mode works as expected, whereas json-mode with hs-minor-mode
> features this problem.

AFAIK hideshow does not work out of the box with every mode.  It's
possible that it needs configuration to make it work (see
`hs-special-modes-alist').  Are you sure that the affected modes are
supported?


HTH,

Michael.




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

* Re: hideshow bug with json-mode
  2015-05-07 13:20 ` Michael Heerdegen
@ 2015-05-07 14:02   ` Andrew Pennebaker
  2015-05-07 20:50     ` Robert Thorpe
  0 siblings, 1 reply; 7+ messages in thread
From: Andrew Pennebaker @ 2015-05-07 14:02 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: Emacs Help

yafolding <https://github.com/zenozeng/yafolding.el> seems to fix this
problem for both JSON and XML files.

On Thu, May 7, 2015 at 8:20 AM, Michael Heerdegen <michael_heerdegen@web.de>
wrote:

> Andrew Pennebaker <andrew.pennebaker@gmail.com> writes:
>
> > This problem only happens in certain major modes; python-mode with
> > hs-minor-mode works as expected, whereas json-mode with hs-minor-mode
> > features this problem.
>
> AFAIK hideshow does not work out of the box with every mode.  It's
> possible that it needs configuration to make it work (see
> `hs-special-modes-alist').  Are you sure that the affected modes are
> supported?
>
>
> HTH,
>
> Michael.
>
>
>


-- 
Cheers,
Andrew


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

* Re: hideshow bug with json-mode
  2015-05-07 14:02   ` Andrew Pennebaker
@ 2015-05-07 20:50     ` Robert Thorpe
  0 siblings, 0 replies; 7+ messages in thread
From: Robert Thorpe @ 2015-05-07 20:50 UTC (permalink / raw)
  To: Andrew Pennebaker; +Cc: michael_heerdegen, help-gnu-emacs

Try evaluating the following line:
(push '(json-mode "{" "}" "/[*/]" nil) hs-special-modes-alist)
Then try your example.

Probably, the reason yafolding works is because it's indentation based.
Hide-show is based on syntax, so it needs information from the mode on
the syntax of blocks.

When you say that nXML mode doesn't work, what do you mean?  What XML
code did you use to try it?

BR,
Robert Thorpe

Andrew Pennebaker <andrew.pennebaker@gmail.com> writes:
> yafolding <https://github.com/zenozeng/yafolding.el> seems to fix this
> problem for both JSON and XML files.
>
> On Thu, May 7, 2015 at 8:20 AM, Michael Heerdegen <michael_heerdegen@web.de>
> wrote:
>
>> Andrew Pennebaker <andrew.pennebaker@gmail.com> writes:
>>
>> > This problem only happens in certain major modes; python-mode with
>> > hs-minor-mode works as expected, whereas json-mode with hs-minor-mode
>> > features this problem.
>>
>> AFAIK hideshow does not work out of the box with every mode.  It's
>> possible that it needs configuration to make it work (see
>> `hs-special-modes-alist').  Are you sure that the affected modes are
>> supported?
>>
>>
>> HTH,
>>
>> Michael.
>>
>>
>>



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

end of thread, other threads:[~2015-05-07 20:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-06 17:37 hideshow bug with json-mode Andrew Pennebaker
2015-05-06 20:45 ` Robert Thorpe
2015-05-07  2:35   ` Andrew Pennebaker
2015-05-07  2:37     ` Andrew Pennebaker
2015-05-07 13:20 ` Michael Heerdegen
2015-05-07 14:02   ` Andrew Pennebaker
2015-05-07 20:50     ` Robert Thorpe

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