Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
config:json [2012/12/04 00:53] – JSON is getting more popular mozaiconfig:json [2015/04/08 23:38] (current) – Add a tip that Geany 1.25 has the filetype builtin colombanw
Line 1: Line 1:
 ====== JSON Filetype ====== ====== JSON Filetype ======
-JSON files are intended for serializing data objectsbut are sometimes used as configuration files.  YAML is superset of JSON, but the differences are minor enough that the YAML lexxer built into Geany still works to appropriately identify structures and for folding large lists.+<WRAP center round tip 60%> 
 +Starting with version 1.25Geany has built-in JSON filetype. 
 +</WRAP>
  
-Add this to the ''filetypes_extensions.conf'' file (''...'' means existing data):+JSON files are intended for serializing data objects, but are sometimes used as configuration files.  JSON syntax is mostly a subset of JavaScript syntax and therefore the JavaScript lexer can be used for it. 
 + 
 +Add this to the ''filetype_extensions.conf'' file (''...'' means existing data):
 <code ini> <code ini>
 [Extensions] [Extensions]
Line 17: Line 21:
 And create a new filedef named ''filetypes.JSON.conf'' with the following contents: And create a new filedef named ''filetypes.JSON.conf'' with the following contents:
 <file properties filetypes.JSON.conf> <file properties filetypes.JSON.conf>
-[styling] +[styling=C]
-default=default +
-number=number +
-string=string +
-word=word +
-identifier=identifier,bold+
  
 [keywords] [keywords]
Line 28: Line 27:
  
 [settings] [settings]
-lexer_filetype=YAML+lexer_filetype=Javascript
 extension=json extension=json
-comment_single=+mime_type=application/json
  
 [indentation] [indentation]
-width=2+#width=4
 # 0 is spaces, 1 is tabs, 2 is tab & spaces # 0 is spaces, 1 is tabs, 2 is tab & spaces
-type=0+#type=1
 </file> </file>
  
Line 43: Line 42:
  
 <file bash /usr/local/bin/check_json> <file bash /usr/local/bin/check_json>
-#!/bin/bash+#!/bin/sh
  
 if which python >/dev/null ; then if which python >/dev/null ; then
-  python -m json.tool <$1 2>&1 >/dev/null \ +  python -m json.tool <"$12>&1 >/dev/null \ 
-  | sed 's/^\([^:]*\): line \(.*\)/'$1':\2: \1/'+  | sed 's/^\([^:]*\): line \(.*\)/'"$1"':\2: \1/'
 elif which perl >/dev/null ; then elif which perl >/dev/null ; then
-  perl -MJSON -e 'local $/;decode_json(<STDIN>);' <$1 2>&1 >/dev/null \ +  perl -MJSON -e 'local $/;decode_json(<STDIN>);' <"$12>&1 >/dev/null \ 
-  |sed 's/^\(.*\) at .e line 1, .STDIN. [^ ]* \([0-9]*\)/'$1':\2: \1/;'+  |sed 's/^\(.*\) at .e line 1, .STDIN. [^ ]* \([0-9]*\)/'"$1"':\2: \1/;'
 else else
   echo "No known JSON parsers found" >&2   echo "No known JSON parsers found" >&2
Line 58: Line 57:
  
 In Geany, go to the Build menu and 'Set Build Commands...' and use ''/usr/local/bin/check_json %f'' as the compile command, and ''([^:]+):([0-9]+)'' as the Error Regular Expression. In Geany, go to the Build menu and 'Set Build Commands...' and use ''/usr/local/bin/check_json %f'' as the compile command, and ''([^:]+):([0-9]+)'' as the Error Regular Expression.
 +
 +=== Pretty Printing ===
 +
 +Assuming you have Python installed, pretty printing (aka formatting) of JSON is very easy with Geany:
 +
 +  * Python is required (works with Python 2 and 3)
 +  * Configure Geany: Edit->Format->Send Selection to->Set Custom Commands
 +  * In the dialog add a new command and simply use: //python -mjson.tool//
 +
 +To use this, select some string in Geany and use Edit->Format->Send Selection to-><your configured command> and Geany will replace the string by the converted version.
 +Alternatively, you can use the shortcut Ctrl-<number> in case your command is one of the first three configured commands.
 +For details, read the [[http://www.geany.org/manual/#sending-text-through-custom-commands|documentation about Send Selection to commands]].
  
  
Print/export