Outline editing, like org-mode, for JSON

2017-03-20 23:39:53

I am trying to edit a Swagger JSON file in emacs. It contains large nested JSON objects, so I want to collapse and hide some of them.

I have tried origami-mode, configured as origami-c-style-parser in origami-parser-alist, but it is quite unsophisticated (the word "parser" seems to be an overly grandiose word for what it does). It doesn't notice that Swagger URL parameter substrings like {id} are inside JSON strings, so it happily collapses them too when I ask it to collapse all nodes in the buffer except the current node. I don't want it to do that. I want a way of collapsing only JSON subtrees like objects, not substrings of JSON strings that happen to have curly braces in them. How can I achieve this goal?

Emacs comes with hs-minor-mode which can be used selectively hide/show code and comment blocks in several languages, including JavaScript. By default this will let you hide and show JSON blocks delimited by '{' and '}' but it is easily modified to allow '[' a

  • Emacs comes with hs-minor-mode which can be used selectively hide/show code and comment blocks in several languages, including JavaScript. By default this will let you hide and show JSON blocks delimited by '{' and '}' but it is easily modified to allow '[' and ']' as block delimeters as well. To do this we need to modify the js-mode entry in hs-special-modes-alist with something like:

    (setcdr (assoc 'js-mode hs-special-modes-alist) '("[{[]" "[}\\]]" "/[*/]" nil))

    You should then find that [...] blocks can be hidden and shown as well as {...} blocks.

    2017-03-21 01:22:56