Ticket #4316: 0001-Add-basic-Ngspice-syntax-highlighting.patch

File 0001-Add-basic-Ngspice-syntax-highlighting.patch, 16.2 KB (added by gszymaszek, 2 years ago)
  • misc/syntax/Makefile.am

    From 5510ea9243415e50324e551aafdbe4b63752ca61 Mon Sep 17 00:00:00 2001
    From: Grzegorz Szymaszek <gszymaszek@short.pl>
    Date: Wed, 1 Dec 2021 13:20:07 +0100
    Subject: [PATCH] Add basic Ngspice syntax highlighting
    
    Add basic support for highlighting Ngspice/SPICE circuit description
    files syntax. Two main contexts are defined:
    - the default context, where the circuit is described,
    - the control script context (between .control and .endc).
    
    The default context highlights dot commands, circuit element instance
    names and model types. The control script context highlights supported
    functions/commands and known variables. Both contexts highlight comments
    and line continuation marks.
    
    Other than two FIXMEs, it is a known issue the first line of the file is
    part of the default context, while in most cases it would contain the
    file title.
    ---
     misc/syntax/Makefile.am  |   1 +
     misc/syntax/Syntax.in    |   3 +
     misc/syntax/spice.syntax | 421 +++++++++++++++++++++++++++++++++++++++
     3 files changed, 425 insertions(+)
     create mode 100644 misc/syntax/spice.syntax
    
    diff --git a/misc/syntax/Makefile.am b/misc/syntax/Makefile.am
    index e980e9925..2e2438a9f 100644
    a b SYNTAXFILES = \ 
    8080        slang.syntax            \ 
    8181        smalltalk.syntax        \ 
    8282        spec.syntax             \ 
     83        spice.syntax            \ 
    8384        sql.syntax              \ 
    8485        strace.syntax           \ 
    8586        swift.syntax            \ 
  • misc/syntax/Syntax.in

    diff --git a/misc/syntax/Syntax.in b/misc/syntax/Syntax.in
    index 53d8c6a46..eef089542 100644
    a b include html.syntax 
    7070file ..\*\\.((?i:xml|xsd|xslt?|dtd)|qpg|qpg\\.in)$ XML\sdocument (\\?xml\sversion|!DOCTYPE\s) 
    7171include xml.syntax 
    7272 
     73file ..\*\\.cir$ Spice\scircuit 
     74include spice.syntax 
     75 
    7376file ..\*\\.(?i:tt)$ Template::Toolkit\sFile 
    7477include tt.syntax 
    7578 
  • new file misc/syntax/spice.syntax

    diff --git a/misc/syntax/spice.syntax b/misc/syntax/spice.syntax
    new file mode 100644
    index 000000000..15e6aea58
    - +  
     1caseinsensitive 
     2 
     3context default 
     4    keyword linestart \**\n brown 
     5    keyword $*\n brown 
     6    keyword ;*\n brown 
     7    keyword //*\n brown 
     8    keyword linestart \+ red 
     9 
     10    # dot commands 
     11    keyword whole .ac brightmagenta 
     12    keyword whole .csparam brightmagenta 
     13    keyword whole .dc brightmagenta 
     14    keyword whole .disto brightmagenta 
     15    keyword whole .else brightmagenta 
     16    keyword whole .elseif brightmagenta 
     17    keyword whole .end brightmagenta 
     18    keyword whole .endif brightmagenta 
     19    keyword whole .ends brightmagenta 
     20    keyword whole .four brightmagenta 
     21    keyword whole .func brightmagenta 
     22    keyword whole .global brightmagenta 
     23    keyword whole .ic brightmagenta 
     24    keyword whole .if brightmagenta 
     25    keyword whole .include brightmagenta 
     26    keyword whole .lib brightmagenta 
     27    keyword whole .meas brightmagenta 
     28    keyword whole .model brightmagenta 
     29    keyword whole .nodeset brightmagenta 
     30    keyword whole .noise brightmagenta 
     31    keyword whole .op brightmagenta 
     32    keyword whole .options brightmagenta 
     33    keyword whole .param brightmagenta 
     34    keyword whole .plot brightmagenta 
     35    keyword whole .print brightmagenta 
     36    keyword whole .probe brightmagenta 
     37    keyword whole .pss brightmagenta 
     38    keyword whole .pz brightmagenta 
     39    keyword whole .save brightmagenta 
     40    keyword whole .sens brightmagenta 
     41    keyword whole .subckt brightmagenta 
     42    keyword whole .temp brightmagenta 
     43    keyword whole .tf brightmagenta 
     44    keyword whole .title brightmagenta 
     45    keyword whole .tran brightmagenta 
     46    keyword whole .width brightmagenta 
     47 
     48    # circuit elements 
     49    keyword wholeleft linestart A*\s brightcyan 
     50    keyword wholeleft linestart A*\t brightcyan 
     51    keyword wholeleft linestart B*\s brightcyan 
     52    keyword wholeleft linestart B*\t brightcyan 
     53    keyword wholeleft linestart C*\s brightcyan 
     54    keyword wholeleft linestart C*\t brightcyan 
     55    keyword wholeleft linestart D*\s brightcyan 
     56    keyword wholeleft linestart D*\t brightcyan 
     57    keyword wholeleft linestart E*\s brightcyan 
     58    keyword wholeleft linestart E*\t brightcyan 
     59    keyword wholeleft linestart F*\s brightcyan 
     60    keyword wholeleft linestart F*\t brightcyan 
     61    keyword wholeleft linestart G*\s brightcyan 
     62    keyword wholeleft linestart G*\t brightcyan 
     63    keyword wholeleft linestart H*\s brightcyan 
     64    keyword wholeleft linestart H*\t brightcyan 
     65    keyword wholeleft linestart I*\s brightcyan 
     66    keyword wholeleft linestart I*\t brightcyan 
     67    keyword wholeleft linestart J*\s brightcyan 
     68    keyword wholeleft linestart J*\t brightcyan 
     69    keyword wholeleft linestart K*\s brightcyan 
     70    keyword wholeleft linestart K*\t brightcyan 
     71    keyword wholeleft linestart L*\s brightcyan 
     72    keyword wholeleft linestart L*\t brightcyan 
     73    keyword wholeleft linestart M*\s brightcyan 
     74    keyword wholeleft linestart M*\t brightcyan 
     75    keyword wholeleft linestart N*\s brightcyan 
     76    keyword wholeleft linestart N*\t brightcyan 
     77    keyword wholeleft linestart O*\s brightcyan 
     78    keyword wholeleft linestart O*\t brightcyan 
     79    keyword wholeleft linestart P*\s brightcyan 
     80    keyword wholeleft linestart P*\t brightcyan 
     81    keyword wholeleft linestart Q*\s brightcyan 
     82    keyword wholeleft linestart Q*\t brightcyan 
     83    keyword wholeleft linestart R*\s brightcyan 
     84    keyword wholeleft linestart R*\t brightcyan 
     85    keyword wholeleft linestart S*\s brightcyan 
     86    keyword wholeleft linestart S*\t brightcyan 
     87    keyword wholeleft linestart T*\s brightcyan 
     88    keyword wholeleft linestart T*\t brightcyan 
     89    keyword wholeleft linestart U*\s brightcyan 
     90    keyword wholeleft linestart U*\t brightcyan 
     91    keyword wholeleft linestart V*\s brightcyan 
     92    keyword wholeleft linestart V*\t brightcyan 
     93    keyword wholeleft linestart W*\s brightcyan 
     94    keyword wholeleft linestart W*\t brightcyan 
     95    keyword wholeleft linestart X*\s brightcyan 
     96    keyword wholeleft linestart X*\t brightcyan 
     97    keyword wholeleft linestart Y*\s brightcyan 
     98    keyword wholeleft linestart Y*\t brightcyan 
     99    keyword wholeleft linestart Z*\s brightcyan 
     100    keyword wholeleft linestart Z*\t brightcyan 
     101 
     102    # model types 
     103    keyword whole R white 
     104    keyword whole C white 
     105    keyword whole L white 
     106    keyword whole SW white 
     107    keyword whole CSW white 
     108    keyword whole URC white 
     109    keyword whole LTRA white 
     110    keyword whole D white 
     111    keyword whole NPN white 
     112    keyword whole PNP white 
     113    keyword whole NJF white 
     114    keyword whole PJF white 
     115    keyword whole NMOS white 
     116    keyword whole PMOS white 
     117    keyword whole NMF white 
     118    keyword whole PMF white 
     119    keyword whole VDMOS white 
     120 
     121    # XSPICE models 
     122    keyword whole gain white 
     123    keyword whole summer white 
     124    keyword whole mult white 
     125    keyword whole divide white 
     126    keyword whole limit white 
     127    keyword whole climit white 
     128    keyword whole pwl white 
     129    keyword whole filesource white 
     130    keyword whole multi_input_pwl white 
     131    keyword whole aswitch white 
     132    keyword whole pswitch white 
     133    keyword whole zener white 
     134    keyword whole ilimit white 
     135    keyword whole hyst white 
     136    keyword whole d_dt white 
     137    keyword whole int white 
     138    keyword whole s_xfer white 
     139    keyword whole slew white 
     140    keyword whole lcouple white 
     141    keyword whole core white 
     142    keyword whole sine white 
     143    keyword whole triangle white 
     144    keyword whole square white 
     145    keyword whole oneshot white 
     146    keyword whole cmeter white 
     147    keyword whole lmeter white 
     148    keyword whole memristor white 
     149    keyword whole table2D white 
     150    keyword whole table3D white 
     151    keyword whole sidiode white 
     152    keyword whole dac_bridge white 
     153    keyword whole adc_bridge white 
     154    keyword whole d_osc white 
     155    keyword whole d_to_real white 
     156    keyword whole real_delay white 
     157    keyword whole real_gain white 
     158    keyword whole real_to_v white 
     159    keyword whole d_buffer white 
     160    keyword whole d_inverter white 
     161    keyword whole d_and white 
     162    keyword whole d_nand white 
     163    keyword whole d_or white 
     164    keyword whole d_nor white 
     165    keyword whole d_xor white 
     166    keyword whole d_xnor white 
     167    keyword whole d_tristate white 
     168    keyword whole d_pullup white 
     169    keyword whole d_pulldown white 
     170    keyword whole d_dff white 
     171    keyword whole d_jkff white 
     172    keyword whole d_tff white 
     173    keyword whole d_srff white 
     174    keyword whole d_dlatch white 
     175    keyword whole d_srlatch white 
     176    keyword whole d_state white 
     177    keyword whole d_fdiv white 
     178    keyword whole d_ram white 
     179    keyword whole d_source white 
     180    keyword whole d_lut white 
     181    keyword whole d_genlut white 
     182    keyword whole xfer white 
     183 
     184    # common model parameters 
     185    keyword whole m white 
     186 
     187context " " green 
     188 
     189context .control .endc 
     190    keyword linestart \**\n brown 
     191    keyword $*\n brown 
     192    keyword ;*\n brown 
     193    keyword //*\n brown 
     194    keyword linestart \+ red 
     195 
     196    keyword .control brightmagenta 
     197    keyword .endc brightmagenta 
     198 
     199    # commands 
     200    keyword whole ac yellow 
     201    keyword whole alias yellow 
     202    keyword whole alter yellow 
     203    keyword whole altermod yellow 
     204    keyword whole alterparam yellow 
     205    keyword whole asciiplot yellow 
     206    keyword whole aspice yellow 
     207    keyword whole bug yellow 
     208    keyword whole cd yellow 
     209    keyword whole cdump yellow 
     210    keyword whole circbyline yellow 
     211    keyword whole codemodel yellow 
     212    keyword whole compose yellow 
     213    keyword whole cutout yellow 
     214    keyword whole dc yellow 
     215    keyword whole define yellow 
     216    keyword whole deftype yellow 
     217    keyword whole delete yellow 
     218    keyword whole destroy yellow 
     219    keyword whole devhelp yellow 
     220    keyword whole diff yellow 
     221    keyword whole display yellow 
     222    keyword whole echo yellow 
     223    keyword whole edit yellow 
     224    keyword whole edisplay yellow 
     225    keyword whole eprint yellow 
     226    keyword whole eprvcd yellow 
     227    keyword whole fft yellow 
     228    keyword whole fourier yellow 
     229    keyword whole getcwd yellow 
     230    keyword whole gnuplot yellow 
     231    keyword whole hardcopy yellow 
     232    keyword whole help yellow 
     233    keyword whole history yellow 
     234    keyword whole inventory yellow 
     235    keyword whole iplot yellow 
     236    keyword whole jobs yellow 
     237    keyword whole let yellow 
     238    keyword whole linearize yellow 
     239    keyword whole listing yellow 
     240    keyword whole load yellow 
     241    keyword whole mc_source yellow 
     242    keyword whole meas yellow 
     243    keyword whole mdump yellow 
     244    keyword whole mrdump yellow 
     245    keyword whole noise yellow 
     246    keyword whole op yellow 
     247    keyword whole option yellow 
     248    keyword whole plot yellow 
     249    # FIXME: other pre_* keywords? 
     250    keyword whole pre_codemodel yellow 
     251    keyword whole pre_set yellow 
     252    keyword whole pre_unset yellow 
     253    keyword whole print yellow 
     254    keyword whole psd yellow 
     255    keyword whole quit yellow 
     256    keyword whole rehash yellow 
     257    keyword whole remcirc yellow 
     258    keyword whole remzerovec yellow 
     259    keyword whole reset yellow 
     260    keyword whole reshape yellow 
     261    keyword whole resume yellow 
     262    keyword whole rspice yellow 
     263    keyword whole run yellow 
     264    keyword whole rusage yellow 
     265    keyword whole save yellow 
     266    keyword whole sens yellow 
     267    keyword whole set yellow 
     268    keyword whole setcs yellow 
     269    keyword whole setcirc yellow 
     270    keyword whole setplot yellow 
     271    keyword whole setscale yellow 
     272    keyword whole setseed yellow 
     273    keyword whole settype yellow 
     274    keyword whole shell yellow 
     275    keyword whole shift yellow 
     276    keyword whole show yellow 
     277    keyword whole showmod yellow 
     278    keyword whole snload yellow 
     279    keyword whole snsave yellow 
     280    keyword whole source yellow 
     281    keyword whole spec yellow 
     282    keyword whole status yellow 
     283    keyword whole step yellow 
     284    keyword whole stop yellow 
     285    keyword whole strcmp yellow 
     286    keyword whole sysinfo yellow 
     287    keyword whole tf yellow 
     288    keyword whole trace yellow 
     289    keyword whole tran yellow 
     290    keyword whole transpose yellow 
     291    keyword whole unalias yellow 
     292    keyword whole undefine yellow 
     293    keyword whole unlet yellow 
     294    keyword whole unset yellow 
     295    keyword whole version yellow 
     296    keyword whole where yellow 
     297    keyword whole wrdata yellow 
     298    keyword whole write yellow 
     299    keyword whole wrs2p yellow 
     300 
     301    # control structures 
     302    keyword whole break brightred 
     303    keyword whole continue brightred 
     304    keyword whole dowhile brightred 
     305    keyword whole else brightred 
     306    keyword whole end brightred 
     307    keyword whole foreach brightred 
     308    keyword whole goto brightred 
     309    keyword whole if brightred 
     310    keyword whole label brightred 
     311    keyword whole repeat brightred 
     312    keyword whole then brightred 
     313    keyword whole while brightred 
     314 
     315    # internally predefined variables 
     316    keyword whole appendwrite white 
     317    keyword whole askquit white 
     318    keyword whole batchmode white 
     319    # FIXME: N between 0 and 22 
     320    keyword wholeleft color*\s white 
     321    keyword wholeleft color*\t white 
     322    keyword whole controlswait white 
     323    keyword whole cpdebug white 
     324    keyword whole curplot white 
     325    keyword whole curplotdate white 
     326    keyword whole curplotname white 
     327    keyword whole curplottitle white 
     328    keyword whole debug white 
     329    keyword whole device white 
     330    keyword whole diff_abstol white 
     331    keyword whole diff_reltol white 
     332    keyword whole diff_vntol white 
     333    keyword whole echo white 
     334    keyword whole editor white 
     335    keyword whole filetype white 
     336    keyword whole fourgridsize white 
     337    keyword whole gridsize white 
     338    keyword whole gridstyle white 
     339    keyword whole hcopydev white 
     340    keyword whole hcopyfont white 
     341    keyword whole hcopyfontsize white 
     342    keyword whole hcopydevtype white 
     343    keyword whole hcopyscale white 
     344    keyword whole hcopywidth white 
     345    keyword whole hcopyheight white 
     346    keyword whole hcopypscolor white 
     347    keyword whole hcopypstxcolor white 
     348    keyword whole height white 
     349    keyword whole history white 
     350    keyword whole inputdir white 
     351    keyword whole interactive white 
     352    keyword whole lprplot5 white 
     353    keyword whole lprps white 
     354    keyword whole modelcard white 
     355    keyword whole moremode white 
     356    keyword whole nfreqs white 
     357    keyword whole ngbehavior white 
     358    keyword whole ngdebug white 
     359    keyword whole ng_nomodcheck white 
     360    keyword whole no_auto_gnd white 
     361    keyword whole nobjthack white 
     362    keyword whole nobreak white 
     363    keyword whole noasciiplotvalue white 
     364    keyword whole noclobber white 
     365    keyword whole noglob white 
     366    keyword whole nolegend white 
     367    keyword whole nonomatch white 
     368    keyword whole noparse white 
     369    keyword whole noprintscale white 
     370    keyword whole nosavecurrents white 
     371    keyword whole nosort white 
     372    keyword whole nostepsizelimit white 
     373    keyword whole nosubckt white 
     374    keyword whole notrnoise white 
     375    keyword whole nounits white 
     376    keyword whole numdgt white 
     377    keyword whole num_threads white 
     378    keyword whole oscompiled white 
     379    keyword whole plainlet white 
     380    keyword whole plainplot white 
     381    keyword whole plainwrite white 
     382    keyword whole plainstyle white 
     383    keyword whole pointchars white 
     384    keyword whole polydegree white 
     385    keyword whole polysteps white 
     386    keyword whole program white 
     387    keyword whole prompt white 
     388    keyword whole rawfile white 
     389    keyword whole remote_shell white 
     390    keyword whole renumber white 
     391    keyword whole rndseed white 
     392    keyword whole rhost white 
     393    keyword whole rprogram white 
     394    keyword whole sharedmode white 
     395    keyword whole sim_status white 
     396    keyword whole sourcepath white 
     397    keyword whole specwindow white 
     398    keyword whole specwindoworder white 
     399    keyword whole spicepath white 
     400    keyword whole sqrnoise white 
     401    keyword whole strict_errorhandling white 
     402    keyword whole subend white 
     403    keyword whole subinvoke white 
     404    keyword whole substart white 
     405    keyword whole term white 
     406    keyword whole ticchar white 
     407    keyword whole ticmarks white 
     408    keyword whole ticlist white 
     409    keyword whole units white 
     410    keyword whole unixcom white 
     411    keyword whole wfont white 
     412    keyword whole wfont_size white 
     413    keyword whole width white 
     414    keyword whole win_console white 
     415    keyword whole wr_singlescale white 
     416    keyword whole wr_vecnames white 
     417    keyword whole x11lineararcs white 
     418    keyword whole xbrushwidth white 
     419    keyword whole xgridwidth white 
     420    keyword whole xfont white 
     421    keyword whole xtrtol white