3.4.7:
- Resolved_net(): resolve multiple levels of port-by-attribute propagation
- Make xschem build with configure option --CFLAGS="-std=c23" (prepare for gcc-15 issues)
- `/` command (show bindkeys) will use a toplevel window instead of fullscreen
- Reduce size of ps exports by avoiding redundant set_ps_colors() calls
- Honor `bus` attribute on lines / wires / polygons in svg and pdf exports
- `xschem raw clear` command: allow to specify a number `n`; delete the`n-th` raw file
- Add ngspice_verilog_cosim examples
- Add bindkeys_cheatsheet.sch, moved shift-J to Ctrl-p (xplot creation)
- Allow to change tcl flag `lvs_netlist` at runtime (just before netlist generation),
  not only at xschem startup
- Add new_file_browser_* variables in xschemrc to allow new symbol browser to be used also to load files
- Add toolbar_icon_zoom and ctxmenu_icon_zoom xschemrc (integer) variables to enlarge icons on XUHD displays
- Add menu option Simulation->LVS->Upper case .SUBCKT and .ENDS
- Allow multi-selections when loading a file; limit max line width in change_linewidth() to
  avoid strange artifacts at extreme zoom-ins
- Add command `xschem raw rename old_node new_node`
- New tcl variable grid_point_size to set size of grid points (for 4K+ displays)
- evaluate infix expressions with expr(...) in attributes
- Descend_schematic() return value indicates if descended into a valid schematic (1) or empty one (0)
- Proc editdata: added Copy (to Clipboard) button
- Differential scope2.sym, current mwasure scope_ammeter.sym
- Embed graph inside scope symbol
- Initial commit to add scope.sym symbol
- Lock attribute extended to all objects
- Floater objects: add command ctrl-u to unselect attached (so some instance with the attach=.. attribute)
  objects, that is objects (not element instances) with a non empty name=... atttribute.
  Extend upcate references of attached floaters to change instance name property and
  `xschem setprop instance name` command
- Added attribute `attach="name1 name2 ..."` for components to designate other objects to be
  selected with it. Designated objects must have a matching `name=name1` attribute.
  This allows to create object groups
- Escape pressed while drawing polygon will cancel last segment instead of the whole poly
- Ellipses rendered in ps/pdf export.
- Lock graphs only if they have the same simulation type loaded. So zooming/panning a tran
  plot will not affect dc or ac plots.
- `AUTO SET` button in graph edit dialog box to automatically assign increasing colors to displayed waves
- Added `d` to unselect object under the mouse, `Shift-D` to unselect by area, both work with or
  without infix_interface, moved delete files to `Ctrl-d`, update keybinding docs
- Add eval_expr.y for evaluation of generic math expressions in infix notation (expr(...) in attributes)
- Added command `xschem set crosshair_layer` to change  layer used for crosshair drawing
- If big_grid_points is not set draw always thin axes and mouse crosshairs; dashed axes
- `xschem go_back 0` allows to go up in hierarchy *NOT* saving a modified schematic
- Add new command `xschem get modified` (returns 1 if circuit needs to be saved)

3.4.6:
- Fix spurious change in tab name when netlisting if Trim Wires option enabled
- Xschem raw values now returns full precision, no more 8 digit rounding, as this is
  undesirable for transient noise sims
- bus_tap.sym: show annotated voltage (remove hidden text attribute)
- Add verilator in addition to icarus verilog simulator
- "xschem annotate_op" command only deletes loaded OP raw file (if any),
  does no more delete all loaded raw files.
- HistogramH and HistogramV graph modes (plot graph bars)
- Allow wave expressions with spaces on a single line without quotes ("....").
  Quotes can be used for wave expression on multiple lines.
  Side effect: multiple nodes can no more be specified on a single line separated with spaces,
  use newlines.
- If text_replace_selection is enabled replace selection when pasting also in entry
  widgets as done with text widgets
- Enable Undo in text widgets. 
- Screen grab: if draw crosshair is enabled and a screen grab is done show default mouse pointer
- Graphs: always plot one point before x1 and one point after x2 of simulation waves so they will
  extend to full graph area even if there are few simulation points.
- Add graph_use_ctrl_key variable (default 0) to force holding Control key to interact with graphs.
  This avoid graphs "stealing" events that are expected to work on the schematic
- Allow full specification of file selector window geometry and pane sizes. examples in xschemrc
- Fully remember panedwindow (vertical and horizontal) sash positions in load_file_dialog
- Xschem annotate_op command: if no OP analysis is found in raw file try to load a DC
  sweep and use first point for schematic annotation. This is done because Xyce stores
  OP data as a 1-point DC sweep
- Added `legend` checkbutton in graph dialog box to switch off signal legend in analog graph
- Add `constants` plot type in graph sim type drop down menu
- Fix <insert> and <shift>-<insert> to work on Windows
- Remove check for libreadline (not used)
- Insert symbols should tolerate paths in XSCHEM_LIBRARY_PATH ending with `/`
- Select rectangles (click and mouse drag to select) are unsnapped.
  Much easier to select small objects
- Add ability to read ASCII raw files
- "xschem change_sch_path" command for changing the current path we are descended in.
- update svgdraw and psprint to recognize svg embedded images. svgdraw exports it
  as embedded svg
- When inserting a svg image automatically set the filter attribute to rasterize
  svg to png (if tcl variable svg_to_png is set in xschemrc), "rsvg-convert" or
  "inkscape" or imagemagick "convert" can be used. see template xschemrc in src/
- When importing svg images with a svg->png filter (like rsvg-convert) keep source
  svg data in the image_data attribute instead of the rasterized data.
  This will make these images scalable and schematics will be smaller (if using
  small vector SVGs) when inserting a svg image automatically set the filter attribute
  to rasterize svg to png (if tcl variable svg_to_png is set in xschemrc),
  "rsvg-convert" or "inkscape" or imagemagick "convert" can be used. see template
  xschemrc in src/
- Add ic.sym for setting initial condition on nets
- Add current annotators in cccs and vccs symbols
- Fix crash if multiple raw files are loaded and last one fails loading due to
  corrupt raw file
- Added operator "cph()" to transform discontinuous phase ph(xxx) in AC analyses to
  continuous phase, like ngspice cph() function.
  Usage: instead of ph(out) use "ph(out) cph()"
- Add "Properties" menu for "Change selected object insertion order" (Shift-S)
- Avoid triggering tclcommand -> launcher() when dragging mouse with ctrl key
- switch_ngspice.sym: add "device_model" attribute in template string, so a
  template model is given when placing the symbol
  around objects with such attribute
- svgdraw and psprint: draw text after images as done in screen draw. Correct postscript / pdf
  image zoom factor to match scaling with other xschem elements.
- Do not reset xctx->netlist_name after doing `Netlist` from gui (xschem netlist -erc)
- process tcleval(....) (if present) in symbol `name` argument
- Let symbol name entry box in component edit property dialog box expand in X direction
  if dialog box is enlarged
- Replace "UNDEF" with "-" in backannotated nodes that have no value in raw file.
- Draw node names in graphs even if specified file / analysis (graph rawfile or sim_type
  attributes) is not loaded
- If autoload is set in graph and a filename is given (rawfile graph attr) load raw file immediately
   when drawing graph. Don`t wait for user to load an intiial raw file to trigger auto loading
- Double clicking in the center of a graph will now bring up the graph edit attributes
  dialog box even if no raw file is loaded
- Graphs will autoload (if autoload checked) raw data even if no raw file is specified in
  graph dialog box (use current loaded raw file, usually with a different analysis)
- Save 4 vars ( node, ph(node), re(node, im(node) ) instead of 2 ( node, ph(node )for ac plots
- Add "private cursor" check box in graph dialog box. This allow the related graph to have
  separate "a" and "b" cursors. These cursor positions are saved with the schematic and
  are thus persistent when reloading the schematic.
- Fix a bug in preview symbol displaying when inserting components. Toplevel .load widget was
  destroyed before cleaning preview data in preview_window(), so after some insertion preview
  was no more displayed.
- Port ordering for a schematic .subckt line will always be deduced from the symbol if it exists,
  even if the symbol type is not "subcircuit" (so it will be used for also "primitive" type symbols).
- Add tcl xschemrc variable "select_touch" that enables selecting objects touched by the
  selection rectangle if dragging to the left. Previously this behavior was enabled by
  "incremental_select" that shows selected elements while dragging.
  These two optional behaviors are now enabled/disabled by separate variables 
- Issue a netlist error (and report message) if instances with pins have *all* pins disconnected.
  This is in 99.999% of the cases an error.
- Added tcl variable top_is_subckt and related Simulation->LVS menu, that keeps top level wrapped
  inside a .subckt / .ends, as lvs_netlist does. However top_is_subckt does only that and will not
  enable lvs_format to differentiate device lines in netlist (usually used for LVS comparison).
- Add autoload checkbutton in graph properties to automatically load or not
  custom graph-specified raw files
- Allow `global` atttributes on instances of gnd.sym and vdd.sym to override symbol `global`
  setting. This allows also to set global=1 to net labels (lab_net.sym, lab_pin.sym)
  to make the net global.
- ps/pdf export: use highlight colors on instances / wires that are highlighted
- Add attribute text_layer_n=lay, where n = text object inside symbol instance to change its layer
- Enhance spice_sym_def used in instances (with schematic=...) by substituting @param
  with values defined in instance if any (param=xxx)
- Allow @symname, @symref, @param (param defined in symbol template string) translation in
  instance or symbol spice_sym_def attributes
- A `.` in search path is always assumed to be [pwd] and not the directory of the currently
  opened schematic. This will hopefully fix an endless list of user complains when using
  symbols from dirs not listed in XSCHEM_LIBRARY_PATH.
- sim_pinnumber attribute on schematic pins will be used for top level .subckt pin
  ordering if no corresponding symbol exists when creating a spice netlist

3.4.5:
- If a full path is given with -N set netlist file name as well as destination path
- Handle TABs in draw_string() (also ps and svg draw_string()),
  tcl var tabstop (default = 8) sets the tab positions.
- Added command `xschem cursor 1|0 1|0` to enable or disable cursors via cmdline
- Add command `xschem swap_cursors`
- If top level schematic has an associated symbol (.sym) file ensure their ports match, otherwise
  issue an error. if netlisting fails return non zero exit code if netlisting from command line
- Add @#pin:spice_get_voltage attribute for pin texts that displays voltage of net attached to pin.
  Remove net_name=... attributes from symbols and instance global attributes since it is no more used.
  set default value for show_pin_net_names to 1.
- xschem image rectangles: allow to fetch urls using filter="tcleval(wget --quiet http://.... -O -)" and image=""
- xschem wave processor: added <, >, <=, >=, ==, != and contitional ? (3 operands) operator
- Added drc_check() function, that evaluates tcl scripts contained in symbol `drc` attribute.
  Used for checking allowed dimensions, mostly
- Add ellipses (rectangles with attr ellipse=1)
- Add simulation->graph menu for auto_hilight_graph_nodes
- Add `Tools->Grab screen area` function (unix only)
- fill=solid in addition to fill=1 (stippled fill) or fill=0 (no fill) for rectangles,
  polygon/beziers and circles
- Added dark_gui_colorscheme (default: 0) for dark widget colorscheme configuration. 
- Added intuitive_interface xschemrc and menu option: click and drag to quickly
  Move objects without keyboard commands
- Bezier shapes can be drawn (polygon with attribute `bezier=1`)
- Add tcl tabulate procedure for pretty encapsulating tabular text into a nice ascii table frame.
- Add `xschem raw del node` command
- Add option `keep_symbols in xschemrc to avoid purging symbols when netlisting /descending hierarchy.
- Add functions atan, asin,acos, cosh, sinh, atanh, acosh, asinh, idx  in wave processor
- Added command `xschem raw new name type sweepvar start end step` that creates an
  in-memory plot (like a loaded raw file) with only the sweep variable
- Extend command `xschem raw_query add [expr]` for fast (C-speed) expression calculation
- Add command `xschem raw_query add <node>` to add a vector <node> with all zeros to the
  loaded raw file. This vector can then populated with programmatic values using  
 `xschem raw_query set <node> point value` loop
- Add command `xschem raw table_read table_file` to read an ascii table file without closing
  other loaded raw files
- Add xschem list_nets command
- Preview window in file open dialog box is x/y resizable
- Parametric models in subcircuits (model=@mod in instances, mod=xxx in parent instantiation)
- Instance based schematic selection: if instance specified schematic=... not existing
  Use base schematic (symbolname.sch)
- Add verilog_extra_dir symbol attribute to allow specify "ports by attribute" directions:
  verilog_extra_dir="VCC=input GND=input" verilog_extra="VCC GND" extra="VCC GND" ....
instead of the default ~/.xschem/simulations. Changed background color of menu radiobuttons for clarity.
- Allow parametric models in subcircuits. Symbol inv.sym contains template="... modp=cmos_p_10 ...",
  pmos instance in inv.sch contains model=@modp, instance format string contains 
  format="@name @pinlist @model w=@w l=@l, result is: "m2 y a VCCPIN VCCPIN cmos_p_10 w=wp l=lp"
- pass instance `device_models=...` attribute through translate() so @vars are resolved
- added `xschem fill_reset` command to reset fill patterns defined via tcl array pixdata(n)
- add `hide=instance` attribute for in-symbol text objects (in addition to hide=true or hide=false).
  If set the text is in visible in instantiated symbols, but is visible if descending into the symbol
- When doing spice netlist, if a symbol has the spice_sym_def attribute set and is using @pinlist
  in format string for port order, get the port order from the subckt given in spice_sym_def,
  either directly or through a .include line
- xschem raw_read: allow specifying t1 and t2 to load only a portion of simulation file
- Implement vertical flip (shift-V) and vertical flip in place (alt-v)
- Handle xyce y-devices in spice netlists
- Setting line width in View menu will automatcally disable change line width with zoom
- If selection is present when exporting pdf assume it is a bboxed pdf
- Add xschemrc option ps_page_title (default: enabled, 1) to set or hide page title in ps/pdf exports,
  more precise graph exports in svg and ps/pdf
- Add `xschem set cursor[12]_x` commands for moving graph cursors
- Add `xschem set hilight_color` command
- Allow instance attribute `text_size_n=s` (where s is a double and n is an integer) to set
  symbol text item `n` to size `s`
- When doing spice netlisting if top level has a symbol (and the symbol has i/o ports) use the symbol
  for printing the top level subckt port list. This ensures same port ordering when netlisting 
  a testbench containing a component and netlisting the component itself.
- Add tanh(), min() and max() clipping functions in wave calculator
- Change Waves button to menu entry with various options (annotate OP, load tran, dc, ...)
- Add make_sym_from_spice.awk, cut down from make_sch_from_spice.awk
- Add command `xschem setprop text n txt_ptr value` to change a text object text field
- Add tabs bar context menu
- Add option --pipe (alias for -r / --no_readline)
- Dragging to the right a selection rectangle will select objects fully enclosed.
  Dragging to the left will select all objects intersected by the select rectangle.
- Add context menu entries for rotate and flip selection,
- Add basic sub-process control in Simulation menu.
- add @symref attribute that resolves to the full symbol reference as specified
  in instance: example: "sky130_fd_pr/pfet_01v8_lvt.sym"
- Add the ability to load multiple raw files with different analyses in
  a single schematic ( extra_rawfile() ).
  Allow loading more and different analyses from the same raw file.
- Transform multiple saved OP sims into a dc sweep.
- Do interpolation when annotating "b" cursor values in schematic,
  as done with measurements with "a" cursor.
- Cursor `a` measurements in graph match the %n dataset specified on nodes
  if any (or default to dataset 0)
- Update live backannotation if "a" and "b" cursors are swapped, 
- syntax node%n is now allowed to plot only dataset "n" of 
  the node.
- add `lock` attribute for rectangles: work the same as for instances
  (can only double click to reset attributes, not selectable until lock reset to 0). 
- Add commands "xschem selected_set rect" and "xschem select_inside x1 y1 x2 y2
- Add rotate, flip menu entries in the Edit menu

3.4.4:
- First selected instance is now always the master (instead of the first in the
  xschem array order) when doing an edit attribute on a group of selected elements
- vsource.sym and ammeter.sym: add "savecurrent=1|0|true|false" attribute do decide if
  a .save I(...) is to be printed in netlist.
  Default is 1 for ammeter.sym and 0 for vsource.sym.
- Add "deltax deltay rot flip" optional parameters for xschem "copy_objects" command
  to make copy operation scriptable (lot more efficient than using clipboard)
- Added commands xschem get schprop|schvhdprop|schverilogprop|schtedaxprop|schsymbolprop,
  "xschem create_text" renamed to "xschem text" for syntax consistency
- Extend "xschem rect" and "xschem line" commands, add "xschem get rects n"
  and "xschem get lines n"
- Add crosshair_layer tcl variable, so user can change crosshair layer.
  Crosshair is deleted on LeaveNotify events.
- Added xschem set [schsymbolprop|schprop|schverilogprop|schvhdlprop|schtedaxprop] <value>
  commands for setting global schematic/symbol attributes
- Removed tcl variable connect_by_kissing (to many options is a mess)
- Add tcl variable "unselect_partial_sel_wires" and related options menu entry to unselect
  partially selected wires attached to component pins after a stretch move command
- If $USER_CONF_DIR (~/.xschem) is not existing create it and also place
  the template xschemrc into it
- Add tcl variable no_ask_save: if set to 1 xschem will not ask to save modified schematics
- control-mouse drag select will negate the setting of enable_stretch tcl variable
  so drag and control-drag can be swapped vith Options->enable stretch
- Add draw_crosshair setting in xschemrc: draw a crosshair at mouse coordinates
- Commands for breaking wires also for oblique lines, with options to snap the break point
  or keep it as is
- Add fix_broken_tiled_fill tcl variable: 
  if defined work around some graphic adapters/driver implemtations that dont honor the
  X11 specifications for drawing with a pixmap tile fill pattern
- Place_symbol(): make it smarter when dealing with generators.
  add parenthesis () after file name and better handle tcleval(...) given in file selector
- Improve connect by kissing: now 3 move operations are present:
   1) just move selection,
   2) move adding wires to connected pins/wire endpoints,
   3) move by stretching wires attached to pins/endpoints to follow moving objects
- Add "xschem rotate_in_place" command
- Add tcl command "xschem change_elem_order n"
  Add optional x0 and y0 coordinates as additional parameters to "xschem flip
" and "xschem rotate" commands, add command "move_instance inst x y rot flip"
- xschem select: extend command to allow selecting rectangles, lines, polygons, arcs. returns
  1 if something selected, 0 otherwise
- "xschem connected_nets" command now works for any selected instance, not only labels/probes/pins.
  Argument can be 0, 1, 2 (2-->select only wire segments drectly attached to selected net/instance)
- Add commands "xschem get wires", "xschem getprop wire n attr", "xschem touch x1 y1 x2 y2 x0 y0",
  "xschem wire_coord n"
- Add command "xschem select_dangling_nets" that selects all labels/wires that are not connected
  to any non-label/non-probe components
- xschem tcp connections: print open/close/in/out data on console only if in tcl debug mode
- Improve send nets to graph. do not refuse to send top level port signals, allow to send bussed
  signals even if graphdialog widget is not shown (proc graph_add_nodes_from_list)
- hilight_parent_pins(): if two or more child pins are attached to the same parent net hilighting
  one of these child pins will not propagate to parent if the unhilight child pin comes after the
  hilight pin.
  This is now fixed. Going up in hierarchy will never clear parent hilights.
  It is recommended to clear all probes before tracking child pin propagation with hilights upstream.
- xschem switch command: return success also if command given (with right filename/winpath) when no
  additional windows/tabs are present
- xschem switch command return exit status depending if switch context was successfull or not
- export ps/pdf, png, svg functions now use custom file chooser widget (as Save As does)
  to enable creation of new folders
- Report in-hierarchy overlapped symbols when netlisting
- Better ERC messaging in case of errors (shorts, pins with missing attrs), ...)
- Fix wrong netlist filename if invoking netlist from GUI
- Do not show ERC info window if netlisting invoked via CLI; global variable
  show_infowindow_after_netlist can now take 3 values: always, onerror, never, to decide when showing
  the ERC info window after netlisting. Old values (1, 0) still accepted as aliases for always
  and onerror
- Add optional "-messages" in "xschem netlist" command to return ERC messages instead of
  fail(1)/good(0) code
- Prefix ERC infowindow messages with Error: or Warning: or Info:

3.4.3:
- revert format of [xschem pinlist <instance> <attr>] to old (3.1.0) format: 
  { {0} {PLUS} } { {1} {OUT} } { {2} {MINUS} } 
  instead of:
  {PLUS} {OUT} {MINUS}
- add postinit_commands description in distribution provided xschemrc
- add "postinit_commands" variable that can be set in xschemrc file, this variable may
  contain commands that will be executed after completing startup.
  Example: set postinit_commands {xschem set format xyce_format}
- make_symbol: ask before overwriting an existing symbol file.
- Correctly detect if DISPLAY env var is set but specified display is not existing or
  xserver not running, and start in text mode
- remove reference to cadsnap_default in menu widget "View->Set snap value"
- change "[xschem get cadsnap]" to use  TCL's global variable cadsnap
- remove warning message if bespice_listen_port is not set (not necessary, scares new users)
- allow expansion of labels like aaa[3:2]_qq --> aaa[3]_qq,aaa[2]_qq andi
  aaa[3..2]_qq --> aaa3_qq,aaa2_qq

3.4.2:
- Merged Gerard upates for Xschem <--> BeSpice TCP communication
- added tcl variable text_replace_selection (default: enabled (1) ) to automatically
  replace selected text in text widgets when pasting from clipboard
- case insensitive compare in boolean attributes (attr=false, attr=True, attr=FALSE, attr=1)
- allow "1" / "0" in addition to "true" / "false" in all boolean attributes
- make the "X" window button close the search dialog box, as Cancel (and Escape key) does
- add "xschem print pdf_full" and "xschem print ps_full" commands to print full view properly
  fitting paper size, regardless of xschem window size, some fixes in circle postscript
  drawing (set newpath) and rectangle clipping. Add menu command "PDF/PS export full"
- add case insensitive matching in xschem search function
- add xschemrc variable "ps_paper_size" to specify custom paper sizes in ps/pdf exports
- explicitly clear instance flag bits when allocating new instance array data to avoid random
  data in bit 8 (IGNORE_INST).
  This does not cause any problem but random data in log files, causing false positives
  in automated regression tests
- fix crash on windows if a new tab is opened and immediately closed (incorrect call of draw()
  after clearing pixmap)
- fix regression(repo.hu: r2353, github: 0bb4c9f) : "xschem instance" command not setting
  modified flag on schematic, so following xschem save doing nothing.
- add xschem command `xschem instance_coord [instance]`: returns placement coords,
   rotation, flip of selected or specified instance
- initialize tcl_files to empty in xschemrc to avoid side effects if
   reloading another xschemrc
- added install_pdf make target to create pdf doc from html man pages
- "xschem netlist" command accepts an optional filename argument
- do not create nets for devices that have *_ignore=true attribute set,
  this generates false warnings about undriven nets.
- do not use tclreadline if tcl variable tcl_interactive is 0

3.4.1:
- Add more info in xschem_man about remote tcp connection 
- Add mouse_bindings.tcl, courtesy Paul Bodenstab
- Make the "xschem_quit" command work (close current window / tab) also if
  xschem started in -x (no graphics) mode
- Changed tcl procedure `setup_tcp_xschem` to allow setting a different port number for
  further tcp commuication (and freeing the original port number)
- Enable xschem to load multiple files even if started with "-x" (only CLI mode)
- Add "show_infowindow_after_netlist" tcl variable (default = 0) that can be set in
  xschemrc to always show erc window after netlist even without or no critical errors
- Added missing images for bus tap html manpages
- If a file is given on cmdline without any path qualifier (/.../, ./, ~/, ...) look into search paths.
- Apply center full zoom in all zoom full commands if tcl variable zoom_full_center is set
- Modify xschemrc file to avoid side effects if sourced (intentionally or by mistake) multiple times.
- Show red dot when cutting a wire with new alt-right button click on a wire.
  Added also menu command in Tools
- Added command Alt-RightButton to cut a wire at mouse position.
- Do a prepare_netlist_structs(0) at end of break_wires_at_pins() for connectivity consistency
- Extended `Shift-M` command to selected nets (nets attached to them will stretch)
- Text elements with attribute name=xxx or floater=xxx will go through a tcl
  substitution (instead of the translate(...) function if the referenced xxx
  instance does not exist.
- floater=instname can now be given instead of name=instname (they are equivalent)
- Add new command `Shift-M`, move selected instances adding wires when separating
  overlapping instance pins (Connect by kissing)
- Break_wires_at_pins(): delete piece of wires connected to symbol pins that extend
  beyond the pin into the symbol
- Add command "Tools -> Remove wires running throuh selected inst. pins"
- Quit_xschem command
- Added commands `xschem switch [win_path|schname]`, `xschem destroy_all [force]`,
  added `[force]` option to xschem exit
- Changed defaults in xschem: now toolbar and tabbed interface (more robust than multi-window)
  is enabled by default, doc updates, improved fix_symbols for setting/removing path compoents
  from symbol references, now uses low-level xschem reset_symbol (faster)
- Add procedure `fix_symbols <n>`to set `n` last directory components to all symbols in current design
- Added attributes spice_ignore=short, verilog_ignore=short, .... that will transform the
  instance into a short in the current netlisting mode, shorting all pins to the same net.
  Works similarly as lvs_ignore=short, but does not need lvs_ignore global setting
- Fix compare schematics if no file for schematic to compare with is given.
  In this case compare current schematic with saved version.
  Also issue a warning if swapping compare schematics if comparing schematic with disk version of itself.
- Added global tcl variable `lvs_ignore` that can be used to enable instance or symbol
  attributes `lvs_ignore=open` or `lvs_ignore=short` while netlisting, added `test_lvs_ignore.sch` example
- Disable displaying backannotation data if `b` cursor is hidden or `Simulation->Live annotation
  with b cursor` is disabled.
  Use resolved_net() in translate() when displaying @spice_get_voltage so it will work on sub block ports
- Make `xschem exit` (ctrl-w, close window) work in multi-window mode exactly as in tabbed
  interface, allowing to close the root window (will be swapped with subwindow and deleted)
- Save (ctrl-s function) normally does not save if no changes are made.
  However if file timestamp has changed since opening (by someone else) prompt user to
  decide what to do (save or not)
- Make ctrl-ArrowLeft/ctrl-ArrowRight work again (move to next/prev tab)
- Removed File menu commands `Empty schematic in new window` and `Empty symbol
  in new window` since these just create another xschem process. Added `File->Start
  new xschem process`. `xschem new_window` and `xschem new_symbol_window` commands removed,
  added `xschem new_process
- Place polygon bind key is now `p`, ctrl-w is now `Close current schematic`, while ctrl-q is
  `Quit xschem`. Reorganized File menu, added more orthogonal `Create new schematic/tab`
  removed some largely unused entries. Ctrl-w does not close the last window, just leaves it blank.
  Use ctrl-q to close xschem
- Removed some direct exit() calls in editprop.c
- Cleaner exit if xschem -v is given
- Cleanup exit procedures: tcl exit command will cleanly delete additional tabs/windows
  data structures before closing
- Add command xschem tab_list, returns window pathname and associated filename loaded
- @spice_get_voltage: do not process if net is a multiple bit bundle
- xschem resolved_net command: add [net] parameter
- Fix long standing bug: redundant grammar rule in expandlabel.y causing it to fail
  recognizing nodes like GND*16
- Add more ".." bus notations: XX[4,2,8..1..3,12,23] and others. 
- Implementation of portmap feature: from sub-schematics resolve hierarchic name of schematic
  nets connected to I/O pins (go to the upper level recursively until resolved)
- Enable rainbow colored graphs also for double dc sweeps
- Update n and p jfets, added pjfet simulation
- Allow @#n:pin_attr or @#pin_name:pin_attr in verilog and vhdl format string (print_vhdl_primitive,
  print_verilog_primitive), in addition to @#n (convergence to translate()
- Improved "xschem display_hilights [nets|instances]" that displays highlight nets or instaces or
  both,with full hierarchy path, not including uninteresting net/pin/net_show elements.
- Bus_tap.sym symbol for true bus tap (slice some bits out of a bigger bus).

3.4.0:
- Added xmag and ymag entry boxes in grapg dialog box to allow user change of x/y label text sizes
- Replace @symname in instance "schematic" attribute with basename of symbol
  (without extension and directories)
- Added "xschem reset_flags" command to update and sync cached attributes of symbols and instances
- Better handling of web_urls: if already cached do not download again
- If multiple objects are selected (instances, texts, wires, ...) and there is an instance in
  the set edit instance attributes
- Text floaters (name=xxx atttribute (xxx=instname) set on text to display instance attributes)
- Hide_texts=true attribute added on instance will avoid the display of all symbol texts
  (will be probably used when using floater symbol texts)
- Disabled elements are displayed in grey and dashed. Properties->toggle *_ignore function
- Symbol_ignore=true attribute can be set on all symbol elements (text, lines, rectangles, arcs, polys, 
  instances, nets) such that these marked elements are not displayed when symbol is instantiated.
- Symbol generators may now take attributes like: "mosgen( @model )", with @model expanded to
  instance (or symbol template) value. update_symbol() updated to reflect this change.
- When changing a symbol on an instance do not force change prefix (1st name char) if old and
  new symbol have same prefix
- Persistent load file dialog (Shift-Insert) now correctly handles generator script selection
  (do nothing until user adds () or (param1,param2,...) to generator name).
- Schematic and symbol generators "symbol_ref(param1,param2,...)".
- Instance based schematic selection (via instance "schematic" attribute)
- Draw_graph_points() split big XDrawLines requests into smaller chunks to handle raw files
  with > 4M points
- Enable spice_sym_def, verilog_sym_def, vhdl_sym_def on instances in addition as globally
  on symbols, for instance based specific implementations.
  These attributes must be paired with an instance "schematic=..." attribute that sets
  the subcircuit name of the alternate implementation. docs updated.
- Implement xschem sch_pinlist command, improve xschem pinlist inst [attr]
- Xschem tcp server: drop connection at end of response to make client reads easier (eof detection)
- Add xschem instance_list command, updated docs
- Add tcl procedures documentation in developer_info.html
- Handle viewing / netlisting remote (http[s]) hierarchic objects
- If a custom format netlist is given (for example lvs_netlist) and lvs_netlist attribute in
  instance or symbol is existing but empty device will not be netlisted
- Instance attribute "hide=true" will make the instance display as a bounding box only
- Add command xschem logic_set_net <net_name> <value> [ntimes] to set a specific net
  instead of selected nets
- Add xschemrc variable zoom_full_center, if set to 1 full zoom will center the schematic instead
  of anchoring to lower-left drawing area corner.
- Add Simulation->Monitor current simulation to display stdout of running simulation
  (to get simulation status / ETA and the like... )
- Added execute(cmd,last), execute(data,last), execute(status,last) for post-mortem
  inspection of last simulation
- Documentation about xschem commands in developer_info.html
- Add table_read() function to read simulation data in ascii tabular form
- Rename top_subckt to lvs_netlist (more appropriate), better tcp interface (redirect stdout
  to socket in addition to command return value)
- Added "s" bindkey in graphs to swap "a" and "b" cursors
- Added command xschem hilight_instname
- Refactor some code (use set_text_flags() to avoid repetitive code),
  add xschem setprop text and xschem getprop text commands to set/get text attributes
- Ascii85 postscript encoding by Raphael Cabrera, fix some compiler warnings and add some
  little optimizations in ascii85 encoder
- Revert and fix regression (graphical artifacts due to wrong change_linewidth()
- Add postscript quality attrs to some example schematics
- "preserve unchanged props" will be automatically checked when editing attributes on multiple
  object selection and unchecked on single object selection as this is the 99.9% use case
- Added jpeg_quality attribute that can be used in images / graphs to specify the quality
  factor of jpg embedded images in ps export. If unspecified quality=100 is used.
  A value of 25 results in 6x smaller files and acceptable results, so it is worth
  using a quality factor less than 100
- Added libjpeg detection code, so postscript image embedding will be disabled if libjpeg not present
- Ps/pdf ecxport: dont print rectangle frames around images
- Use my_free/my_malloc for memory leak checks
- Default to unlocked state (lock=false) at title 1st placement
- Add accelerator Shift-B for edit schematic header/license
--diff option to visually compare two different (versions of) schematics
- Add command "Simulation->Changelog from current hierarchy" that lists schematics 
  from current hierarchy, sorted by modification time
- When setting Simulation->LVS netlist, use "lvs_format" attribute for netlisting if this
  attribute is existing, otherwise keep using "format"
- "xschem set format <fmt_attribute>" will change netlisting format attribute instead of
  default "format" (or verilog_format or vhdl_format),
  however fallback to default netlisting rule attribute if not defined in symbol.
  add tcl function "from_eng <n>" to convert spice formatted numbers to floating point
- Added verilogprefix symbol attribute: will be prefixed to symbol name references in verilog netlists
- Implementation of fetch schematics from web (xschem http://......xxx.sch) 
- When placing symbols user can also type file name (with full path also)
  inside File/search box instead of clicking in the list box. web URLs will be returned as
  they are with no further interpretation
- Dim schematic to grey if showing only probes, instead of hiding it completely
- "@path" will be expanded in symbols with the hierarchy path,
  so a fully qualified instance name is obtained with @path@name
- Fill attribute on rectangles to override layer fill style: fill=false will not fill
- Global properties dialog box: close if clicking outside or pressing Shift-Return
- Shift-enter/clicking outside ends text insert widget.
  Entry widget for text properties string replaced with multiline text widget
- Recursive attribute substitution. use also template attribute of parents if not found
  in instance prop_ptr
- Ipin,iopin,opin reshaped to better show connection hotspot
- Use sim_pinnumber for port ordering in simulation netlists and leave pinnumber
  for package pin position.
  These two collide, for example in spice port ordering vs (transistor problem)
  device package pinnumbers. Dont load graphs in lcc symbols
- Save symbol with ordered pins if sim_pinnumber is present in all pins
- Annotation of voltage and currents in (nested) LCC instances
- Change_layer() now works also for text objects
- Allow changing start color in rainbow multi-dataset graphs
- Added rainbow checkbutton for multicolor waves in case of multiple datasets
- Wire labels: default name set to p1 instead of l1, so it will not clash with typical
  inductor names
- Removed (now) duplicated inst_hash_lookup: use int_hash_lookup.
  Search function does not highlight nets if searching for something that is not "lab"
- Persists highlights on instances as user ascends/descends into different hierarchy
  level of schematics
- Add cmdline option --preinit <commands> to execute given commands before
  executing xschemrc file.
  This can be used to switch library search paths depending on a variable setting.
- Netlister code rewrite to allow any combination of pass-through symbols
- Load_file_dialog: make remember last dir work again
- Handle pass-through symbols chained with wires and no labels attached to wires
- Allow to use @pinlist in format string even for symbols with duplicated ports.
  Duplicated entries will be skipped.
- Add component_browser_on_top tcl variable in xschemrc (default setting: enabled (1)
  to enable or disable component browser window always on top
- Allow negative integers in expandlabel() ( xx[6:5:-2:3] )
- Update send_net_to graph() and send_current_to_graph() to use sch_waves_loaded() as the hierarchy
  level where raw file was loaded, to skip upper path designators
- Added label notation EN[0:3:6:5]: EN[start:end:offset:repetitions],
  it will expand to a 20 bit bus:
  a[0],a[1],a[2],a[3],a[6],a[7],a[8],a[9],a[12],a[13],a[14],\
  a[15],a[18],a[19],a[20],a[21],a[24],a[25],a[26],a[27]
- Allow nets with no label pass thru symbols with duplicated pins.
  named nets will propagate through duplicated pins
- Use limiting mylog()/mylog10() functions in expression calculator
- Faster jump table in plot_raw_custom_data(), added simulation->add waveform reload launcher
- Added verilog_extra attribute for list of implicit node connections to symbol in 
  verilog netlists. extra attribute still used in verilog as a list of attributes NOT
  use as component attributes / symbol parameters.
- Added prev(), del() function in graph processing. Extend calculation 1 or 2 point
  beyond viewport for exact deriv/integ/prev/del calculation at left edge
- @pinlist will be comma separated in verilog netlists
- Added vhdl_sym_def, spice_sym_def, verilog_sym_def attributes for symbols.
  If defined and not empty the corresponding netlister will insert the content of the
  attribute instead of the subcircuit schematic implementation.
  Typically used to include a definition file. Updated documentation
- Graph axes in engineering notation (20u, 10p, 3k), fix an issue in graph panning with
  button1 mouse;
  ngspice:: get_current, get_voltage, get_diff_voltage, get_node embedded into xschem.tcl,
  to_eng tcl procedure to convert number to engineering form.
- Add Highlight->Select overlapped instances command
- Added File -> Component browser, clicking recent component buttons displays preview
- New option for non blocking file selector, so it will remain open allowing to pick
  multiple components (Shft-Insert).
  Aborted place symbol operation will no more set schematic status to modified
- Allow tabs and newlines in graph expressions in addition to spaces; updated example schematics
- Allow spice multipliers in numbers (20u, 10k, 20p) in graph expressions
- Added "Annotate operating point" into Simulation menu
- New added graphs will have dataset attr set to -1 to include by default all datasets
- Make op backannotation in schematic work also if raw file loaded at hierarchy level > 0
- Xschem raw_read accepts an optional type argument after file name (tran, ac, dc, op, ...)
  to select type of simulation to load from raw file.
  New command xschem annotate_op will replace ngspice::annotate tcl procedure.
- Bypass tcl for voltage and current backannotation in schematic from cursor b positon in graph
- Better number formatting in backannotation. Alt-e if nothing selected opens another
  copy (tab/window) of current schematic (after warning)
- If sweep variables are defined on X axis (instead of default index 0) use first
  sweep X-axis var in live cursor backannotation
- Add backannotation info (as hidden text) in lab_pin.sym, lab_wire.sym,
  transitioning example schematics from old (push) backannotation model to new pull model.
- Fixed current (also hierarchic) reporting in ammeter.sym and vsource.sym)
- Let cursor graph backannotation work for multiple sweeps (implicit datasets)
- Alt-a in graph annotates schematic with values at cursor b position.
  Simulation->Live annotate option to automatically update schematic probes if cursor moved.
  Some improvements and fixes in ngspice_annotate.tcl. Fix xschem setprobe command.
- Add simulator_commands.sym, simulator_commands_shown.sym, add_custom_button.tcl into release package
- Restructured graph dialog box, added min/max x, adjusted sweep variables vertical aligmnent,
  added atof_spice() that recognizes spice suffixes (12p, 4.2MEG etc)
- Do not show bboxes of hidden texts while moving objects if global option
  "show hidden texts" is not set;
- Limit max size of embedded graph bitmaps in svg export.
- Added deriv0() graph function, does derivative w.r.t. index 0 (sweep) variable, regardless of
  graph sweep (x axis) variable.
- Xschem print command: if w and h are set to 0 compute image size automatically
- Graphs are now rendered (as detailed png bitmaps) in svg exports
- Look for inutile stimuli files in schematic directory instead of in simulation directory
- Fix find_closest_dataset() if log scale axes are used
- Ngspice_backannotate.tcl: handle Xyce operating point data, removed hspice_netlist
  (no more existent)
- Inst_hash_lookup() will insert and lookup only instance basename (x1[3:0] --> x1) so better
  and stronger uniquenes of instance names is ensured.
- Ngspice_backannotate accepts a filename (if not given assume as before <circuit_name>.raw)
- More Xyce integration, transform .save in .print tran, transform x1.x2.node to X1:X2:NODE in
  Xyce lookups, more checks for malformed raw files
- Added "devices/simulator_commands*.sym" to conditionally include commands in the netlist depending on
  selected target simulator
- Added command "xschem get netlist_name fallback" that returns user set netlist name or fallback name
  derived from circuit filename. simulate and waves procedures handle user  netlist name if set
- Zoom by area plots reverse x axis if done with Shift key pressed
- Balloon tooltip procedure made more general. Easy to reuse for any widget
- Added [t]rack bindkey in graph to display the wave closest to mouse in multiple dataset plots
- Add commands "xschem set format ..." and "xschem get format" to change/view format attribute used for
  netlisting, overriding defaults. Example: "xschem set format my_format"
- If ALt-x (compare schematics) is given before setting a compare filename, schematic is compared
  with saved version of itself
- Add xschem get zoom to query zoom factor
- Allow "xschem descend -<n>" (n=number) to descend into nth rightmost instance; added traversal.awk script
- Warning and highlight perfectly overlapped symbols
- Add "Plotname: constants" to the list of recognized ngspice plots in raw file
- Focus main window when mouse leaves SNAP or GRID text entries
- Added xschemrc variable `autofocus_mainwindow` (default setting: enabled (1) ),
  if this variable is set moving the mouse to the main drawing area when a dialog box is open
  (typically while editing a component attribute list) will focus the main window, so user
  can move / zoom/pan the schematic using the usual commands, for example to look at a
  different part of the schematic while editing the component.
  If this variable is unset a click is needed to focus the main window.
  This will thus not allow to move / zoom, but allows to type into the dialog box if the
  mouse goes out of it.
- Changed @schname to @schname_ext and added @schname that expands to the schematic
  name containing the instance, with no extension (no .sch)
- Added @topschname predefined attribute that expands to the toplevel
  schematic name (no path) with no .sch extension
- Unselect_all() before inserting wire label or text from the menu to avoid moving
  previously selected objects
- Y log axis option in graphs
- User selectable log X scale instead of assiming log X for AC analyses only
- Fix ngspice_backannotate.tcl: correctly backannotate ammeter currents; correctly
  handle multipoint Operating point data in graphs
- Store just magnitude and phase of AC vectors instead of dB and phase. 
  Add db20() function to get dB values from magnitude in graph RPN expressions.
- Do not accept 0 in graph `X div` and `Y div` textboxes, as this will cause an endless loop
- Button 1 Double click does edit object attributes

3.1.0:
- Lot of bug fixes.
- Alow embedding (png) images in schematics
- Display waveform graphs from ngspice/Xyce .raw files directly into the schematic.
- Multiple windows handling. Tabbed/multi window interface
- Add cross probing to Bespice wave viewer.

3.0.0;
- binary windows release
- added "place=header" (in addition to "place=end" attribuite value)
  to print code block as a header in spice netlists
- force ERC info window showing in case of critical errors during netlist:
  unconnected nodes, shorted nodes, pin mismatch between sch and sym and similar
- do a tcl evaluation of the "schematic" attribute of a symbol if the attribute is within a
  tcleval(...) expression. This way tcl variables/expressions can be used to determine 
  the schematic to descend into when traversing/netlisting. example: 
  schematic=tcleval(poweramp_${::mode}.sch) 
- new list variable "noprint_libs" to specify patterns of cells NOT to print in hierarchical export. 
 "xschem_libs" does the same thing for netlisting.
- added hierarchical ps/pdf export (File menu)
- LCC creation: Added new feature "Make schematic and symbol from selected components" 
  with command "xschem make_sch_from_sel" and function make_schematic(..)
- if bussed symbol ports are unconnected generate array of unconnected nets to match port multiplicity
- add simulation menu option to create simulation/ dir under current schematic dir (local_netlist_dir)
- report error if editor not found while opening/editing with editor (netlist, stimuli file attributes)

2.9.9:
- add (as comments in netlist) absolute paths for .sch and .sym of all expanded subcircuits
- ngspice_annotator: implicitly add "x" to subcircuit instance names that do not begin with "x" or "X"
- Postscript/svg  print: addition of ISO 8859-1 characters 
- When editing multiple text objects with "preserve unchanged attrs" set do not change individual text dimensions.
- saving to file made 4x faster, this implies less latency due to undo buffer savings on freaking big schematics.
- add sample file for custom menu additions
- bind select "connected wires" to alt/ctrl-right button click
- Add Shift-Delete command that selects all nets/labels/probes physically attached to current selected wire segment/label/pin/probe
- added "auto join/trim wires" menu option since now the trim operation is doing fast even on big designs
- option for transparent background in svg export
- added ngspice backannotation tutorial
- add xschem commands for specifying image size for png and pdf:
   xschem print svg file.svg 800 600; 
  svg background color taken from svg_colors variable so it can be changed like any other color
- xschem page aspect ratio decides if postscript or landscape for ps/pdf
- ps/pdf export uses true postscript fonts
- spice_probe symbols generate .save instructions and these are flattened by xschem
  to enable ngspice save hierarchic nodes
- variable width grid point option (for 4K displays) 
- Added 'PWD' button il file load dialog
- almost all global context related to a schematic in xctx structure. This potentially
  allows to load more schematic windows with 1 running xschem process.
- fix spiceprefix to be applied on all expanded vector intances in spice netlists

2.9.8:
- ERC checks: do sch/sym node equivalence check on expandlabel()'ed nodes,
  avoid flagging DATA[5,3,1] != DATA[5:1:2] != DATA[5],DATA[3],DATA[1]
- bounding box fix while copying objects done in r1224 was not correct. Object rotation fixed now
- allow spaces in bussed nodes (A B,CC,D\ C, A B[3:0]),
- switch LC_ALL to "C" locale to avoid output file format issues in foreign 
  localized systems. 
- various commands for schematic backannotation:
  Added various procedures to select flat / hierarchical instances and re-route
  a terminal to a different net. 
  reroute_inst -> change a pin connection, 
  reroute_net -> change net updating all connected components.
  "xschem instances_to_net", "xschem instance_nodemap", "xschem instance_pin_coord" 
  new query commands added. "xschem get expandlabel node" renamed to "xschem expandlabel node".
- allow tEDAx (flattened) netlisting of hierarchical schematics
- allow tcleval(...) in instance attributes , example for a for a 
  MOS: W=2 L=0.13 AD="tcleva([expr @W*0.29])" 
- svg export uses true fonts (svg <text> element) 
- select highlight net function made faster (highlight -> select highlight nets) 
- great trim_wires() improvement (>2 oom speed) 
- guard against extended ascii characters in nocairo/svgdraw/psprint functions
- added variable "S" containing full schematic path in "Simulations->Configure simulators
  and tools". This can be used to add search paths to simulators.
- allow tcl commands ( [..cmds..] ) in Simulation->configure simulators and tools
  (useful to retrieve needed information about current dir etc.).
- better xschem icon: added shapemask for "transparent" background
- synchronize command sending to gaw with gaw replies so at the end the tcp channel
  is closed gracefully (avoid port in use error messages). Timeout whatchdog is set
  to prevent forever waits/deadlocks.
- Fixed Windows Xschem running from VS2019 without installing Xschem to find (Root)/xschem_library/devices
  as XSCHEM_LIBRARY_PATH, so that viewing schematics through VS2019 will find all
  symbols in xschem_library/devices.
- Moved doc and xschem_library XML files to its own *.wxs
- cleaned up Product.wxs by taking out doc and xschem_library files; fixed spacings
  in License.rtf; added condition that proper version of Active TCL is required to
  install
- added res_ac.sym
- added m parameter to npn.sym and pnp.sym, text attribute edit dialog box renamed
  from .t to .dialog so it will be always raised on top of xschem window
- put braces around "expr" tcl statements as this boosts speed
- Removed all static/global name conflicts, avoided global conflicts with flex/bison
  generated code so xschem (as a test bench) can be compiled as a single big file
  that includes all other sources
- updated  "xplot" file syntax according to recent ngspice changes
- "Delete files" menu command added
- added Shift-I bindkey as an alternative to Insert key (missing on Apple machines)
  to insert a component
- add some hidden commands in menu: "place net label(2)", "highlight net/pin name
  mismatches of selected instances", "Flip", "Rotate"
- according to answer from ngspice guys ngspice does not accept continuation lines
  for .title, .include and .lib statements, so break.awk will avoid breaking those
  lines. reversed default for tcl dim_background variable, so toggle colorscheme
  will work.
- added notepad.exe as editor for Windows
- some "tcl_version > 8.4"  conditions in xschem.tcl to ensure proper working on
  old (tcl/tk8.4) machines.
- added backannotation ngspice_get_expr.sym, gspice_get_value.sym, ngspice_probe.sym,
  and sqwsource.sym into Windows release package
- exampels/poweramp.sch and examples/cmos_example.sch show how to use dynamuc ngspice
  simulation data backannotation, optimized fix of previous bbox bug
- added ngspice_probe.sym and ngspice_get_value.sym that use a pull method to fetch
  values from ngspice .raw datafile, fixed a long standing bug that changed bounding
  boxes of symbols that were selected for a copy if they were copied and copy operation
  involved rotations of flips.
- xschem setprop made way faster if "fast" argument is provided. Example "clear probes"
  launcher object in mos_power_ampli.sch.
- do not call calc_drawing_bbox() on monster schematics as it takes more time than
  just drawing the viewport
- better regexp for probe search in ngspice_backannotate.tcl, comments in token.c
- allow dim background color in "View -> Dim oclors"
- if xschem is started with -n (netlist) load_schematic will not call tcl proc is_xschem_file
  to determine if sch or sym type, since command line option has higher priority.
  reverted back possibility in update_symbol() to have double quotes around name
  attribute (name="My strange name"). This has toooo many implications everywhere.
  name attribute must be wihout double quotes, xschem will strip them off if any.
- preview function now does no more need to save whole schematic on the undo stack,
  it is just a matter of pointer switching
- all xctx context is now a dynamically allocated structure; no observable performace
  impact
- r1191 | stefan | 2020-10-15 15:52:08 +0200 (gio, 15 ott 2020) | 1 line
- added "xchem load_symbol" command to load a symbol without binding to any instance,
  text edit attribute "Load" button will start in "$current_dirname"
- avoid printing erc warnings about missing "name=" attribute in symbols if there
  is a definition in symbol template string
- remove instname and symname parameters to tclpropeval2 as they are no more necessary
- updated print_spice_subckt() to reflect updates done in print_spice_element();
  abs_sym_path recognize ././././, ./., other strange paths., use $env(PWD) for current_dirname
  on startup instead of getcwd() if possible, to avoid dereferencing symlinks
- cleanup in print_spice_element(), print_verilog_primitive(), print_vhdl_primitive(),
  print_tedax_element(), parselabel allows ~ in node names (XSPICE inversion operator)
- match embed with what's updated in verilog_timescale.sym: "verilog_preprocessor
  and verilog_timescale now use verilog_format instead of format (which is for spice)"
- if strings passed to translate() are encloded in tcleval(...) the translated string
  is passed to tcl for evaluation. This allows to display formula results for symbols,
  for example capacitance values based on W and L: 
  tcleval(C=[ expr @ca * @L * @W ]) --> tcl will substitute the calculated value: C=1.234e-14
- code refactoring (global context in Xschem_ctx)
- when netlisting primitive elements (not subcircuits) the "format", "verilog_format",
  "vhdl_format, "tedax_format" can be specified in instance attributes to override
  symbol. This allows to adapt primitives (example digital standard cells) to different
  design kits without using wrapper subcircuits. Together with "symname" redefinition
  in instance this allows to completely customize element netlisting.
- verilog_preprocessor and verilog_timescale now use verilog_format instead of format
  (which is for spice), corrected verilog_netlist.c; better backslash and quote (")
  escaping  and unescaping when using attribute select combobox; for unquoting use
  "xschem get_tok tok 2" instead of "xschem get_tok tok 0" + regsub ....(remove backslashes)...
- allow probing to gaw current in voltage sources in addition to ammeters
- "Option->Show info win" moved to "View->Show ERC info window"
- Preserve existing text (notably license info) in xschem files under version "v"
  tag; some code refactoring, removed obsoleted comments
- added support for probing waveforms into gaw if raw file written by Xyce; Xyce
  uses uppercase, does not wrap voltage nodes into V(...). uses ":" instead of "."
  as hierarchy separator and other quirks.
- some clarifications of  steps to be taken to simulate example rom8k circuit
- fix hierarchical pathname for current probes to gaw
- better wire connecting bubble zoom scaling at different snap levels
- added vsqsource, square wave source generator, with only "hi" and "freq" as parameters
- correctly draw net labels / pins when they are highlighted and user changes their
  lab attribute so they become unhilighted
- added warnings (Options -> Show  info window) if components are missing a name=...
  attribute / if symbols are missing a type=... attribute
- fix erroneous slotted instance recognition (confuse U2[3:0] with U3:2) in translate(),
  breaking in some cases the "add net name on instance pin" feature
- more precise bounding box calculation for net highlights (will extend the bbox
  to cover wide (bus) wires and solder dots) so there are no more "half coloured"
  connecting dots etc.
- "@#n:net_name" attribute (n = pin name or number) in symbols translates to net
  name attached to pin.  "lab_show.sym" component that shows (does not assign) net
  name. "highlight=true" attribute can be given on instances in addition to symbols.
  Set filename in recent history also  when given on command line.
- save embedded components not only on first embeded instance but on all of them.
  This makes reloading easier and the overall thing much simpler. In LCC schematic
  allow get_sym_type() to read symbol data from folowing embedded tags "[...]" if
  any. Fix potential segfault in preview_window()
- better read_line(): handle unextected EOFs (noeol last lines)
- completely eliminated match_symbol() (which in turn may call load_sym_def() ) calls
  from within load_sym_def(), even for aligning LCC schematic pin ordering to symbol.
  A dedicated "align_sch_pins_with_sym()" together with "get_sym_type()" does the
  job in O(N) instead of using a sort routine.
- off-loaded some functions from load_sym_def() to make it smaller, avoid overkill
  recursive load_sym_def() calls to get only the type of a component in LCC schematic
  instances.
- Alt-b command toggles bounding box view: 0: view all, 1: bbox view for subcircuits,
  2: bbox view for all symbols.
- fix un-graceful termination of load_sym_def() in case of recursive schematics instantiating
  themselves. It was not allowed to unroll all hierarchy levels cleaning up allocated
  memory after issuing the max-hierarchy warning.
- fix inaccurate mouse to arc distance calculation for selections
- add gtkwave_server.tcl hook for gtkwave to listen to a tcp port
- Fixed some flaws in execute/execute_wait/simulate procedures (Simulate button was
  not cleared after a foreground simulation)
- add attributes "weight=bold", "slant=italic", "slant=oblique" on text objects for
  bold/italic/oblique texts, doc updates.
- capslock and numlock status detect and report in statusbar
- "xschem hilight_netname" command to hilight a specific  net name, "xschem search
  exact ..." finds specific instances of vector instances, "probe_net" procedure
  descends into the right bussed instance and hilights the correct net bit, added
  "xschem display_hilights" to return all hilighted nets in the hierarchy, added
  "gaw_cmd" procedure to send socket commands to gaw (like "gaw_cmd reload_all")
  (recently added command to gaw ttg)
- make "ctrl-[0-9]" commands work again (change layer)
- When loading/descending in a symbol set netlist_type to CAD_SYMBOL_ATTRS, set back
  to previous value when done.
- Tcl procedure "load_file_dialog" is now used also for saving files (so list of
  defined xschem libs is available
  as well as preview window).
- eliminated any differences between SYMBOL and SCHEMATIC files.
  There is no "current_type" variable any more. Symbols who used to have netlisting
  rules defined in schvhdlprop
  have now these attributes in schsymbolprop. 
  Old symbol files with schvhdlprop will be saved with netlisting rules in schsymbolprop.
- Bring open dialogs always on top of xschem main window if user clicks title bar
  on gnome/metacity DMs
- allow '@' in net names as this is sometimes uded in CDL / backannotated netlists.
- enable "bus=true" attribute for lines as well as for wires.
  As a side effect LCC schematics with bussed wires will display thick buses
- added command <Alt-b> (menu Symbol->Show only instance Bounding boxes) to toggle
  displaying instance detals / only bounding box.
- added "dash=n" (n=integer) attribute for lines, polygons, rectangles, arcs to set
  dashed line style.
  n is the dash length in pixels.
- verilog_ignore, spice_ignore, vhdl_ignore attributes on schematic pins are propagated
  to symbol pin attributes
  (if using make symbol from schematic, otherwise propagate by hand). 
  These pins are not netlisted in the respective netlist format
- -b option to detach xschem from terminal
- NO_CAIRO builds also use 'layer=' attribute to display text on custom layers.
- pdf and svg exports follow the enable_layer[] array to display/hide layers as does
  draw() 
- LCC function (Local Custom Cell):
  schematics (.sch) can be instantiated just like symbol (.sym) files in a parent
  schematic.
- Open Recent menu entry to quickly open recent edited/saved files.
- when descending into vector instances (example: x1[7:0]) ask in which instance
  to descend
  (example: x1[2]). This is needed to correctly build the hierarchy paths and to
  send correct
  signal names to spice waveform viewers. This also allows to follow single bits
  of bussed 
  signals thru the hierarchy. 
- symbol attribute @symname will display symbol name without extension as it used
  to be
  in earlier versions. @symname_ext will print full rootname of symbol. 
  Some doc updates on symbol attributes
- changed tcl procs abs_sym_path and rel_sym_path, now the real symbol filename is
  obtained by
  prepending one of the XSCHEM_LIBRARY_PATH paths until the symbol is found.
  This allows more than one directory levels in symbol references.
- when copying a symbol with edit_property dialog ("q" key) and enabling "Copy cell"
  if a relative
  path name is supplied for new symbol it will inherit the same path prefix as the
  original symbol.
- edit property dialog box has a (combobox in tk slang) token selector, so if a specific
  token 
  is set the text edit will be restricted to that token value instead of the whole
  attribute string.
- snap and grid entries in main window will not annoyingly receive keyboard focus
  with TAB key
- implemented text attributes "hcenter=true" (center text in reading direction) and
  "vcenter=true" (center text in direction perpendicular to reading direction).
  These can both be set for full centered text block.

2.9.7:
- store symbol wires (if any) as Instdef lines on layer WIRELAYER (1) so they are
  visible when instances are placed.
- spice netlister: if ".param m=10 n=5" is given and "R1[m:n]" instance name is present
  resolve parameters
  and replace instance name with R1[10],R1[9],...,R1[5].
- Fix: zoom_box function called from menu was broken
- tcl proc probe_net: if <path>.netxxx is given where xxx=number then try first probe
  netxxx, if no net is found try #netxxx
- load system-wide xschemrc first, then $PWD/xschemrc or ~/.xschem/xschemrc; user
  xschemrc appends to
  system-wide xschemrc instead of replacing it.
- verilog_netlist: use name "top_schematic.sym" from "top_schematic.sch" before calling
  load_symbol_definition for verilog parameter netlisting
- fix to avoid name chashes between auto-named nets (#net<number>) vs user set net
  names (net<number>)
- device_model attribute: allow escaped quotes in text
- allow .subckt as well as .model in device_model attribute, even with identical
  model/subckt name
- "device_model" attribute set in symbol or symbol instance may be set to a SPICE
  .model 
  specification (device_model=".model D1N4148 D ...").
  This model will be printed only once per component at end of netlist.
- "xschem clear SCHEMATIC" incorrectly sets untitled.sym file name. Thanks to Neil
  Johnson for pointing out the issue
- add --tcp_port command line option
- added (optional) tcp server that can be used to accept commands from other applications
  (backannotation, cross-probing)
- added video tutorial on cross-probing into GAW
- added "Simulation->Send highlighted nets to GAW (Alt-G)" to probe xschem nets into
  an open gaw window
  using gaw ttg socket commands.
- dircolor variable (associative array) in xschemrc to set custom user defined colors
  for xschem 
  component/schematic libraries: "set dircolor(path_regex) color"
- glob filter (all, .sym, .sch) in file open dialog.
- created command "Simulation->Create ngspice xplot probe file", this creates a xplot
  script 
  for ngspice with waveforms of same color as highlighted xschem signals.
  Fix a problem in verilog_netlist.c not writing "---- begin/end user architecture
  code" 
  blocks if empty user architecture. This confuses verilog.awk post processor.
  added logic/ram_tb.sch verilog example.

2.9.6:
- filled arcs/circles in svg and pdf exports
- fix segfault when selecting polygon on layer x close to circle on layer y: incorrectly
  returning polygon on layer y
- fill=true attribute for arc/circles, same as for polygons
- add "--script <tcl_file>" to allow executing a tcl script from cmdline
- allow flat netlist with LVS flag set
- fix crashing bug: check for missing "name=" attribute on symbol pins in sym_vs_sch_pins()
- separate "spiceprefix" and "toplevel is a subcircuit" options, move under Simulation
  menu
- In load_file_dialog(), when the LHS panel is root, going down on the RHS panel
  should not
  add an extra / for the new directory name (applicable to both Linux and Windows)
- catch open filename should be within quote to handle window's filename with spaces;
  
- @spiceprefix added in front of @name in nmos4.sym, pmos4.sym, pmos.sym and nmos.sym
  in devices/
- fix clash in loop variable in sym_vs_sch_pins()
- better erc check: sch_vs_sym pin check in addition to sym_vs_sch
- merge-in windows changes into xschem.tcl
- vhdl postprocessor: add _vector on bussed nets only if boolean, integer, real,
  bit or std_logic type. 
  Do not add for any other user defined type
- vhdl netlister: do not declare record field signals (signal mysig.myfield), print
  component declaration
  for symbols with type=primitive
- Windows porting code added.

2.9.5:
- Avoid printing erc violations (open net and such) for global nodes, as they are
  resolved outside current schematic scope
- @spiceprefix can be added in front of @name in symbol format string to change prefix
  for device spice simulations.
  This prefix is not used if LVS netlist is enabled
- Added symbol menu entries to create labels / pins or print highlight nets
- warnings when opening a non xschem file or placing a non symbol file.
- rawtovcd: option -v <voltage> to digitize all analog variables to digital (vth=3/4
  voltage, vtl=1/4 voltage)
- menu entry to wrap top level in .subckt / .ends (spice netlists)
- video tutorials added
- Added xyce simulator launch
- Show infowindow (erc, warnings etc) on startup if show_infowindow set in conf file
- Alt-p command to place a symbol pin
- Alt-l or Shift-Alt-l to place a schematic net label
- Hilight subcircuit symbols during netlist if there is a pin mismatch with underlying
  schematic
- Xschem presentation slides for F-Si conference.
- better tk_exec: collect exit status from spawn background processes via async pipe
  fileevent
- new 'simconf' framework: all bindings to simulators / external tools are defined
  in a 'simrc' file
  decide which simulator/viewer to use, add or change command options.
  No tools / paths are now hardcoded anywhere in the core files.
- Add 'vhdl_primitive', 'verilog_primitive', 'spice_primitive' attributes for symbols.
  If any of these is set to true corresponding netlister will ignore completely symbol
  definition (no 'entity/component' for VHDL, 
  no 'module' for verilog, no '.subckt' for spice) and print in netlist only the
  items as specified in 
  'vhdl_format', 'verilog_format' or 'format' respectively.
- raise toplevel dialogs above xschem drawing area, not above everything 
- heuristic test added in preview code to decide if file is a valid xschem format
  (so preview is possible on older xschem formats too)
- preserve instance name up to numeric index when copying instances and 'Allow duplicated
  instance names' is not active:
  DIODE1 --> DIODE2 instead of D2
- eliminated numerous graphical artifacts due to AA text.
- better align nocairo text with cairo text for more consistent pdf / svg plots.
- gschemtoxschem.awk imports gschem schematic / symbols
  all gschem example circuits and all gedasymbols.org (1289 symbols) translated to
  xschem
- block attribute deletion works (no special DELETE key anymore needed)
- do not populate attribute string from symbol template if empty when editing symbol
  attributes.
- pick refdes from symbol template when netlisting if missing from instance attributes.
- default key for fullscreen set to '\' 
- remap-able pinnumbers on symbols created by symgen.awk, disabled tclreadline autocompleter,
  use only default (file expansion).
- allow more exotic pin names in symbols (slashes, leading digits etc)
- add comptag lines for additional key-value attributes in tedax netlist
- lock=true attribute makes component unselectable (good for page title )
  locked components can be unlocked by right-clicking on them (to bring up the edit
  attribute form) and
  deleting or changing the lock=true attribute
- preview window when opening files - inserting components.
- add --tcl command option to execute tcl commands before 
- ngspice raw file to vcd converter so gtkwave can be used for analog sims
- file browser is a paned window (left: dirs, right: files). Remember window size
  and pane position across invocations.
- newly inserted symbols now immediately start following the mouse
- devices/symbols changed putting all pinnumber texts to layer 13 so they can be
  disabled

2.9.5_RC1:
- added comments in xschemrc for new available options (tk_scaling and enable_layer())
- open file dialog: better panedwindow sizing
- New menu entry View->symbol visible layers, can be used to turn off certain layers
  (example: pin red boxes)
- tk_scaling tcl variable can be set in xschemrc to change the default scaling of
  fonts based on dpi setting,
  use a value slightly lower or greater than 1.0
- eeschema extension: allow DQ[31..0..X] to expand one out of X bits: DQ[7..0..2]
  --> DQ7,DQ5,DQ3,DQ1
- fixes, highlight instances if 'highlight' attribute set to true in sym
- symbols with global attribute 'highlight=true' will be highlighted when one of
  the attached nets is highlighted. Used for bus rippers.
- FIX: long long standing bug in bbox calculation that could leave some garbage on
  screen
- New eeschema-like bus notation DATA[0..3] expands to DATA0,DATA1,DATA2,DATA3, this
  differs from
  xschem standard notation DATA[0:3] that expands to DATA[0],DATA[1],DATA[2],DATA[3]
  Complex notations allowed like DATA[0..3],2*DATA[7..4],CS,CLK,RST,VCC*3 for funky
  bundles
- better bus connector shape
- better tedax netlist (handle escaped spaces in refdes)
- Improved bus drawing (better zoom scaling)
- rotate/flip multiple selected instances in place around anchor points. (Alt-R,
  Alt-F)
- 'Search and select' function enabled for lines and rectangles in addition to instances/nets.
- added installation of symgen.awk, Esc key reactivates screen redraw if for some
  reason no_draw was set to 0
- added ngspice backannotation of operating point into schematic
- fixed sample circuits, some symbols were screwed out...
- add 'xschem getprop instance_pin <instname> <pin_name> <pin_attr>' to report back
  pin attributes.
- symgen.awk: options --auto_pinnumber and --hide_pinnumber, various minor cosmetic
  fixes
  updated symben tutorial accordingly
- Tutorial page on xschem's symgen.awk
- symgen.awk: processes djboxsym .symdef files (with some extensions) to produce
  xschem symbols
- global=1 attribute in global pin symbols (vdd.sym, gnd.sym) changed to global=true.
- better memory check in debug mode for discovering leakages/stale pointers,
- fixed crashing bug if user deletes 'lab=' attribute from a label. If this happens
  get lab attribute from template string in symbol
- test schematics for XSPICE (ngspice) tests
- symbols saved. File updates (1.1 version)
- Better token substitution: @token\blabla; backslash can be used to indicate 
  end of token to be substituted if no separator can be used.
  documentation updates (new attributes)
- all functions to create pins from highlight nets, create schematic from symbol,
  attach labels to instance now work in 
indirect library reference mode (devics/ipin.sym) and in direct reference mode (ipin.sym)
- fix bug in search_inst() where wires were searched by substring matching instead
  of exact label matching.
- implement 'select_connected_nets' in event reporting
- new 'Alt-K' command to select all nets attached (or with same label) to selected
  ones.
- more comands added to the event reporting mode (--events)
- created new symbol netlist_options.sym in devices/
  this will be used to set netlisting options.
  currently supports attribute bus_replacement_char for changing
  subscript characters ([], <>) for bussed signals.
  example: place netlist_options.sym, set attribute: bus_replacement_char="xx" to
  avoid
  bracketed signal indexes
- logic and xspice primitive cleanups
- added dac_bridge to XSPICE primitives (NGSPICE <-->XSPICE logic Interface)
- nand gate (nd2.sym) works without schematic in all 3 circuit netlisting modes.
- use 'bus_replacement_char' specified in xschemrc only for spice netlisting,
  since VHDL and Verilog work just fine with standard xschem bus notation.
- logic/test_ngspice.sch showing for the first time a digital gate (NAND)
  simulated in NGSPICE using the digital XSPICE subsystem. This enables
  the same circuit to be simulated in Verilog, VHDL and NGSPICE with no
  modifications.
- fix regression causing segfault introduced in netlist.c at rev 273. (selection
  when symbols with generic vhdl pins are present)
- added behavioral ngspice source
- added XSPICE primitives
- start implementing ngspice digital primitives using the XSPICE subsystem
- add xschemrc variable bus_replacement_char to change default bracket notation
  for bussed spice signals: DATA[7] --> DATA<7>, by adding: 'set bus_replacement_char
  {<>} in xschemrc
- changes in logic sample symbol library
- added arbitrary width register to logic sample library, works in VHDL and Verilog.
- better relative/absolute path heuristics, example schematics minor fixes
- added ram model (vhdl and verilog) to logic library
- fixes in vhdl post processor for initialized std_logic_vector types (put correct
  quotes)
- additions in logic/ library
- add logic library with some simple gates what work both in verilog and VHDL sims
- Still incomplete but functional.
- avoid netlisting vhdl 'time' parameters (generics in vhdl slang) when doing verilog
  netlists.
- fix crashing bug when doing netlists ( unselect_all() done after remove_symbols()
  ) 
- Added tutorial on bus notation
- avoid reentrant invocaktion of 'Place symbol' via menu.
- DOC- added tutorial on symbol library paths
- improvements in load file selector, some fixes when resolving symlinked libs

2.9.2:
- Misc small bug fix of 2.9.1

2.9.1:
- export png / svg / pdf: ask file name dialog
- edit property dialog on selected symbol shows absolute directory 
  the symbols comes from
- more keysym definitions (Insert, Delete, F1-F12) to be used in
  replace_key array for custom keybinding
- better relative / absolute path handling
- Custom pinlist (@@pin1 @@pin3 @@pin2) can be used
  also for symbols with associated schematic (type=subcircuit)
- remote xschem control commands and event reporting (--events option)
  this will be used for backannotation / 3rd party tools integration

2.9.0:
- 1.1 file format allowing symbol names without implied '.sym'
Detailed changelog:
- template symbol name set to x1 instead of x0 (newly placed subcircuits will be
  named x1, x2, ... instead of x0, x1, ...).
- prepare instdef[].flags for additional flags (not only EMBEDDED flag) 
- update filename shown in status line after a 'save-as'
- Fix- edit in new window (alt-E) erroneously opened symbol view
- fix change symbol not detected (proc edit_prop)
- fix edit symbol property, symbol was flagged as changed even if no changes were
  done
- starting event reporting features
- example files migrated to new format
- index updated
- remote 'xschem saveas filename'
- scheleton for xschem remote control docs
- added 'xschem zoom_selected' and 'xschem zoom_hilighted' to focus on selection
  or probed nets/insts
- added 'xschem zoom_box x1 y1 x2 y2 magfactor'
- Various fixes of regression introduced since 'filenames' merge
- automatic schematic generation from symbol
- generating pins/labels from highlighted nets
- cleanups in the xschem tcl query interface
- cell:: prefix (replacing old cell__) used to query symbol attributes (example cell::template)
- xschem search function: exact search or regex search (exact replaces substring
  search)
- when doing a selection there is no more implied highlight
- fix: add_ext() incorrectly searched for first occurrence of '.' instead of last
- attach_labels_to_inst() updated to new symbol naming scheme (true label name with
  .eym extension)
- regression fix- highlight parent nets when returning from hierarchy was broken.
- [scconfig] -Add: enable xcb only if cairo-xcb is also detected
- proc edit_prop, fix symbol variable assignment
- correctly print relative path (wrt XSCHEM_DESIGN_PATH) of current schematic 
  in status bar/title symbol/window title.
- changing symbol name with edit property + copy file now does not assume .sym extension
  "schematic" attribute in symbol tells which schematic to load when descendig, as
  opposed to default symname.sym
- [scconfig] -Tune: line up help texts
- [scconfig] -Add: include generic scconfig help
- Fix: C doesn't allow indentation before preprocessor tokens
- fix descend to symbol
- merged in branches/filenames --> 1.1 file format
- doc updates (faq)
- fix rev numbers, comments on some xschemrc options, 
- some default config changed (enforce different refdes on placed components, 
  do not pop-up the directory list chooser when adding components, go
  straight with file selector).
- better opin / iopin regex matching
- Compatibility - quote { and } in regular expressions as they are metacharacters
- make_sym.awk: fix schematic pin regex pattern, when .sym is saved for pin references.
  Thanks to Curt for pointing out the issue
- enabled Undo/Redo Edit menu entries

2.8.4:
- avoid printing spice_ignore, tedax_ignore or vhdl_ignore as parameters in verilog
  netlists.
- merged in some changes from branches/filenames
- print timescale / preprocessor directives in hierarchical sub-modules too.
- better verilog preprocessor implementation 
- added devices/verilog_preprocessor.sym for placing arbitrary code at beginning of
  verilog netlist
- make lib selection optional by setting 'use_list_dirs' in xschemrc
- utile: use Z capable stimuli only on signals where Z states are used.
- use return value for checking errors in system(), freopen(), getcwd().
- propdel svn:executable
- chmod -x on src/utile/utile.txt - updated doc link in README
- xschem scripting additions and optimizations
- removed outdated info from help file
- doc typos

2.8.2:
- faq about automatic rename / allow duplicate refdes.
- remove references to 'Shift-J' in docs (removed messy code), better appearance for
  'list_dirs' dialog.
- added License/Copyright info for scconfig (GNU LGPL2).
- no save schematic before editing disk file - this is 
- an expert command so user should decide himself what to do.


2.8.2_RC4:
- removed gensch procedure (create sym from pinlist, un-maintainable mess)
- do not print 'conn' lines for unconnecteds in tedax netlist
- Edit -> Push Symbol menu was not functional.
- fix segfault when placing symbols with off-bound @#<n>:<attr> attributes (n referencing
  a non existent pin)
- allow/forbid duplicated refdes, highlight/rename duplicates, directory chooser when
  inserting symbols
- xschemrc variable 'disable_unique_names' may be set to 0 in xschemrc to forbid duplicated
  refdes
- default is to allow duplicates (1)
- menu 'Highlight -> (Highlight|Rename) duplicate instance names' can be used to
  flag / correct duplicate names.
- when inserting components (Insert key) present a list of directories to start fileselector
  from.
- disabled all testmodes
- align to grid function: for pin objects align the center point of the rectangle instead
  of the (x1,y1)-(x2,y2) points.
- Create symbol tutorial in xschem docs
- alert if trying to open non existent symbol
- allow @#drain:pinnumber to be used in sybols to print 'pinnumber' attribute of pin
  with 'name=drain' in addition to @#3:pinnumber (print 'pinnumber' attribute of 3rd pin of symbol)
- removed 'string cat' as it is a tcl8.6 addition (not needed anyway)
- Add $DESTDIR prefix to system_library_dir in Makefile.conf.in as it is used in trunk/xschem_library/Makefile
  to install files.
- -plotfile on cmdline to specify image export output file. Valid for all formats
  (png, svg, pdf)
- calculate correct line widths before rendering to screen / plot images
- fix: start numbering new instances from 1 instead of 0 
- xschem.1.in manpage and expand $PREFIX
- fix rotate /flip without moving when multiple objects selected.
  (in this case do not rotate individual objects around their anchor points)
- doc and symbol updates
- Allow pinnumber(name) in instance attributes to change symbol pinnumber, 
  in addition to pinnumber(n) where n is xschem pin index number. Syntax changed from
  pinnumber_n.
- Allow mouse panning schematic while editing properties.
  Do not allow some command nesting combinations  that could be dangerous.
- Tutorial on creating a simple schematic and running a simulation with ngspice
- Some fixes on UI (bindkeys) 
- generic, 'light' models created for testing tedax moved from pcb/ to devices/
- added @spiceprefix to symbols that might need a different spice prefix
- if spiceprefix unspecified at instance level no change wrt previous behavior.
- netlist_dir default set to '.' (current directory, where xschem is launched) if not
  defined in xschemrc
- option -o <dir> (--netlist_path=<dir>) can be used to set output netlist *directory*
  with cmdline
- Token subsitution now correctly replaces @token1@token2 with their values 
  (no separators needed, second @ is an implied token separator and next token start)
- allow set / change selected attributes on multiple wselected ires/rects/lines
- leave post mortem shell open in case of ngspice fatal errors, in interactive ngspice
  sims.
- trunk/utile dir moved under trunk/src/utile so it will be in the same
  relative position wrt XSCHEM_SHAREDIR whether xschem is run from
  build trunk/src directory or after installation.
- make uninstall fixes.

2.8.2_RC3:
- commercial simulators/viewers not available in xschem menus if their 
  *_path variables not defined in xschemrc. Better quoting for allowing filenames
  with spaces
- removed potentially proprietary models from example schematics.
- copyright info updated to 2019
- objects can now be flipped/rotated (R,F keys) without initiating a move operation.
- Right mouse button brings up edit attributes of object under mouse,
  ctrl-button1 unselects object, ctrl-shift-button1 drag unselects by area
  netlisting mode shown in status line, no more alert box when switching
- fix some inaccuracies in menu keybindings
- doc cleanup, added first annoying FAQ: http://repo.hu/projects/xschem/xschem_man/faq.html
- step-by-step tutorial for installing xschem: http://repo.hu/projects/xschem/xschem_man/tutorial_install_xschem.html
- xschemrc comments and sample lines aligned to current xschem behavior

2.8.2_RC1:
- improvements of xschem TCL API for backannotation
- refdes (instance name) automatic numbering starts from 1 instead of
  0 (D1, D2, ...) 
- ngspice integration
- documentation updates
- save only one copy of embedded symbols even if multiple instances of it have the
  'embed=true' attribute set
- allow arbitrary spaces around '=' in attribute assignments 
  (name = x1 footprint=  TO220 model= IRF540)
- '.' in path search list is now the location of the containing schematic, not the
  directory from where xschem was launched (thanks to Igor2 for consulting).
- Default search list if running xschem from build directory is 
  '.:<path>/xschem/trunk/xschem_library/devices', so all examples will run out
  of the box with no config file tweaking.
- tedax netlist: instance property 'pinnumber_n' where n is the index of pin (0,
  1, 2, ...) may override pin 'pinnumber' 
  of symbol pin with index 'n'
- tedax netlist: instance property extra_pinnumber="idx1 idx2" may override symbol
  inherited
  connections (usually supply and ground pins for slotted devices) 
- improvements and cleanup in xschem query language (xschem pinlist)
- print index number (order in xschem array) of selected objects
  in status line
- version info added as first line when saving .sch/.sym files.
  v {xschem version=2.8.2_RC1 file_version=1.0}
  for now no checks are made when loading files, version string from file 
  is just stored for later usage.
- documentation updates, example files updates, variable expansion in launcher()
  so XSCHEM_SHAREDIR and HOME can be used in url attributes
- fullscreen moved from options to View menu, more appropriate.
- make default compile time XSCHEM_LIBRARY_PATH definition available 
  to xschemrc so a directory can be prepended or appended to it
- replaced execlp with execl everywhere
- hooks.c: default to ~/.xschem/xschem_library if no --user-lib-path given in configure.
- examples/diode.* renamed to examples/diode_1.* to avoud clashing with devices/diode.sym.
- If no search path (XSCHEM_LIBRARY_PATH) defined in xschemrc default to compile
  time with '.' prepended
- Template xschemrc with better comments by Richard Lucassen (thanks!)
- xschem_library/Makefile: use $system_library_dir for system libraries (devices)

2.8.1:
- connecting dots are highlighted together with the hilight net.
- avoid shebangs when launching scripts, rely on host PATH variable 
  to lookup the correct (awk) interpreter
- extensive debug to catch and fix memory leaks / pointer deallocation
- search function improved, if empty value is given then look 
  for objects that *have* search key in property string.
- 'DELETE' attribute can be used to erase an attribute from a 
  multiple selection of etherogeneus objects, if 'preserve unchanged props' 
  is enabled.
- Added a 'dim color' slider (View menu) to adjust brightness.
- xschem - tcl API improvements for spice operating point current / voltages backannotation
- ability to do block deletion of a specific set of attributes on selected set
  (set attribute values to 'DELETE') 
- when drawing selected elements do not display bbox of empty symbol strings
- xschem tcl API improvements:
  * xschem set no_draw 1|0   --> used to disable screen redraw, to speed up complex
  scripts
  * xschem set no_undo 1|0   --> used to disable undo, to speed up complex scripts
    it is wise to do a 'xschem push_undo' before doing this
  * xschem get expandlabel <net label> --> expands bus notation:
    example: xschem get expandlabel S[4,2:0] will return S[4],S[2],S[1],S[0] 4
    that is the expanded bits and the number of bits.
  * xschem get sch_path --> return the current hierarchy path:
    example: xinput.xreg.xlat
  * subst_token() now allows to set a token to an empty value (new_val="") or delete
  the token
    (new_val = NULL)
- tcl command 'xschem set renumber [1|0]' allows to do automatic renumbering
  of instance names (refdes) when loading schematics with duplicated inst names
- View->Change current layer color' menu added allows to change layer colors
  changes are saved in ${USER_CONF_DIR}/colors
- added '--rcfile <filename>' for custom rc file loading
- 'about xschem' dialog added
- add '*' in window title bar / icon when schematic is in modified state and need
  save
- default file name to 'untitled.sch' when creating a new schematic
- long option syntax (--version etc)
- make xschem compile with std=c89 -pedantic
  no snprintf(), no // comments, no VLAs, no getopt(), no strtok*()
- cirles / arcs in pdf / svg export
- option for in-memory undo in addition to file backed undo (#define IN_MEMORY_UNDO)
- Menu 'Tools->Remember last command' and 'set persistent_command [1|0] in xschemrc
  to repeat last wire/line command just with a mouse click
- removed copyrighted material (sample spice models) 
- keybinding changes: Corl-Q for exit, Ctrl-N for 'New schematic'
- better checking on malformed input (discard vs crash) 
- Menu command Tools->Join/Trim wires (remove overlapping wires, join parallel wires
  etc)
- Menu command Tools->Break wires (break wires at component pins, or 'T/Y intersections)
  this will work on *selected* wires.

2.8.0:
- Added scconfig configuration, build and install system for automatic
  library / features detection.
- Connection dots are automatically added to T, or Y type net intersections
- renamed user configuration files: from ~/.xschem to ~/.xschem/xschemrc

2.7.0:
- some fixes in library path management (abs_sym_path and rel_sym_path in xschem.tcl)
- documentation updates on required -dev files, libfl-dev and cairo2-dev
- documentation updates on open/closed polygons
- embedded symbols, (embed=true attr on instances), documentation updated.
- Status bar grid entry configured as disabled as it is output only
- make xschem accept some malformed input files, like T{} ... or leading spaces before
  element tags.
- code in place for command to cut wires at instance pins and intersections
- created iterator function for spatial wire & inst hash tables to avoid
  code duplication
- removed exec flag on all doc/ files, moved xschem.html to index.html
- keep calculating bbox for unusually big texts, even if these text are not
  displayed being fonts too big (crash on old cairo libs)
- corrected menu accelerators shown for zoom / unzoom.
- unzoom_nodrift tcl variable can be set to 1 or 0 to produce slightly
  different unzoom behaviors.
- flush arc drawing routines (draw[temp]arc(END,...) in addition to lines
  and rectangles when doing selections /hilight. (forgotten since arcs
  were introduced).
- nets are drawn after the other elements so they are always on top.
- new xschem TCL commands
 - xschem setprop instance x25 w 55
   replaces property w of instance x25 with new 55 value
 - xschem setprop instance_n 123 w 55
   same as above but indicate instance number (position in inst_ptr array)
 - xschem replace_symbol instance x25 .../../new_symbol.sym
   replaces symbol of x25
 - xschem replace_symbol instance_n 123 .../../new_symbol.sym
   same as above but indicate instance number (position in inst_ptr array)
- new commandline option '-i' to tell xschem not to load init files (xschemrc and
  .xschem)
- order coordinates before storing nets in load_wire(),
  for some reason this trivial thing was missing
- drawing glitches fixed

2.6.8:
- Pressing 'space' while drawing a net or a line switches between horizontal-vertical
  manhattan path, vertical-horizontal path or oblique path.

2.6.7:
- in 'persistent command' mode wire or line placement continues after a double click
  so it is possible to place multiple unconnected nets / lines
- no more dialog on grid change. grid is shown in status bar

2.6.6:
- double click to terminate a polygon placement
- unzoom and zoom now correctly unzoom/zoom around the mouse pointer with no drifts
- ordered menu items in window so using keys switches menus in a predictable way
- Double click no more brings up edit property dialog, control-double-click is needed.
- 'persistent command' checkbox in Tools menu, if checked LINE and WIRE placement
  continues
  until an Escape or a double click is given. Default value can be set in .xschem
  rc file.
- line clipping now clips lines to window size and not to currently set bbox. This
  avoids
  off by one pixel calculations leaving garbage on screen in some cases.

2.6.5:
- Added arcs / circles.
  Arcs are started with the 'Shift-C' key, while circles are entered with 'Ctrl-Shift-C'

2.6.2:
- Open polygons are now supported
- Button3 for terminating an open Polygon placement
- Return key for terminating a close polygon placement 
  (this can be done also by clicking the last point on the first polygon point).
- some drawing fixes when highlight nets are shown.
- Waves, Simulate and Netlist menu buttons with borders so they look different
  from menu entries.
- Merge schematic (copying across different xschem instances) was not cacihng correctly
  the 'fill attribute for polyons.
- save/load widgets: no change initial dir if user cancells action
- 'button' look for 'Netlist', 'Waves' and 'Simulate' menu buttons.

2.6.1:
- remove copying .xschem into home directory from the Makefile, this was 
  only for testing and if not properly configured will cause xschem 
  to look in the wrong places for schematics

2.6.0: 
- small change in Makefile: when doing 'make install' copy also sample .xschem in
  $HOME/
  so installation will be ready to use without user having to manually setup the
  .xschem
  file.
- Documentation updates
- Makefile passes PREFIX and XSCHEM_DESIGN_PATH cpp variables to xschem
  for default path setting
- small bug fixes on the new drawing mode: 
  pixmap -> 'XCopyArea' -> screen
- xinit.c sets empty XSCHEM_DESIGN_PATH before reading startup files (xschemrc and
  .xschem) 
  so variable can be appended without complains from the tcl interpreter
  (variable non existing)
- allow direct execution of xschem from within the src/ directory for testing purposes.
  removed special startup handling if xschem run from the parent of src/ dir.

---

- xschem now understands a list of directories for symbol files, this list is set
  as a colon separated list of paths in XSCHEM_DESIGN_PATH.
  this tcl variable may be set in the .xschem or system xschemrc files, or via env
  variable.
  if no setting is done then xschem uses the compile time default, unless it is started
  from a  source build directort (see below).
  the old XSCHEM_DESIGN_DIR (now deprecated) is still understood by xschem, this
  variable
  may specify only one directory.

- reverted previous change 'tcl current working dir changed to directory of
  loaded schematic', not necessary and dangerous as it makes xschem
  behaviour unpredictable.

- Makefile variables passed to XSCHEM:
    PREFIX: root directory of xschem installation
      (example: /usr ,  /home/user)
    SYSTEM_LIBRARY_PATH: system-wide directory of xschem symbols / schematics
      (example: $PREFIX/share/xschem/xschem_library )
    USER_LIBRARY_PATH: directory of user schematic / symbol files
      (example: $HOME/xschem_library)

- xschem reads first xschemrc file in system xschem directory (.../share/xschem/xschemrc)
  and then .xschem in current directory or in home directory.

- *NEW* drawing model (enabled by default) that avoid drawing to window, draws only
  to save
  pixmap, using XCopyArea to paint the screen. This avoids flickering when moving/zooming
  or panning the schematic. Previous drawing model (still available via menu) used
  to draw both in window and save pixmap. Depending on X server performance choose
  the
  method that runs best.
- bug fixes in 'create symbol from schematic'

- startup sequence of xschem:
 * look for XSCHEM_HOME_DIR from environment variables.

 * else if there is ../src/xchem.tcl with respect to current dir and
   ../xschem_library then we are starting
   from a build directory, set XSCHEM_HOME_DIR to `pwd` and
   also set XSCHEM_DESIGN_PATH to `pwd`/../xschem_library.

 * else if there is a PREFIX/share/xschem directory then set XSCHEM_HOME_DIR
   to PREFIX/share/xschem.

 * source XSCHEM_HOME_DIR/xschemrc if existing.

 * source `pwd`/.xschem or $HOME/.xschem if existing.

 * if XSCHEM_HOME_DIR not defined --&gt; error and quit.

 * look for XSCHEM_DESIGN_PATH from environment variables. This will override any
   value given in  xschemrc and .xschem startup files.

 * if XSCHEM_DESIGN_PATH undefined set it to compile time default provided by Makefile:
   xschem_library_path.

 * source $XSCHEM_HOME_DIR/xschem.tcl.

 * start loading user provided schematic file or start with empty window  (or filename
   specified in XSCHEM_START_WINDOW tcl variable).

--- 

- all string args passed from C to tcl encloded in {} braces to allow spaces
  in file and library names
- tcl current working dir changed to directory of loaded schematic to make relative
  symbol
  resolution work the same regardless of the directory xschem was started from.

--- 

- all path manipulation goes through tcl functions resolve_filename and abs_path_of_symbol,
  no direct manipulation of XSCHEM_DESIGN_PATH in .c or .tcl files.
  This is in preparation of multiple path list in XSCHEM_DESIGN_PATH, requiring
  changes only in those 2 functions.
- temp files for editing attributes with editor now in XSCHEM_TMP_DIR instead of
  XSCHEM_DESIGN_PATH

--- 

- new_window(): if opening a schematic in a new window change .sym extension
  to .sch extension, 20181006
- get_resolved_symbol(): recognize parent dir and replace absolute path to parent
  dir with ../
- load_inst() use get_resolved_symbol() to remove absolute paths when possible, 20181006

--- 

- XSCHEM_DESIGN_DIR renamed to XSCHEM_DESIGN_PATH as it should be a list of multiple
  
  library paths to search for.
- created a small function, source_tcl_file() for sourcing tcl files and do error
  checking.
  used to load  xschemrc / .xschem / xschem.tcl files

- look for xschemrc in {PREFIX}/share/xschem for system wide options, before looking
  in $pwd/.xschem
  or $HOME/.xschem for user options.

- look for xschem.tcl in $PWD or  XSCHEM_HOME_DIR if this tcl var is defined (or
  env var defined)
  otherwise source from {PREFIX}/share/xschem.

- library directory renamed to xschem_library

- if no .xschem is found and no XSCHEM_DESIGN_PATH defined set xschem symbol library
  to 'xschem_library'
  in current working directory. (good for testing xschem builds before install) or
  in ../xschem_library

--- 

- fixed an off-by-one error in selecting a random char from charset[] in random_string(),
  leading
  to terminating \0 sometimes chosen as part of the random string.

--- 

- tclsetvar() wrapper for all Tcl_SetVar() calls.
- ask_new_file() calls get_resolved_symbol(fullname) to reduce 
  filename to library/symbol if located in standard xschem library
  or just symbol.sym if in current directory, in order to avoid
  as long as possible absolute paths.
- xschem .selection and .clipboard files renamed to ~/.xschem_selection 
  and ~/.xschem_clipboard
- TCL XSCHEM_TMP_DIR created to indicate tmp directory (default /tmp) 
  this can be set in user's .xschem.
- store_polygon() was not propagating the .fill member from 'fill' property
  this resulted in no fill pattern on polygons with fill=true property set
  when changing polygon layer.
  (store.c, 20181002)
- removed all strcpy() calls, use my_strncpy()

--- 

- all Tcl_Eval(), Tcl_EvalEx() called with tcleval() that does error checking.
- all Tcl_GetVar replaced with tclgetvar.
- my_free() now frees the memory and sets ptr to NULL, called with &ptr.
- removed all sprintf, replaced with my_snprintf.
- remaining malloc()s replaced with my_malloc().
- undo/redo handling now done with popen()/pclose() instead of pipe(), fork(),
  dup2(), fdopen(), freopen(), waitpid(), for better portability.
- @#n:property syntax is accepted in print_tedax_element() for format string, 
  this allow to print in netlist attribute values specified on pins
  @#3:pinnumber --> print 'pinnumber' attribute set for pin #3 of symbol.
- removed some variable length arrays in token.c
- tcl make_symbol fixed t work on schematics located anywhere in the filesystem

--- 

- many static (char *name) pointers in functions replaced with 
  scoped arrays (char name[]) for efficiency reasons
  path arrays are of type 'char filename[PATH_MAX]'
- added ability to load schematics and components located anywhere in the filesystem
  for components the (libname/symbolname) is still supported but new syntax is 
  to specify relative or absolute names ([/][..../..../]symbol.sym) 
  if specified symbol is in the standard xschem libraries (XSCHEM_DESIGN_DIR)
  it is converted to library/symbol:
  Example: 
    /home/schippes/xschem_library/devices/npn.sym --> devices/npn
  If a symbol located in the current directory  is placed into the xschem window
  all its path components will be stripped off: 
  Example:
    /home/schippes/xschem-code/test.sym --> test.sym (if CWD is /home/schippes/xschem-code).
  next feature (still tbd) will be to search a list of paths for sym libraries.
- more reliable detection of PWD and HOME (getcwd, getenv, getpwuid)
- cleanup in tcl save & load dialogs, now we only have save_file_dialog and load_file_dialog.

--- 

- draw(): don't use spatial hash table for small schematics (<2000 instances, <2000nets).
- xschem now loads filenames with absolute paths, so any schematic (even outside
  XSCHEM_DESIGN_DIR) can be given.
- less usage of strlen() reusing size information already available
- get_tok_value() sets get_tok_value_size to the size of the returned token value.

--- 

- xschem now compiles with -std=c99 and 
- double fork method to spawn a new xschem instance to avoid zombies
- all snprintf calls wrapped in my_snprintf
- rint() replaced with round()
- some // comments changed in /* ... */
- my_strdup() returns size of dup'd string instead of void
- all strdup() calls wrapped into my_strdup() which in turn uses malloc() + memcpy()
- all strndup() replaced with my_strndup() which in turn uses malloc() + memcpy()
- all strcat() replaced with my_strcat() which uses realloc() and memcpy()
- all strcpy() replaced with memcpy() since size of src string is known.
- Corrected a long standing typo: FONTDESCENT+1i, where 1i is considered as imaginary
  number
  Thanks to Ian Van der Neut for pointing out the problem.
- removed mkstemp, mkdtemp, replaced with self made create_tmpfile and create_tmpdir
- added '%option never-interactive' in parselabel.l so it avoids usig fileno()
  which is not needed and creates portability issues
- cleanups in save/load/merge procedures

--- 

- flatten.awk changed to awk hasbang script instead of sh --> awk 

--- 

- pass PREFIX and LIBRARY_PREFIX from Makefile prefix and library_prefix variables
- check if symbol pointer is set in spatial hash table drawing (draw.c, tag 20180921)
- added some const type declarators: 
   *bus_hilight_lookup(const char *token...)
    const char *expandlabel(const char *s, int *m)
  and other const declarations here and there 
- save_ascii_string(): no trailing space added.
- load_symbol(): if symbol definition contains components link them with corresponding
  symbols
  (although a symbol should not contain nets / components), tag 20180921
- some comments / cleanups in xinit.c
- fixed menu accelerators shown in 'File' menu to reflect recent keybinding changes

--- 

2.4.9:
- ability to swap mouse buttons using tcl key_binding proc
  NOTE: it is not possible to replace Button1 since it is sent in Motion events as
  well.
- clear_drawing() did not delete spatial hash tables leading to segfaults when doing
  File-> New schematic
- swapped Button4/5 (wheel zoom)
- changed some key bindings to more standard values:
  - ctrl-shift-s --> Save As
  - ctrl-s --> Save
  - ctrl-o --> Open
  - ctrl-alt-s --> save as symbol
  - shift-s --> change element ordering
- fill=true property for polygons to indicate fill is wanted
  default polygons are not filled.
- tcl key_binding procedure allows to change/swap mouse buttons
- save.c: removed code duplication by creating a 'read_xschem_file() function that
  read files.
- removed some dead /commented old code
- get_tok_value(inst_ptr....prop_ptr, "name"...) replaced with inst_ptr[..].instname
  (20180911)
- fix crashing bug in hilight.c when instances with empty property string are traversed
  during a search
  20180906
- new '@#n format allowed for referencing a net attached to a pin in symbol format
  strings.
  This pattern can be used in 'format, 'vhdl_format', 'verilog_format', 'tedax_format'
  global attributes of symbols.
  This pattern is faster than the traditional '@@pin_name' syntax since xschem does
  not need to
  search all pins in symbol for a name matching 'pin_name'
  Example: verilog_format="assign @#2 = @#0 ;"
    in this case @#2 expands to the net name attached to pin stored at position 2
  (starting from 0) in xschem,
    (that is the third symbol pin), @#0 expands to net name attached to first pin
  of the symbol
- do not print escaping backslashes in print_verilog_primitive, print_verilog_primitive,
  (20180911)
- new '#@n:pin_attr' format allowed in text objects placed in symbols, this will
  expand
  to the value of attribute 'pin_attr' stored in the property string of the 'n-th'
  pin of symbol.
  Example: @#0:pinnumber
  if pinnumber of pin 0 is defined as 'pinnumber=1:4:9:12' and symbol instance name
  is 'U1:4'
  xschem will resolve slot information (4) and replace the '@#0:pinnumber' with '12'.
  this is used to correctly draw correct pin numbers for slotted devices.

2.4.8:
- added (experimental for now) tEDAx netlist export, this is a netlist format that
  the pcb-rnd printed board editor understands.
  sample test schematic included in the source distribution (pcb_test1.sch)
- better lookup of spice_ignore, verilog_ignore and vhdl_ignore for netlisting,
  after looking in instance properties look also in symbol definition.
- fixed a bug in TCL savefile procedure, where it refused to save a schematic
  in a library pointed to by a symlink
- Escape key no more closes a property edit dialog (proc text_line) if something
  has been written
  into it.

2.4.5:
- 20180208 fix crashing bug: delete node info if changing symbol
  if number of pins is different we must delete these data *before*
  changing ysmbol, otherwise i might end up deleting non allocated data.
Stefan, 20180417

2.4.4:
- improvements in spice.awk, do not clobber with user defined code 
- re-enabled backing store, (xserver takes care of saving obscured window portions)
  this was disabled to ensure correct response of XSCHEM to expose events after
  some changes in the drawing engine.
Stefan, 20180203

2.4.3:
- devices/code.sym component added: this component has a 'value' property that may
  be
  used to place arbitrary code (spice/verilog/VHDL code) into a schematic. Multiple
  'code.sym' components may be used, their 'value' properties will be concatenated
  into the resulting netlist. code may be entered by editing the value property
  with <shift-q>

2.4.2:
- delete objects (mainly for text) before overstriking with hilight color, this avoids
  ugly character borders of hilighted texts (antialiasing presumes you draw text
  
  on empty background)
- small bug fixes of regressions introduced by previous commit

2.4.1: 
- spatial hash iterator added in drawing engine when the viewing area is small compared
  to the total area of a freaking big schematic; using spatial hash the lookup of
  elements
  (instances and wires for now) that are in the viewing area is *much* faster.
  so we avoid lot of clip checks on the whole wire[] and inst_ptr[] arrays.
  When a full zoom is done (viewing area is big) we return to normal loop
  on the wire and inst_ptr arrays, since spatial hash gives no gain in this case.
  (20180104)
- some small glitches about not drawing small objects (for performance reasons) fixed.
  (20171206)
- some fixes in symbol editing: rename pins next to pin labels (20171221)
- fixed regresion in print_hilight_net() to recognize pin direction when creating
  pins
  from hilight nets (20171221)
- allow multi-instance primitive format specifications (verilog_format prop) using
  the
  #xxx#@name construct to build unique names for nodes and inst names,
  as done for spice primitives

2.4.0:
- some string overflow checks (schematic[])
- major speed improvement in instance wiring tool ('H' bindkey) for multiple selected
  instances.
- 'first_call' parameter in place_symbol() to speed up finding unique
  instance name in case of multiple placements of the same type.
- 'drill through' option in net highlight, (ctrl-alt-k key) this command
  will highlight a net passing through components with pins that have a
  'propagate_to' property set to the number of the pin to pass the
  highlight to.
  Example:
  if pin #0 on a resistor has 'propagate_to=1' property set
  then hilight net on pin 0 will propagate to pin #1.
  the reverse propagate_to may be set as well.

  propagate_to=1     propagate_to=0
  pin #0             pin #1
      o---/\/\/\/\---o

- correctly redraw selected objects when passing with selection rectangle
  over already selected items
- select_text and select_wire now have 'fast' param to avoid drawing information
  in window status line, this is used when doing block selection of multiple objects
  to make the process *much* faster
- skip drawing symbols whose bounding box in current zoom factor <0.3 pixels.
- fixed some wrong bbox() usage in edit_text_property
- performance improvements in prepare_netlist_structs when called for highlighting
  nets
- fixed a regression in copy_objects of polygons
- 'xschem' tcl command: print error message if unknow subcommand given
- fixed some regression in partial rectangle selections (select_box() )
- 'hash_prefix_unnamed_net' parameter in pin_node(), needed for correctly
  hashing unnamed nets for 'drill' hilight.
- added 'unselect' radio button in instance search tool (ctrl-f key)
- added 'layer' and 'font' members to text struct, caching the respective
  'layer=n and font=string' properties, to avoid calling get_tok_value
- more flexibility in 'attach_labels_to_inst ('H' key), allow to wire all
  selected instances without querying the user, option for user set rotated text
- performance optimization, do not call symbol_bbox on every full zoom
- create symbol pins from selected schematic pins (Alt-h key)
- Alt-s key (reload from disk) now correctly reloads symbol (.sym) file
  if editing a symbol.
- fullscreen key moved to Alt-Shift-F
- added Alt-h and Alt-r keys to flip and rotate objects around their anchor points
  
  while copying/moving
- performance optimization: skip drawing of objects that are too small in
  current zoom factor.
- added command' xschem set no_undo [01]' to disable/reenable undo.
- performance improvements in wirecheck(), skip wires that already have a .node field
- renamed functions in netlist.c for better understanding
- performance improvement, simplified and almost eliminated use of hash_lookup function
  (token.c)
  it is now used only to store instance names to allow collision checking in new_prop_string().
  hash_proplist() now only inserts instance name in hash table, rest of property
  string is skipped.
- new_prop_string, start checking from 0 instead of from 1 when looking for free
  instance
  name slots (x0 instead of x1 as first free name for subcircuit instances, for example)
- xschem.tcl: refer to $HOME/.clipboard.sch instead of $PWD/.clipboard.sch

2.3.7:
- do not recalculate symbol bounding box on any zoom / pan / draw operation, 
  do it when moving / changing props / deleting / loading / drawing selection.
- added a 'bus' int field in the wire struct, where the 'bus' property is cached
  this avoid many get_tok_value() calls on every draw() call.
- fixed a regression introduced by [20171104] in subst_token() [20171201]

2.3.6:
- some cleanups in the code, 
- performance optimization, do not call symbol_bbox() in view_zoom and view_unzoom,
  
- dim and bright colors (+ and - keys) 
- include/exclude background color in dim/bright operations (alt-c)
- cairo clipping implemented in bbox() so text will not be overstriked making it
  look bold
  when placing and deleting objects that partially overlap text.
- Dirty hack in callback() (TURBOX_FIX) to work-around bugs in the Exceed
  TurboX server. Include -DTURBOX_FIX in the Makefile if needed.
  without this hack repainting the window with the save_pixmap (FillTiled fill style)
  will sometimes not work, leaving garbage or empty areas.
- full precision in save operations (%.16g instead of %g), allowing *much* bigger
  drawing areas to be saved and restored without loss of precision.

2.3.5:
- proportional fonts now fully supported, text correctly aligned even on rotated
  objects
- postscript and svg print routines updated to render polygons.

2.3.4:
- fix zoom full function, expecially when zooming back
  from a very very deep zoom in.
- avoid calling cairo_text_extents() and cairo_set_font_size() for
  extremely large characters (this happens when doing an extreme zoom in)
  as this causes Floating point exceptions on older cairo versions
- enable constrained move (vertical/horizontal) when drawing polygons
- better text alignent on rotated objects, when non-zero cairo_vert_correct
  parameter is defined in ~/.xschem
- lock hsize and vsize when entering text with cairo enabled, since there is
  no option in cairo text for different x/y scaling.
- code cleanups

2.3.3:
- do not try to draw polygons that are offscreen (discard by
  checking bounding box) - faster and no arithetic int16 overflow
- copy /paste was not implemented yet for polygons - fixed.
- bug fix for copy/save to clipboard of polygons
- select_all() was not updated for polygons - fixed.
- fix an error in the tcl code that prevented saving to libraries
  pointed to by symlinks (20171119 tag in xschem.tcl)

2.3.2:
- added polygon graphic primitive in addition to lines, rectangles and text.
  ctrl-w command or menu 'Tools-> Insert Polygon'. Operation is concluded by
  closing the polygon, i.e. placing the last point over the first, or
  by hitting the 'Return' key.
- added font="font name" property for text objects, allowing to change
  font on specific text objects. Use only monospaced types, expecially
  if you plan to rotate or flip the text, as bounding box calculation is not
  accurate for proportional typefaces.
- performance improvement: do not call Fill drawing routines for shapes that
  are on layers with no visible fill pattern defined.
- the 'set cairo_vert_correct x' (with x=positive or negative number)
  can now be set in the .xschem file to any value, text bounding box is
  shifted accordingly. This allows to change the vertical alignment of fonts
  for best appearance.
- white and dark colorscheme toggle View->Toggle colorscheme, Shift-C key)
- added 'xschem toggle_colorscheme' command
- removed obsolete and deprecated Tcl_GlobalEval, replaced with Tcl_EvalEx
- Tcl_Eval()s referring to TCL global vars changed to Tcl_EvalEx, so we ensure the
  script is run in the global scope.
- print error message if execution of xschem.tcl fails due to errors in the tcl code
  before dying. this way we have a clue to fix the error.
- custom colorschemes can be set in the ~/.xschem file: 
    set cadlayers 22
    set light_colors {
     "#ffffff" "#0044ee" "#aaaaaa" "#222222" "#229900"
     "#bb2200" "#00ccee" "#ff0000" "#888800" "#00aaaa"
     "#880088" "#00ff00" "#0000cc" "#666600" "#557755"
     "#aa2222" "#7ccc40" "#00ffcc" "#ce0097" "#d2d46b"
     "#ef6158" "#fdb200" }
  
    set dark_colors {
     "#000000" "#00ccee" "#3f3f3f" "#cccccc" "#88dd00"
     "#bb2200" "#00ccee" "#ff0000" "#ffff00" "#ffffff"
     "#ff00ff" "#00ff00" "#0000cc" "#aaaa00" "#aaccaa"
     "#ff7777" "#bfff81" "#00ffcc" "#ce0097" "#d2d46b"
     "#ef6158" "#fdb200" }

2.3.0:
- Antialiased CAIRO text for all XSCHEM elements!!
  if variable HAS_CAIRO is set in the Makefile all text processing in XSCHEM
  will be done using the cairo library.
- all text elements may specify a 'layer=<number>' in the property string box
  to specify a user layer color (instead of the default TEXTLAYER) to draw
  the text. Available only if cairo fonts enabled.
- a new command is added:
     xschem set cairo_font_name {<font name>}
  will set the font to be used for text rendering. Use only monospaced fonts
  to allow proper bounding box calculations.
  Example:
     xschem set cairo_font_name {DejaVu Sans Mono}
- various improvements in drawing engine (redraw selected elements on Expose events,
  this is needed if the server does not provide backing store).
- configuration variables controlling cairo fonts, may be placed in ~/.xschem:
  #### scale all fonts by this number
  set cairo_font_scale 1.0
  #### scale line spacing by this number
  set cairo_font_line_spacing 1.0
  #### specify a font (Use only monospaced fonts!)
  set cairo_font_name {Liberation Mono}
  #### lift up text by some zoom-corrected pixels for
  #### better compatibility wrt no cairo version.
  #### USE WITH CAUTION!!! big values cause text to
  #### go beyond the calculated bouning box, leaving garbage
  #### on the screen when moving objects/redrawing.
  #### Useful values in the range [-1, 3]
  set cairo_vert_correct 1
- following commands added to xschem tcl command, to runtime change these behaviours.
  xschem set cairo_font_name
  xschem set cairo_font_scale
  xschem set cairo_font_line_spacing
  xschem set cairo_vert_correct
- various bug fixes due to *BIG* cairo commit.

2.2.5:
- **LONG** standing crashing bug fixed in token.c --> subst_token(), causing
  xschem to crash on unusually large token strings, this can happen if a generic
  text file is loaded as a component property, instead of the usual 
  "name=xyyy tok1=val1 tok=val2  ..." property strings. tag 20171104
- some other bug fixes (removed sprintf of a string into itself :-) )
- when pressing the 'LOAD' button in tcl-tk text entries to load a file, 
  place the file starting at the cursor position instead of at the beginning.
- when an instance has empty property string do *not* preload the edit property text
  widget with a copy of the property string of another instance found in the schematic.
  This creates the illusion that the selected instance has a property string while
  it does not.
- added @tcleval(<<tcl script>>) tag that can be used in 'format',
  'vhdl_format', 'verilog_format' strings to allow dynamic netlisting.
  <<tcl script>> can be any valid tcl code, two variables are defined
  in the script context: 'symname' and 'instname', these variables can
  be used to query instance or symbol properties with the 'xschem' 
  builtin command.
  in <<tcl script>> spaces and quotes must be escaped.
- Added 'xschem getprop' command:
  * xschem getprop instance <<instname>> <<property>>
    returns instance property
    example: xschem getprop instance m3 w --> returns mos width
  * xschem getprop instance_n <<instnum>> <<property>>
    same as previous, but use instance index number instead of name
  * xschem getprop symbol <<symname>> <<property>>
    returns symbol property
    example: xchem getprop symbol devices/nmos format 
             --> return format property string of symbol
  * xschem getprop instance_net <<instname>> <<pin>>
    returns net name attached to <<pin>>
- code cleanup (removed obsolete comments)

2.2.4:
- Better drawing when selecting by area / unselecting by area. Selection drag
  rectangle no more clutters the underlying already selected stuff.
  When unselecting (Shift-right button drag) do a live update of objects as soon
  as they get unselected.
- hilight_inside() function renamed to select_inside. the previous ambigous name
  really pissed me off.
Stefan 20171027
2.2.3:
- Added menu commands 'New Schematic'; and 'New Symbol' so the
  'current_type' global is correctly set for schematic or symbol 
  editing and saving.
- put global properties in G {} field when saving as symbol, take 
  global sym props from schprop, schvhdlprop, schverilogprop, the first
  one that contains 'format=' or 'type=' fields
Stefan 20171025
2.2.2:
- added easy keybind customization in the ~/.xschem init file. 
  See following examples:
  ## replace Ctrl-d with Escape (so you wont kill the program)
  set replace_key(Control-d) Escape
  ## swap w and W keybinds; Always specify Shift for capital letters
  set replace_key(Shift-W) w
  set replace_key(w) Shift-W
- Documentation added for keybind customization.
2.2.1: 
- some regressions in bindkeys fixed
2.2.0:
- Added description option -no-pie in Makefile.
  if a profiled executable is needed '-no-pie -pg' must be given.
  Position Independent Executable is now the default on Gcc, 
  but gprof will not work with this default.
- xschem will not descend or go up from a schematic hierarchy level
  if it has been modified, the user wants to save changes but the
  file can not be saved, due for example to permission problems.
  In this case the user either needs to save to a different place
  or say 'no' when prompted for save.
- bindkey 'W' 'show discrepancies of nets vs pin names on selected
  instance' changed to 'X'
- added the 'snap wire' function (uppercase) 'W' bindkey, the wire
  starts/ends from/to closest instance pin or net endpoint.
- fixes in the undo buffer, some actions were not undoable.
- bindkey 'H' for 'execute tclcommand or open file or
  http link (tclcomand or url properties) changed to 'ctrl-h'
- bindkey 'h' for 'attach nets to instance pin' changed to 'H'
- added constrained horizontal ('h' key) or vertical ('v' key)
  movement for wire, line, object copy/move.
- added menu entries for png/pdf/svg print, h/v constrained move,
  collapse wires, snap wire creation.
- '-z' xschem option now works again, this will start xschem with
  a rich rainbow colored layer set.
- Documentation updates.

2.1.14:
- Documentation updated (component pin auto labeling)
- added option '-S' to launch a simulation in batch command mode:
    'xschem -q -n -s -S examples/poweramp'
  will do a spice (-s) netlist (-n) and launch simulation (-S), then quits (-q) 
- added option '-W' to launch waveform viewer
    'xschem -q -s -W examples poweramp'
  will bring up the default spice wave viewer and quits.
- do not open a confitmation dialog asking to save if TCL 'xschem save' is given
  This will allow to build tcl scripts without needing user confirmation.
- tcl command 'xschem select' now allows to select an instance by specifying its
  instance name
  (instead of its numeric position into the inst_ptr array, still allowed)
    'xschem select xampli'
  will select instance 'xampli' if found in current schematic
- Added #define __USE_GNU to allow usage of 'strndup' function (POSIX 2008) in older
  systems
- improvements on the 'create pins to selected instance' command ('h' key) 
  a dialog box asks if pins need to be prefixed with a string, also allow
  to choose lab_pin or lab_wire net labels.
- Control-return and Escape bindkeys added to most toplevel dialog boxes
  to allow quickly closing unwanted dialog boxes.
- devices/lab_wire library symbol flipped horizontally to align orientation with
  lab_pin
- documentation about automatic symbol generation
- added a 'Make schematic from symbol' (Ctrl-l) menu entry.
  if one symbol is selected and this function is invoked (ctrl-l)
  a schematic view (.sch) will be automatically created from the
  symbol view. The schematic will only contain the interface
  pins / generics (if any). This will overwrite the symbol schematic
  view if it exist. A warning is issued requesting user confirmation.
- some cosmetic additions (dialog titles) in xschem.tcl
- fixed a crashing bug  when the 'create pins from highlight nets'
  (ctrl-j) is invoked after hilighting some nets and deleting a
  subset of those.

2.1.13:
- Added binding for the 'ghdl' free VHDL simulator, update your ~/.xschem file to
  set pathnames and defaults.
- added a VHDL testbench ('loading') in the examples library to test ghdl
- small fixes in the 'vhdl.awk' netlist post processor

2.1.12:
- fixed a bug causing incorrect VHDL netlist when bussed nets or bus slices are
  connected to primitive VHDL symbols with behaviour described with vhdl_format.
  Thanks to Svenn Are Bjerkem for reporting the problem.

2.1.11:
- When saving a newly created schematic (a schematic never saved before) using 
  the 'File->Save' function, revert to a 'Save As' operation asking for a correct
  filename
  Thanks to Svenn Are Bjerkem for pointing out the issue.

2.1.10: 
callback.c: 
- filter out NumLock status in event processing (20170511)
  Thanks to Saul Rodriguez for pointing out the issue.
- added 'Alt + Right-Mouse-Button' to activate the 'launcher' feature on
  selected component instance (also bound to 'H' key)

2.1.9:
- added 'propstring' search key to search patterns into the whole instance 
  property string instead of looking into single property tokens
- added the following instance properties:
  - 'url' : specify an url to open when pressing the launch ('H') key on an instance
  - 'program' : specify a program to use for opening the file (default if missing:
  
    xdg-open) 
  - 'tclcommand' : execute a tcl script
  these properties allow the creation of 'launchers', special instances that when
  triggered with the 'H' key perform some actions (open documentation, datasheets,
  
  view data, run special viewers, bindings to new simulators, ...)
  the special 'launcher' component in the 'devices' library can be used for this
  purpose.
  All these properties can be attached to any schematic component.
- fixes in the spice.awk netlister (20170407) fixed wrong netlisting for ammeters
  (current 
  probes) placed on bussed wires.
- token.c: get_tok_value: recognize escaped backslashes (\\), return single backslash
  (\)
  in the value string.
- .xschem config file: removed 'hspicerf_simulator', 'modelsim_simulator', added
  'spice_simulator', 'verilog_simulator', 'finesim_path', 'finesim_opts' variables.
  previously the default spice simulator was hspice and optionally hspicerf was used
  when
  hspicerf_simulator was set to 1. This is unflexible, the new approach is to specify
  
  the name of the simulator to use: (set spice_simulator hspice).
  Same approach for the verilog simulator (set verilog_simulator iverilog)
  Added finesim spice simulator (set the 'finesim_path' variable and set 
  spice_simulator to finesim).
- some cosmetic changes in the menus (radiobuttons for viewer/simulator/netlist format)

2.1.8: 
- Fixed a segfault regression, some minor fixes in the code.
- Fixed wrong search order of the .xschem file. The correct
  behavior is to look in ${PWD} for an initialization .xschem 
  file, and then (if not found) look in ${HOME}.
  Give up execution if ${HOME} is not defined.

2.1.7:
- Fixes some wrong references to symbols in the provided example schematics
- Small documentation updates.
