summaryrefslogtreecommitdiff
path: root/support/xtexshell/ldsetup.tcl
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/xtexshell/ldsetup.tcl
Initial commit
Diffstat (limited to 'support/xtexshell/ldsetup.tcl')
-rw-r--r--support/xtexshell/ldsetup.tcl177
1 files changed, 177 insertions, 0 deletions
diff --git a/support/xtexshell/ldsetup.tcl b/support/xtexshell/ldsetup.tcl
new file mode 100644
index 0000000000..9cea63f812
--- /dev/null
+++ b/support/xtexshell/ldsetup.tcl
@@ -0,0 +1,177 @@
+#******************************************************************************
+#***
+#*** This file is part of XTeXShell; see file xtexsh for details
+#*** Version 0.91 (21.2.94)
+#***
+#******************************************************************************
+
+#******************************************************************************
+#*** Load Setup and Shortcuts file ********************************************
+#******************************************************************************
+
+set setup0fname "$xtexsh_path/setup.orig"
+set setup1fname "$xtexsh_path/setup"
+set setup2fname "$home_dir/.xtexsh.setup"
+set setup3fname "./.xtexsh.setup"
+
+set short0fname "$xtexsh_path/shortcuts.orig"
+set short1fname "$xtexsh_path/shortcuts"
+set short2fname "$home_dir/.xtexsh.shortcuts"
+set short3fname "./.xtexsh.shortcuts"
+
+proc loadsetup {} {
+
+#*** Load setup file.
+
+ uplevel 1 {
+ if {[file exists "$setup1fname"]} {
+ source "$setup1fname"
+ } else {
+ source "$setup0fname"
+ }
+ if {[file exists "$setup2fname"]} {source "$setup2fname"}
+ if {[file exists "$setup3fname"]} {source "$setup3fname"}
+ }
+}
+
+
+proc writesetup {mode} {
+
+#*** Update setup file mode=0: local, mode=1: global
+#*** local: If setup-file doesn't exist, copy global, setup, setup.orig
+#*** global: If setup-file doesn't exist, copy setup, setup.orig
+
+ global wrtsmode boldl_font
+ global goto_command
+
+ set wrtsmode $mode
+
+ DisplayMsg "Writing Configuration file.\n Press any key to continue..." $boldl_font
+
+ uplevel 1 {
+ if {$wrtsmode==0} {
+ set setupfname "$setup3fname"
+ } else {
+ set setupfname "$setup2fname"
+ }
+
+#*** Does setup-file exist? If not, copy setup or setup.orig
+
+ if {![file exists "$setupfname"]} {
+ if {[file exists "$setup1fname"]} {
+ exec cp "$setup1fname" "$setupfname"
+ } else {
+ exec cp "$setup0fname" "$setupfname"
+ }
+ }
+
+#*** Generate list with variables to save in setup file
+
+ set setuplist ""
+ lvarpush setuplist "editor"
+ lvarpush setuplist "editmode"
+ lvarpush setuplist "editwrap"
+ lvarpush setuplist "edittrans"
+ lvarpush setuplist "editmode"
+
+#*** Create a copy of the setup file and open files for read and write
+
+ exec cp "$setupfname" "$setupfname.temp"
+ set infile [open $setupfname.temp "r"]
+ set outfile [open $setupfname "w"]
+
+#*** Read old setup file line by line and copy to new setup file
+#*** if line does not contain any words of setuplist
+
+ while {![eof $infile]} {
+ gets $infile inline
+ set flag 1
+ if {[string first "set" $inline] >= 0} {
+ foreach key $setuplist {
+ if {[string first " $key " $inline] >= 0} {
+ set flag 0
+ }
+ }
+ }
+ if {$flag} {
+ puts $outfile $inline
+ }
+ }
+
+#*** Now write values of variables in setuplist to setup-file
+
+ while {![lempty $setuplist]} {
+ set var [lvarpop setuplist]
+ eval set val \"\$$var\"
+ puts $outfile [format "set\t%-10s\t\"%s\"" $var $val]
+ }
+
+#*** Close files
+
+ close $infile
+ close $outfile
+ unlink -nocomplain "$setupfname.temp"
+ }
+
+ eval $goto_command
+ set goto_command ""
+}
+
+
+proc loadshortcuts {} {
+
+#*** Load shortcuts file
+
+ uplevel 1 {
+ if {[file exists "$short1fname"]} {
+ ReadShortCuts "$short1fname"
+ } else {
+ ReadShortCuts "$short0fname"
+ }
+
+ if {[file exists "$short2fname"]} {ReadShortCuts "$short2fname"}
+ if {[file exists "$short3fname"]} {ReadShortCuts "$short3fname"}
+ }
+}
+
+
+proc ReadShortCuts {fname} {
+
+#*** Read the shortcuts from file fname and generate menu buttons
+
+ global .menu.cuts.m
+ global textbuf
+
+#*** Delete old entries
+
+ .menu.cuts.m delete 0 last
+
+#*** Open shortcuts file
+
+ set fd [open "$fname" "r"]
+
+#*** Read line by line and check for :end and :endentry commands.
+
+ for {set mode 0} {[gets $fd line] != -1} {} {
+ if {[cequal ":entry" [lindex $line 0]]} {
+ set buf ""
+ set mode 1
+ lvarpop line 0
+ set entryname [string trim $line ""]
+ continue
+ }
+ if {[cequal ":endentry" [lindex $line 0]]} {
+ .menu.cuts.m add command -label "$entryname" -command "InsertEditor \{$buf\} "
+ set mode 0
+ continue
+ }
+ if {[cequal ":separator" [lindex $line 0]]} {
+ .menu.cuts.m add separator
+ continue
+ }
+ if {$mode} {
+ set buf "$buf\n$line"
+ }
+ }
+ close $fd
+} \ No newline at end of file