diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/xtexshell/ldsetup.tcl |
Initial commit
Diffstat (limited to 'support/xtexshell/ldsetup.tcl')
-rw-r--r-- | support/xtexshell/ldsetup.tcl | 177 |
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 |