diff --git a/doc/xschem_man/symbol_property_syntax.html b/doc/xschem_man/symbol_property_syntax.html
index 9f5bcfb8..3eb278f5 100644
--- a/doc/xschem_man/symbol_property_syntax.html
+++ b/doc/xschem_man/symbol_property_syntax.html
@@ -99,6 +99,9 @@ p{padding: 15px 30px 10px;}
template: Specifies default values for symbol parameters
+
+ select: specify an attribute value (not the attribute name) to select when editing properties of
+ a placed instance of the symbol. Specifying select=* will select all the attribute text.
The order these attributes appear in the property string is not important,
diff --git a/src/xschem.tcl b/src/xschem.tcl
index f8463729..0b6f4ab6 100644
--- a/src/xschem.tcl
+++ b/src/xschem.tcl
@@ -5689,6 +5689,9 @@ proc enter_text {textlabel {preserve_disabled disabled}} {
}
}
bind .dialog.txt {return_release %W; .dialog.buttons.ok invoke}
+ .dialog.txt tag add sel 1.0 {end - 1 chars}
+ .dialog.txt mark set insert 1.0
+ focus .dialog.txt
#grab set .dialog
tkwait window .dialog
return $retval
@@ -6514,22 +6517,28 @@ proc edit_prop {txtlabel} {
tkwait visibility .dialog
# select text after value= or lab= and place cursor just before selection
- set regx {value *= *("([^"]|(\\"))+"|[^ \t\n"]+)} ;# vim syntax fix "
- set regx1 {value *= *[^ \n]}
- set idx [.dialog.symprop search -regexp -nolinestop -count nchars $regx 1.0]
- .dialog.symprop search -regexp -nolinestop -count len $regx1 1.0
- incr len -1
- if {$idx eq {} } {
- set regx {lab *= *("([^"]|(\\"))+"|[^ \t\n"]+)} ;# vim syntax fix "
- set regx1 {lab *= *[^ \n]}
- set idx [.dialog.symprop search -regexp -nolinestop -count nchars $regx 1.0]
- .dialog.symprop search -regexp -nolinestop -count len $regx1 1.0
- incr len -1
- }
- if { $idx ne {} } {
- .dialog.symprop tag add sel "$idx + $len chars" "$idx + $nchars chars"
- .dialog.symprop mark set insert "$idx + $len chars"
- }
+
+ set sym_sel_attr [xschem getprop symbol $symbol select]
+ if {$sym_sel_attr eq {*}} {
+ .dialog.symprop tag add sel 1.0 {end - 1 chars}
+ .dialog.symprop mark set insert 1.0
+ } else {
+ foreach attr [list $sym_sel_attr value lab name] {
+ if {$attr eq {}} {continue}
+ set regx {}
+ set regx1 {}
+ append regx $attr { *= *("([^"]|(\\"))+"|[^ \t\n"]+)} ;# vim syntax fix "
+ append regx1 $attr { *= *[^ \n]}
+ set idx [.dialog.symprop search -regexp -nolinestop -count nchars $regx 1.0]
+ .dialog.symprop search -regexp -nolinestop -count len $regx1 1.0
+ incr len -1
+ if {$idx ne {}} break
+ }
+ if { $idx ne {} } {
+ .dialog.symprop tag add sel "$idx + $len chars" "$idx + $nchars chars"
+ .dialog.symprop mark set insert "$idx + $len chars"
+ }
+ }
focus .dialog.symprop
tkwait window .dialog
xschem set semaphore [expr {[xschem get semaphore] -1}]
diff --git a/xschem_library/ngspice/comp_ngspice.sym b/xschem_library/ngspice/comp_ngspice.sym
index 007eb77f..ca66a0ec 100644
--- a/xschem_library/ngspice/comp_ngspice.sym
+++ b/xschem_library/ngspice/comp_ngspice.sym
@@ -1,4 +1,4 @@
-v {xschem version=3.4.5 file_version=1.2
+v {xschem version=3.4.8RC file_version=1.3
*
* This file is part of XSCHEM,
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
@@ -23,9 +23,10 @@ G {}
K {type=subcircuit
format="@name @pinlist @symname OFFSET=@OFFSET AMPLITUDE=@AMPLITUDE GAIN=@GAIN ROUT=@ROUT COUT=@COUT"
template="name=x1 OFFSET=0 AMPLITUDE=5 GAIN=100 ROUT=1000 COUT=1p"
-}
+select=GAIN}
V {}
S {}
+F {}
E {}
L 4 -40 -50 -40 50 {}
L 4 -60 -30 -40 -30 {}
diff --git a/xschem_library/ngspice/solar_panel.sch b/xschem_library/ngspice/solar_panel.sch
index 6a383ee2..96b4e587 100644
--- a/xschem_library/ngspice/solar_panel.sch
+++ b/xschem_library/ngspice/solar_panel.sch
@@ -1,4 +1,4 @@
-v {xschem version=3.4.6 file_version=1.2
+v {xschem version=3.4.8RC file_version=1.3
*
* This file is part of XSCHEM,
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
@@ -25,6 +25,7 @@ G {}
K {}
V {}
S {}
+F {}
E {}
L 2 95 -1105 95 -875 {}
L 2 135 -1105 135 -875 {}
@@ -431,12 +432,12 @@ lab=TRIANG }
C {vsource.sym} 550 -790 0 0 {name=Vref value=7}
C {lab_pin.sym} 550 -760 0 0 {name=l17 lab=0 }
C {lab_pin.sym} 760 -720 0 0 {name=l13 lab=CTRL1 }
-C {comp_ngspice.sym} 660 -890 0 0 {name=x3 OFFSET=0.5 AMPLITUDE=1 ROUT=7k COUT=1n}
+C {comp_ngspice.sym} 660 -890 0 0 {name=x3 GAIN=100 OFFSET=0.5 AMPLITUDE=1 ROUT=7k COUT=1n}
C {lab_pin.sym} 550 -860 0 0 {name=l16
lab=REF}
C {lab_pin.sym} 550 -920 0 0 {name=l15 lab=LED}
C {lab_pin.sym} 830 -890 0 1 {name=l18 lab=LEVEL}
-C {comp_ngspice.sym} 950 -1000 0 0 {name=x4 OFFSET=0.5 AMPLITUDE=1 ROUT=1 COUT=1p}
+C {comp_ngspice.sym} 950 -1000 0 0 {name=x4 GAIN=100 OFFSET=0.5 AMPLITUDE=1 ROUT=1 COUT=1p}
C {lab_pin.sym} 1060 -1000 0 1 {name=l19 lab=CTRL1 }
C {lab_pin.sym} 160 -450 0 0 {name=l20 lab=SUN }
C {spice_probe.sym} 850 -1030 0 1 {name=p4 analysis=tran}