From bcadce4fbedde0408eef2632ce2198e7969742bf Mon Sep 17 00:00:00 2001 From: Maxim Likhachev Date: Wed, 23 Oct 2019 09:33:11 +0500 Subject: [PATCH] Removed unused configuration files --- etc/soft/mc/Tree | 1 - etc/soft/mc/bindings | 576 --- etc/soft/mc/cedit/cooledit.clip | 3 - etc/soft/mc/cedit/cooledit.macros | 0 etc/soft/mc/cedit/edit.indent.rc | 31 - etc/soft/mc/cedit/edit.spell.rc | 11 - etc/soft/mc/filehighlight.ini | 44 - etc/soft/mc/filepos | 304 -- etc/soft/mc/ini | 152 - etc/soft/mc/ini.default | 110 - etc/soft/mc/ini.koorg | 143 - etc/soft/mc/mc.ext | 747 --- etc/soft/mc/skins/dark.ini | 151 - etc/soft/mc/skins/darkfar.ini | 150 - etc/soft/mc/skins/default.ini | 138 - etc/soft/mc/skins/double-lines.ini | 137 - etc/soft/mc/skins/featured.ini | 156 - etc/soft/mc/skins/gotar.ini | 131 - etc/soft/mc/skins/mc46.ini | 129 - etc/soft/mc/skins/modarcon16-defbg.ini | 182 - etc/soft/mc/skins/modarcon16.ini | 182 - etc/soft/mc/skins/modarcon16root-defbg.ini | 182 - etc/soft/mc/skins/modarcon16root.ini | 182 - etc/soft/mc/skins/modarin256-defbg.ini | 182 - etc/soft/mc/skins/modarin256.ini | 182 - etc/soft/mc/skins/modarin256root-defbg.ini | 182 - etc/soft/mc/skins/modarin256root.ini | 182 - etc/soft/mc/skins/nicedark.ini | 143 - etc/soft/mc/skins/sand256.ini | 201 - etc/soft/mc/skins/x.ini | 192 - etc/soft/mc/skins/xoria256.ini | 181 - etc/soft/mc_new/Tree | 1 - etc/soft/mc_new/filehighlight.ini | 44 - etc/soft/mc_new/ini | 194 - etc/soft/mc_new/mc.ext | 742 --- etc/soft/mc_new/skins/dark.ini | 151 - etc/soft/mc_new/skins/darkfar.ini | 150 - etc/soft/mc_new/skins/default.ini | 138 - etc/soft/mc_new/skins/double-lines.ini | 137 - etc/soft/mc_new/skins/featured.ini | 156 - etc/soft/mc_new/skins/gotar.ini | 131 - etc/soft/mc_new/skins/mc46.ini | 129 - etc/soft/mc_new/skins/modarcon16-defbg.ini | 182 - etc/soft/mc_new/skins/modarcon16.ini | 182 - etc/soft/mc_new/skins/modarcon16root-defbg.ini | 182 - etc/soft/mc_new/skins/modarcon16root.ini | 182 - etc/soft/mc_new/skins/modarin256-defbg.ini | 182 - etc/soft/mc_new/skins/modarin256.ini | 182 - etc/soft/mc_new/skins/modarin256root-defbg.ini | 182 - etc/soft/mc_new/skins/modarin256root.ini | 182 - etc/soft/mc_new/skins/nicedark.ini | 143 - etc/soft/mc_new/skins/sand256.ini | 201 - etc/soft/mc_new/skins/x.ini | 192 - etc/soft/mc_new/skins/xoria256.ini | 181 - etc/soft/nagelfar/COPYING | 339 -- etc/soft/nagelfar/README.txt | 1 - etc/soft/nagelfar/doc/README.txt | 106 - etc/soft/nagelfar/doc/call-by-name.txt | 34 - etc/soft/nagelfar/doc/codecoverage.txt | 104 - etc/soft/nagelfar/doc/inlinecomments.txt | 74 - etc/soft/nagelfar/doc/messages.txt | 36 - etc/soft/nagelfar/doc/syntaxdatabases.txt | 45 - etc/soft/nagelfar/doc/syntaxtokens.txt | 67 - etc/soft/nagelfar/misctests/test.syntax | 3 - etc/soft/nagelfar/misctests/test.tcl | 93 - etc/soft/nagelfar/nag | 5728 ------------------------ etc/soft/nagelfar/nagelfar.syntax | 40 - etc/soft/nagelfar/nagelfar.tcl | 5726 ----------------------- etc/soft/nagelfar/nagelfar_changes | 305 -- etc/soft/nagelfar/syntaxbuild.tcl | 808 ---- etc/soft/nagelfar/syntaxdb.tcl | 934 ---- etc/soft/nagelfar/syntaxdb84.tcl | 524 --- etc/soft/nagelfar/syntaxdb86.tcl | 1029 ----- etc/soft/packages.list | 1 + 74 files changed, 1 insertion(+), 25429 deletions(-) delete mode 100644 etc/soft/mc/Tree delete mode 100644 etc/soft/mc/bindings delete mode 100644 etc/soft/mc/cedit/cooledit.clip delete mode 100644 etc/soft/mc/cedit/cooledit.macros delete mode 100755 etc/soft/mc/cedit/edit.indent.rc delete mode 100755 etc/soft/mc/cedit/edit.spell.rc delete mode 100644 etc/soft/mc/filehighlight.ini delete mode 100644 etc/soft/mc/filepos delete mode 100644 etc/soft/mc/ini delete mode 100644 etc/soft/mc/ini.default delete mode 100644 etc/soft/mc/ini.koorg delete mode 100644 etc/soft/mc/mc.ext delete mode 100644 etc/soft/mc/skins/dark.ini delete mode 100644 etc/soft/mc/skins/darkfar.ini delete mode 100644 etc/soft/mc/skins/default.ini delete mode 100644 etc/soft/mc/skins/double-lines.ini delete mode 100644 etc/soft/mc/skins/featured.ini delete mode 100644 etc/soft/mc/skins/gotar.ini delete mode 100644 etc/soft/mc/skins/mc46.ini delete mode 100644 etc/soft/mc/skins/modarcon16-defbg.ini delete mode 100644 etc/soft/mc/skins/modarcon16.ini delete mode 100644 etc/soft/mc/skins/modarcon16root-defbg.ini delete mode 100644 etc/soft/mc/skins/modarcon16root.ini delete mode 100644 etc/soft/mc/skins/modarin256-defbg.ini delete mode 100644 etc/soft/mc/skins/modarin256.ini delete mode 100644 etc/soft/mc/skins/modarin256root-defbg.ini delete mode 100644 etc/soft/mc/skins/modarin256root.ini delete mode 100644 etc/soft/mc/skins/nicedark.ini delete mode 100644 etc/soft/mc/skins/sand256.ini delete mode 100644 etc/soft/mc/skins/x.ini delete mode 100644 etc/soft/mc/skins/xoria256.ini delete mode 100644 etc/soft/mc_new/Tree delete mode 100644 etc/soft/mc_new/filehighlight.ini delete mode 100644 etc/soft/mc_new/ini delete mode 100644 etc/soft/mc_new/mc.ext delete mode 100644 etc/soft/mc_new/skins/dark.ini delete mode 100644 etc/soft/mc_new/skins/darkfar.ini delete mode 100644 etc/soft/mc_new/skins/default.ini delete mode 100644 etc/soft/mc_new/skins/double-lines.ini delete mode 100644 etc/soft/mc_new/skins/featured.ini delete mode 100644 etc/soft/mc_new/skins/gotar.ini delete mode 100644 etc/soft/mc_new/skins/mc46.ini delete mode 100644 etc/soft/mc_new/skins/modarcon16-defbg.ini delete mode 100644 etc/soft/mc_new/skins/modarcon16.ini delete mode 100644 etc/soft/mc_new/skins/modarcon16root-defbg.ini delete mode 100644 etc/soft/mc_new/skins/modarcon16root.ini delete mode 100644 etc/soft/mc_new/skins/modarin256-defbg.ini delete mode 100644 etc/soft/mc_new/skins/modarin256.ini delete mode 100644 etc/soft/mc_new/skins/modarin256root-defbg.ini delete mode 100644 etc/soft/mc_new/skins/modarin256root.ini delete mode 100644 etc/soft/mc_new/skins/nicedark.ini delete mode 100644 etc/soft/mc_new/skins/sand256.ini delete mode 100644 etc/soft/mc_new/skins/x.ini delete mode 100644 etc/soft/mc_new/skins/xoria256.ini delete mode 100644 etc/soft/nagelfar/COPYING delete mode 100644 etc/soft/nagelfar/README.txt delete mode 100644 etc/soft/nagelfar/doc/README.txt delete mode 100644 etc/soft/nagelfar/doc/call-by-name.txt delete mode 100644 etc/soft/nagelfar/doc/codecoverage.txt delete mode 100644 etc/soft/nagelfar/doc/inlinecomments.txt delete mode 100644 etc/soft/nagelfar/doc/messages.txt delete mode 100644 etc/soft/nagelfar/doc/syntaxdatabases.txt delete mode 100644 etc/soft/nagelfar/doc/syntaxtokens.txt delete mode 100644 etc/soft/nagelfar/misctests/test.syntax delete mode 100644 etc/soft/nagelfar/misctests/test.tcl delete mode 100755 etc/soft/nagelfar/nag delete mode 100644 etc/soft/nagelfar/nagelfar.syntax delete mode 100755 etc/soft/nagelfar/nagelfar.tcl delete mode 100644 etc/soft/nagelfar/nagelfar_changes delete mode 100644 etc/soft/nagelfar/syntaxbuild.tcl delete mode 100644 etc/soft/nagelfar/syntaxdb.tcl delete mode 100644 etc/soft/nagelfar/syntaxdb84.tcl delete mode 100644 etc/soft/nagelfar/syntaxdb86.tcl diff --git a/etc/soft/mc/Tree b/etc/soft/mc/Tree deleted file mode 100644 index 1d9672d..0000000 --- a/etc/soft/mc/Tree +++ /dev/null @@ -1 +0,0 @@ -Midnight Commander TreeStore v 2.0 diff --git a/etc/soft/mc/bindings b/etc/soft/mc/bindings deleted file mode 100644 index 085e7d0..0000000 --- a/etc/soft/mc/bindings +++ /dev/null @@ -1,576 +0,0 @@ -# Midnight Commander 3.0 extension file -# Warning: Structure of this file has changed completely with version 3.0 -# -# All lines starting with # or empty lines are thrown away. -# Lines starting in the first column should have following format: -# -# keyword/descNL, i.e. everything after keyword/ until new line is desc -# -# keyword can be: -# -# shell (desc is, when starting with a dot, any extension (no wildcars), -# i.e. matches all the files *desc . Example: .tar matches *.tar; -# if it doesn't start with a dot, it matches only a file of that name) -# -# regex (desc is an extended regular expression) -# Please note that we are using the GNU regex library and thus -# \| matches the literal | and | has special meaning (or) and -# () have special meaning and \( \) stand for literal ( ). -# -# type (file matches this if `file %f` matches regular expression desc -# (the filename: part from `file %f` is removed)) -# -# directory (matches any directory matching regular expression desc) -# -# include (matches an include directive) -# -# default (matches any file no matter what desc is) -# -# Other lines should start with a space or tab and should be in the format: -# -# keyword=commandNL (with no spaces around =), where keyword should be: -# -# Open (if the user presses Enter or doubleclicks it), -# -# View (F3), Edit (F4) -# -# Include is the keyword used to add any further entries from an include/ -# section -# -# command is any one-line shell command, with the following substitutions: -# -# %% -> % character -# %p -> name of the current file (without path, but pwd is its path) -# %f -> name of the current file. Unlike %p, if file is located on a -# non-local virtual filesystem, i.e. either tarfs, mcfs or ftpfs, -# then the file will be temporarily copied into a local directory -# and %f will be the full path to this local temporal file. -# If you don't want to get a local copy and want to get the -# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then -# use %d/%p instead of %f. -# %d -> name of the current directory (pwd, without trailing slash) -# %s -> "selected files", i.e. space separated list of tagged files if any -# or name of the current file -# %t -> list of tagged files -# %u -> list of tagged files (they'll be untaged after the command) -# -# (If these 6 letters are in uppercase, they refer to the other panel. -# But you shouldn't have to use it in this file.) -# -# -# %cd -> the rest is a path mc should change into (cd won't work, since it's -# a child process). %cd handles even vfs names. -# -# %view -> the command you type will be piped into mc's internal file viewer -# if you type only the %view and no command, viewer will load %f file -# instead (i.e. no piping, so it is different to %view cat %f) -# %view may be directly followed by {} with a list of any of -# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for -# text using backspace for bold and underscore) and unform -# (no highlighting for nroff sequences) separated by commas. -# -# %var -> You use it like this: %var{VAR:default}. This macro will expand -# to the value of the VAR variable in the environment if it's set -# otherwise the value in default will be used. This is similar to -# the Bourne shell ${VAR-default} construct. -# -# Rules are applied from top to bottom, thus the order is important. -# If some actions are missing, search continues as if this target didn't -# match (i.e. if a file matches the first and second entry and View action -# is missing in the first one, then on pressing F3 the View action from -# the second entry will be used. default should catch all the actions. -# -# Any new entries you develop for you are always welcome if they are -# useful on more than one system. You can send your modifications -# by e-mail to mc-devel@gnome.org - - -### Changes ### -# -# Reorganization: 2000-05-01 Michal Svec - - -### TODO ### -# -# Postscript Open: ps2svga [gs -DEVICE=jpeg|zgv or something] -# Images asciiview -# -# All X Apps [Nothing/Warning] if no DISPLAY -# Not found [Default/Warning] -# Empty Output [Default/Warning] -# Edit: CopyOut+EDIT+CopyIn -# Security Check gzip/bzip EDIT (mktemp) -# -# Maybe: Open/XOpen/GOpen/KOpen/... for Console/X/GNOME/KDE/etc. - - -### Archives ### - -# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk -regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk$ - Open=%cd %p#utar - View=%view{ascii} gzip -dc %f 2>/dev/null | tar tvvf - - -regex/\.tar\.bz$ - # Open=%cd %p#utar - View=%view{ascii} bzip -dc %f 2>/dev/null | tar tvvf - - -regex/\.t(ar\.bz2|bz|b2|bz2)$ - Open=%cd %p#utar - View=%view{ascii} bzip2 -dc %f 2>/dev/null | tar tvvf - - -# .tar.lzma, .tlz -regex/\.t(ar\.lzma|lz)$ - Open=%cd %p#utar - View=%view{ascii} lzma -dc %f 2>/dev/null | tar tvvf - - -# .tar.F - used in QNX -regex/\.tar\.F$ - # Open=%cd %p#utar - View=%view{ascii} freeze -dc %f 2>/dev/null | tar tvvf - - -# .qpr/.qpk - QNX Neutrino package installer files -regex/\.(qp[rk])$ - Open=%cd %p#utar - View=%view{ascii} gzip -dc %f 2>/dev/null | tar tvvf - - -# tar -regex/\.(tar|TAR)$ - Open=%cd %p#utar - View=%view{ascii} tar tvvf %f - -# lha -type/^LHa\ .*archive - Open=%cd %p#ulha - View=%view{ascii} lha l %f - -# arj -regex/\.a(rj|[0-9][0-9])$ - Open=%cd %p#uarj - View=%view{ascii} unarj l %f - -# ha -regex/\.([Hh][Aa])$ - Open=%cd %p#uha - View=%view{ascii} ha lf %f - -# rar -regex/\.[rR]([aA][rR]|[0-9][0-9])$ - Open=%cd %p#urar - View=%view{ascii} rar v -c- %f - -# ALZip -regex/\.(alz|ALZ)$ - Open=%cd %p#ualz - View=%view{ascii} unalz -l %f - -# cpio -shell/.cpio.Z - Open=%cd %p#ucpio - View=%view{ascii} gzip -dc '%f' | cpio -itv 2>/dev/null - -shell/.cpio.gz - Open=%cd %p#ucpio - View=%view{ascii} gzip -dc '%f' | cpio -itv 2>/dev/null - -shell/.cpio - Open=%cd %p#ucpio - View=%view{ascii} cpio -itv <'%f' 2>/dev/null - -# ls-lR -regex/(^|\.)ls-?lR(\.(bz2|gz|Z))?$ - Open=%cd %p#lslR - -# patch -regex/\.(diff|patch)(\.(bz2|gz|Z))?$ - Open=%cd %p#patchfs - -# ar library -regex/\.s?a$ - Open=%cd %p#uar - #Open=%view{ascii} ar tv %f - View=%view{ascii} file %f && nm %f - -# trpm -regex/\.trpm$ - Open=%cd %p#trpm - View=%view{ascii} rpm -qivl --scripts `basename %p .trpm` - -# RPM packages (SuSE uses *.spm for source packages) -regex/\.(rpm|spm)$ - Open=%cd %p#rpm - View=%view{ascii} if rpm --nosignature --version >/dev/null 2>&1; then RPM="rpm --nosignature" ; else RPM="rpm" ; fi ; $RPM -qivlp --scripts %f - -# deb -regex/\.u?deb$ - Open=%cd %p#deb - View=%view{ascii} dpkg-deb -I %f && echo && dpkg-deb -c %f - -# ISO9660 -regex/\.iso$ - Open=%cd %p#iso9660 - View=%view{ascii} isoinfo -l -i %f - -# 7zip archives (they are not man pages) -shell/.7z - Open=%cd %p#u7z - View=%view{ascii} 7za l %f 2>/dev/null - -# Mailboxes -type/^ASCII\ mail\ text - Open=%cd %p#mailfs - - -### Sources ### - -# C -shell/.c - Open=%var{EDITOR:vi} %f - -# Fortran -shell/.f - Open=%var{EDITOR:vi} %f - -# Header -regex/\.(h|hpp)$ - Open=%var{EDITOR:vi} %f - -# Object -type/^ELF - #Open=%var{PAGER:more} %f - View=%view{ascii} file %f && nm %f - -# Asm -shell/.s - Open=%var{EDITOR:vi} %f - -# C++ -regex/\.(C|cc|cpp)$ - Open=%var{EDITOR:vi} %f - - -### Documentation ### - -# Texinfo -regex/\.(te?xi|texinfo)$ - -# GNU Info page -type/^Info\ text - Open=info -f %f - -shell/.info - Open=info -f %f - -# Manual page -# Exception - .so libraries are not manual pages -regex/\.(so|so\.[0-9\.]*)$ - View=%view{ascii} file %f && nm %f - -regex/(([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])|\.man)$ - Open=case %d/%f in */log/*|*/logs/*) cat %f ;; *) nroff -c -Tlatin1 -mandoc %f ;; esac | %var{PAGER:more} - View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) cat %f ;; *) nroff -c -Tlatin1 -mandoc %f ;; esac - -# Perl pod page -shell/.pod - Open=pod2man %f | nroff -c -Tlatin1 -mandoc | %var{PAGER:more} - View=%view{ascii,nroff} pod2man %f | nroff -c -Tlatin1 -mandoc - -# Troff with me macros. -# Exception - "read.me" is not a nroff file. -shell/read.me - Open= - View= - -shell/.me - Open=nroff -c -Tlatin1 -me %f | %var{PAGER:more} - View=%view{ascii,nroff} nroff -c -Tlatin1 -me %f - -# Troff with ms macros. -shell/.ms - Open=nroff -c -Tlatin1 -ms %f | %var{PAGER:more} - View=%view{ascii,nroff} nroff -c -Tlatin1 -ms %f - -# Manual page - compressed -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.g?[Zz]$ - Open=case %d/%f in */log/*|*/logs/*) gzip -dc %f ;; *) gzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} - View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) gzip -dc %f ;; *) gzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz$ - Open=case %d/%f in */log/*|*/logs/*) bzip -dc %f ;; *) bzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} - View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) bzip -dc %f ;; *) bzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz2$ - Open=case %d/%f in */log/*|*/logs/*) bzip2 -dc %f ;; *) bzip2 -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} - View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) bzip2 -dc %f ;; *) bzip2 -dc %f | nroff -c -Tlatin1 -mandoc ;; esac - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$ - Open=case %d/%f in */log/*|*/logs/*) lzma -dc %f ;; *) lzma -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} - View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) lzma -dc %f ;; *) lzma -dc %f | nroff -c -Tlatin1 -mandoc ;; esac - - -### Images ### - -type/^GIF - Include=image - -type/^JPEG - Include=image - -type/^PC\ bitmap - Include=image - -type/^PNG - Include=image - -type/^TIFF - Include=image - -type/^PBM - Include=image - -type/^PGM - Include=image - -type/^PPM - Include=image - -type/^Netpbm - Include=image - -shell/.xcf - Open=(gimp %f &) - -shell/.xbm - Open=bitmap %f - -shell/.xpm - Include=image - View=sxpm %f - -include/image - Open=if [ "$DISPLAY" = "" ]; then asciiview %f; else (display %f >/dev/null 2>&1 &); fi - View=%view{ascii} identify %f - #View=%view{ascii} asciiview %f - - -### Sound files ### - -regex/\.([wW][aA][vV]|[sS][nN][dD]|[vV][oO][cC]|[aA][uU]|[sS][mM][pP]|[aA][iI][fF][fF]|[sS][nN][dD])$ - Open=if [ "$DISPLAY" = "" ]; then play %f; else (xmms %f >/dev/null 2>&1 &); fi - -regex/\.([mM][oO][dD]|[sS]3[mM]|[xX][mM]|[iI][tT]|[mM][tT][mM]|669|[sS][tT][mM]|[uU][lL][tT]|[fF][aA][rR])$ - Open=mikmod %f - #Open=tracker %f - -regex/\.([wW][aA][wW]22)$ - Open=vplay -s 22 %f - -regex/\.([mM][pP]3)$ - Open=if [ "$DISPLAY" = "" ]; then mpg123 %f; else if [ -z "`which realplay`" ]; then (xmms -e %f 1>/dev/null 2>&1 &); else (realplay %f >/dev/null 2>&1 &); fi; fi - View=%view{ascii} mpg123 -vtn1 %f 2>&1 | sed -n '/^Title/,/^Comment/p;/^MPEG/,/^Audio/p' - -regex/\.([oO][gG][gG])$ - Open=if [ "$DISPLAY" = "" ]; then ogg123 %f; else (xmms -e %f >/dev/null 2>&1 &); fi - View=%view{ascii} ogginfo %s - -regex/\.([mM][iI][dD][iI]?|[rR][mM][iI][dD]?)$ - Open=timidity %f - -regex/\.([wW][mM][aA])$ - Open=mplayer -vo null %f - View=%view{ascii} mplayer -quiet -slave -frames 0 -vo null -ao null -identify %f 2>/dev/null | tail +13 || file %f - - -### Play lists ### - -regex/\.([mM]3[uU]|[pP][lL][sS])$ - Open=if [ -z "$DISPLAY" ]; then mplayer -vo null -playlist %f; else (xmms -p %f >/dev/null 2>&1 &); fi - - -### Video ### - -regex/\.([aA][vV][iI])$ - Include=video - -regex/\.([aA][sS][fFxX])$ - Include=video - -regex/\.([dD][iI][vV][xX])$ - Include=video - -regex/\.([mM][oO][vV]|[qQ][tT])$ - Include=video - -regex/\.([mM][pP]4|[mM][pP][eE]?[gG])$ - Include=video - -regex/\.([vV][oO][bB])$ - Include=video - -regex/\.([wW][mM][vV])$ - Include=video - -regex/\.([oO][gG][mM])$ - Include=video - -regex/\.([rR][aA]?[mM])$ - Open=(realplay %f >/dev/null 2>&1 &) - -regex/\.flv - Open=(mplayer %f >/dev/null 2>&1 &) - -include/video - Open=(mplayer %f >/dev/null 2>&1 &) - #Open=(gtv %f >/dev/null 2>&1 &) - #Open=(xanim %f >/dev/null 2>&1 &) - - -### Documents ### - -# Postscript -type/^PostScript - Open=(gv %f >/dev/null 2>&1 &) - View=%view{ascii} ps2ascii %f - - -# PDF -type/^PDF - Open=(zathura %f >/dev/null 2>&1 &) - #Open=(acroread %f &) - #Open=(ghostview %f &) - View=%view{ascii} pdftotext %f - - -# The following code very ugly and should not be taken as example. -# It should be cleaned up when the new format of mc.ext is developed. - -# html -regex/\.([hH][tT][mM][lL]?)$ - Open=(if test -n "konqueror" && test -n "$DISPLAY"; then (konqueror file://%d/%p &) 1>&2; else links %f || lynx -force_html %f || ${PAGER:-more} %f; fi) 2>/dev/null - View=%view{ascii} lynx -dump -force_html %f - -# StarOffice 5.2 -shell/.sdw - Open=(ooffice %f >/dev/null 2>&1 &) - -# StarOffice 6 and OpenOffice.org formats -regex/\.(odb|odc|odf|odg|odi|odm|odp|ods|odt|otg|oth|otp|ots|ott|sda|sdc|sdd|sdp|sds|sdw|sgl|smf|stc|std|sti|stw|sxc|sxd|sxg|sxi|sxm|sxw|vor)$ - Open=(ooffice %f >/dev/null 2>&1 &) - View=%view{ascii} unzip -p %f content.xml | o3totxt - -# AbiWord -shell/.abw - Open=if which abiword ; then (abiword %f >/dev/null 2>&1 &); else (ooffice %f >/dev/null 2>&1 &); fi >/dev/null - -# Microsoft Word Document -type/^Microsoft\ Office\ Document - Open=if which abiword ; then (abiword %f >/dev/null 2>&1 &); else (ooffice %f >/dev/null 2>&1 &); fi >/dev/null - View=%view{ascii} wvText %f - || strings %f - -type/^Microsoft\ Word - Open=if which abiword ; then (abiword %f >/dev/null 2>&1 &); else (ooffice %f >/dev/null 2>&1 &); fi >/dev/null - View=%view{ascii} wvText %f - || strings %f - -regex/\.([Dd]ot|DOT|[Ww]ri|WRI)$ - Open=if which abiword ; then (abiword %f >/dev/null 2>&1 &); else (OOo %f >/dev/null 2>&1 &); fi >/dev/null - View=%view{ascii} wvText %f - || strings %f - -# RTF document -regex/\.([rR][tT][fF])$ - Open=if which abiword ; then (abiword %f >/dev/null 2>&1 &); else (ooffice %f >/dev/null 2>&1 &); fi >/dev/null - -# Microsoft Excel Worksheet -regex/\.([xX][lL][sSwW])$ - Open=if which gnumeric ; then (gnumeric %f >/dev/null 2>&1 &); else (ooffice %f >/dev/null 2>&1 &); fi >/dev/null - View=%view{ascii} xls2csv %f || strings %f -type/^Microsoft\ Excel - Open=if which gnumeric ; then (gnumeric %f >/dev/null 2>&1 &); else (ooffice %f >/dev/null 2>&1 &); fi >/dev/null - View=%view{ascii} xls2csv %f || strings %f - -# Framemaker -type/^FrameMaker - Open=fmclient -f %f - -# DVI -regex/\.([dD][vV][iI])$ - Open=if [ x$DISPLAY = x ]; then dvisvga %f; else (xdvi %f >/dev/null 2>&1 &); fi - View=%view{ascii} dvi2tty %f - -# TeX -regex/\.([Tt][Ee][Xx])$ - Open=%var{EDITOR:vi} %f - -# DJVU -regex/\.(djvu|DJVU)$ - Open=djview %f >/dev/null 2>&1 & - -### Miscellaneous ### - -# Makefile -regex/[Mm]akefile$ - Open=make -f %f %{Enter parameters} - -# Imakefile -shell/Imakefile - Open=xmkmf -a - -# Makefile.PL (MakeMaker) -regex/^Makefile.(PL|pl)$ - Open=%var{PERL:perl} %f - -# dbf -regex/\.([dD][bB][fF])$ - Open=%view{ascii} dbview %f - View=%view{ascii} dbview -b %f - -# REXX script -regex/\.(rexx?|cmd)$ - Open=rexx %f %{Enter parameters};echo "Press ENTER";read y - - -### Plain compressed files ### - -# zip -type/^([Zz][Ii][Pp])\ archive - Open=%cd %p#uzip - View=%view{ascii} unzip -v %f - -# zoo -regex/\.([Zz][Oo][Oo])$ - Open=%cd %p#uzoo - View=%view{ascii} zoo l %f - -# gzip -type/^gzip - Open=gzip -dc %f | %var{PAGER:more} - View=%view{ascii} gzip -dc %f 2>/dev/null - -# bzip2 -type/^bzip2 - Open=bzip2 -dc %f | %var{PAGER:more} - View=%view{ascii} bzip2 -dc %f 2>/dev/null - -# bzip -type/^bzip - Open=bzip -dc %f | %var{PAGER:more} - View=%view{ascii} bzip -dc %f 2>/dev/null - -# compress -type/^compress - Open=gzip -dc %f | %var{PAGER:more} - View=%view{ascii} gzip -dc %f 2>/dev/null - -# lzma -regex/\.lzma$ - Open=lzma -dc %f | %var{PAGER:more} - View=%view{ascii} lzma -dc %f 2>/dev/null - - -### Default ### - -# Default target for anything not described above -default/* - Open= - View= - - -### EOF ### diff --git a/etc/soft/mc/cedit/cooledit.clip b/etc/soft/mc/cedit/cooledit.clip deleted file mode 100644 index 097119c..0000000 --- a/etc/soft/mc/cedit/cooledit.clip +++ /dev/null @@ -1,3 +0,0 @@ - echo -n "Установка настроек Х......." - ln -s $DIR/X/Xdefaults $1/.Xdefaults - [ $? == 0 ] && echo "OK" diff --git a/etc/soft/mc/cedit/cooledit.macros b/etc/soft/mc/cedit/cooledit.macros deleted file mode 100644 index e69de29..0000000 diff --git a/etc/soft/mc/cedit/edit.indent.rc b/etc/soft/mc/cedit/edit.indent.rc deleted file mode 100755 index 92f82d5..0000000 --- a/etc/soft/mc/cedit/edit.indent.rc +++ /dev/null @@ -1,31 +0,0 @@ -#! /bin/sh -# *** External Formatter (Indenter) for GNU Midnight Commander. -# arguments: -# $1 - Name of the file being edited -# $2 - Name of the file to be processed - -exec >/dev/null - -case `echo $1 |sed 's/^.*\.//'` in - c|h) - # ftp://ftp.gnu.org/pub/gnu/indent/ - # Please add options to your ~/.indent.pro, not here. - indent "$2" - ;; - C|cc|CC|cxx|CXX|cpp|CPP) - # http://astyle.sourceforge.net/ - astyle "$2" - ;; - java|JAVA) - # http://astyle.sourceforge.net/ - astyle --style=java --mode=java "$2" - ;; - htm|html|HTM|HTML) - # http://tidy.sourceforge.net/ - tidy -q -m -ascii -wrap 80 "$2" - ;; - *) - # http://www.gnu.org/software/coreutils/ - fmt "$2" >"$2.tmp" && rm -f "$2" && mv -f "$2.tmp" "$2" - ;; -esac diff --git a/etc/soft/mc/cedit/edit.spell.rc b/etc/soft/mc/cedit/edit.spell.rc deleted file mode 100755 index e9dee8b..0000000 --- a/etc/soft/mc/cedit/edit.spell.rc +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/sh -# *** External Spell Checker for GNU Midnight Commander. -# arguments: -# $1 - Name of the file being edited -# $2 - Name of the file to be processed - -if aspell /dev/null 2>&1; then - aspell -c "$2" -else - ispell "$2" -fi diff --git a/etc/soft/mc/filehighlight.ini b/etc/soft/mc/filehighlight.ini deleted file mode 100644 index f16a689..0000000 --- a/etc/soft/mc/filehighlight.ini +++ /dev/null @@ -1,44 +0,0 @@ -[executable] - type=FILE_EXE - -[directory] - type=DIR - -[device] - type=DEVICE - -[special] - type=SPECIAL - -[stalelink] - type=STALE_LINK - -[symlink] - type=SYMLINK - -[core] - regexp=^core\\.*\\d*$ - -[temp] - extensions=tmp;$$$;~;bak;o;elc;toc;out;rej;aux; - extensions_case=false - regexp=(^#.*|.*~$) - -[archive] - extensions=gz;bz2;tar;tgz;rpm;rar;zip;arj;cab;lzma;xz;tbz2;iso;mdf; - -[doc] - extensions=txt;srt;ass;ssa;doc;ps;pdf;xml;html;htm;tex;css;chm;dvi;djvu;log;odt;cue; - -[source] - extensions=c;h;cc;hh;cpp;cxx;hpp;asm;py;pl;pm;inc;cgi;php;phps;js;java;jav;jasm;sh;bash;diff;patch;pas;tcl;tk;awk;m4;st;mak;sl;ada;caml;ml;mli;mly;mll;mlp;sas;prg;hs;hi;erl;lisp;el;ebuild; - -[media] - extensions=mov;mpg;mpeg;mkv;ogm;mp4;m2v;m4v;wmv;rmvb;rm;asf;avi;flv;vob;flac;mka;mp3;ogg;wav;ape;m3u; - -[graph] - extensions=jpg;jpeg;gif;bmp;tga;xpm;tif;tiff;png;svgz;svg;pcx;xpm;eps;wmf;ico; - -[database] - extensions=db;mdb;dat;sql;xls - diff --git a/etc/soft/mc/filepos b/etc/soft/mc/filepos deleted file mode 100644 index 52ca930..0000000 --- a/etc/soft/mc/filepos +++ /dev/null @@ -1,304 +0,0 @@ -/home/maks/.wine/drive_c/Program Files/Bethesda Softworks/Morrowind/Morrowind.ini 1;3;3 -/tmp/TclKits/YandexTV_WINDOWS.vfs/tv.tcl 1;20;20 -/home/maks/Programs/Разработка/Tcl/src/YandexTV/ddd 237;0;7989 -/home/maks/.vim/template/c.vim 4;11;40 -/home/maks/.vim/template/rebol.vim 3;1;23 -/home/maks/.vim/template/haskell.vim 1;12;18 -/home/maks/.vimrc 448;0;17041 -/home/maks/.shellrc/config/soft/vim/vim/template/perl.vim 1;19;19 -/home/maks/.shellrc/config/soft/calcurse/todo 2;22;96 -/home/maks/.xmonad/xmonad.hs 201;25;10256 -/home/maks/.shellrc/config/soft/vim/vim/template/prolog.vim 1;1 -/home/maks/.shellrc/config/soft/vim/vim/template/cpp.vim 4;20 -/home/maks/.shellrc/config/soft/vim/vim/template/sh.vim 3;9 -/home/maks/.shellrc/config/soft/vim/vim/template/tcl.vim 3;9 -/home/maks/.shellrc/config/soft/vim/vim/template/scheme.vim 4;21 -/home/maks/.shellrc/config/soft/vim/vim/template/sh 1;21 -/home/maks/.shellrc/config/soft/mc/ini 2;0 -/home/maks/.shellrc/install.sh 14;6 -/home/maks/.shellrc/config/shell/bash/bashrc 97;95 -/home/maks/.shellrc/config/shell/bash/aliases 91;0 -/home/maks/.shellrc/config/shell/bash/bash_profile 9;0 -/home/maks/.shellrc/config/shell/bash/inputrc 69;0 -/home/maks/.shellrc/config/shell/bash/completion_addons 101;0 -/home/maks/.shellrc/config/other/htop/htoprc 12;0 -/home/maks/.shellrc/config/apps 15;6 -/home/maks/Programs/Разработка/Tcl/src/Uingen/uingen.tcl 133;0 -/home/maks/Programs/Разработка/Tcl/src/Slacklog/slacklog.tcl 40;0 -/home/maks/Programs/Разработка/Tcl/src/Other/Алгоритмы_2x2/sort.tcl 2;0 -/home/maks/Programs/Разработка/Tcl/src/Music/1.tcl 871;0 -/home/maks/Programs/Разработка/Tcl/src/Morrowind/functions_gui.tcl 124;0 -/home/maks/Programs/Разработка/Tcl/src/Morrowind/functions.tcl 70;0 -/home/maks/Programs/Разработка/Tcl/src/Morrowind/options_tile.tcl 2;0 -/home/maks/Programs/Разработка/Tcl/src/Guitar/guitar.tcl 221;0 -/home/maks/Programs/Разработка/Scheme/tmp/factorial.ss 7;8 -/home/maks/Programs/Разработка/Qt4/MorrINI/main.cpp 2;0 -/home/maks/Programs/Разработка/Qt4/MorrINI/mainwindow.cpp 3;0 -/home/maks/Programs/Разработка/Perl/SlackLog/slacklog.pl 36;0 -/home/maks/Programs/Разработка/Pascal/ППИ/1-1/2/split.pas 50;0 -/home/maks/Programs/Разработка/HTML/l1/css/style.css 83;0 -/home/maks/Programs/Разработка/C++/+Tcl/main.cpp 11;16 -/home/maks/Programs/Разработка/Bash/weather.pl 2;0 -/home/maks/Programs/Разработка/Bash/uingen/uingen.sh 67;0 -/home/maks/Programs/Разработка/Bash/spamtools/spamtools.sh 342;0 -/home/maks/Programs/Разработка/Bash/nikto-1.35/nikto.sh 185;0 -/home/maks/Programs/Разработка/Bash/hash/gui.sh 14;0 -/home/maks/Programs/Разработка/Bash/SED_tetris/sedtris.sed 16;0 -/home/maks/.shellrc/config/vim/vimrc 295;0 -/home/maks/.shellrc/config/tcl/tclshrc 69;0 -/home/maks/.shellrc/config/tcl/tclsh-history 2464;0 -/home/maks/.shellrc/config/rc/usr/libexec/dhcpcd-hooks/newip2sms 7;52 -/home/maks/.shellrc/config/net/rtorrent/rtorrent.rc 22;0 -/home/maks/.shellrc/config/net/mcabber/mcabberrc 148;0 -/home/maks/.shellrc/config/memory/mem 49;0 -/home/maks/.shellrc/config/media/ncmpcpp/config 21;0 -/home/maks/.shellrc/config/media/mpd/mpd.conf 42;0 -/home/maks/.shellrc/config/mail/fetchmail/fetchmailrc 27;0 -/home/maks/.shellrc/config/mail/mutt/sidebar.mutt 14;0 -/home/maks/.shellrc/config/mail/mutt/colors.mutt 20;0 -/home/maks/.shellrc/config/mail/mutt/header.mutt 24;0 -/home/maks/.shellrc/config/mail/mutt/keys.mutt 17;0 -/home/maks/.shellrc/config/mail/mutt/muttrc 4;1 -/home/maks/.shellrc/config/mail/mailcap/mailcap 3;8 -/home/maks/.shellrc/config/htop/htoprc 23;0 -/home/maks/.shellrc/config/guile/guile 8;0 -/home/maks/.shellrc/bin/color_cmake.sh 22;0 -/home/maks/.shellrc/bin/checkmail 5;0 -/home/maks/.shellrc/bin/books 37;0 -/home/maks/.shellrc/autostart/autostart 5;0 -/home/maks/.shellrc/install.sh.13-01-2010.15:08:44.bak 66;0 -/home/maks/.snownews/colors 18;9 -/home/maks/.snownews/keybindings 2;0 -/home/maks/.shellrc/config/net/snownews/scripts/atom2rss 71;0 -/home/maks/.shellrc/bin/ip2sms 3;17 -/home/maks/.shellrc/bin/hv3 3;44 -/home/maks/.shellrc/bin/color_conf.sh 4;0 -/home/maks/.shellrc/bin/allcolors 65;0 -/home/maks/.shellrc/config/X/Xdefaults 30;0 -/home/maks/.shellrc/config/mail/sendemail 563;0 -/home/maks/.snownews/browser 1;8 -/home/maks/Programs/Разработка/C++/Стивен Прата/Глава 8/8-6.cpp 52;0 -/home/maks/Programs/Разработка/C++/morse/morse.cpp 2;0 -/home/maks/Programs/Разработка/C++/UIN_PASS/uin_pass.cpp 39;0 -/home/maks/Programs/Разработка/HTML/l1/index.html 4;0 -/home/maks/Programs/Разработка/C++/MD5gen/md5gen.cpp 17;0 -/etc/exports 6;12 -/etc/rc.d/rc.inet1 154;0 -/etc/rc.d/rc.inet1.conf 91;0 -/etc/rc.d/rc.inetd 2;0 -/etc/rc.d/rc.rpc 20;0 -/etc/rc.d/init.d/README.functions 11;8 -/etc/rc.d/init.d/functions 1;8 -/etc/rc.d/rc.inet2 138;0 -/etc/rc.d/rc.nfsd 99;0 -/media/MEDIA/TMP/LaTeX/Шаблоны/title.tex 62;0 -/home/maks/.shellrc/templates/main.tex 12;0 -/usr/share/autostart/wicd-tray.desktop 5;0 -/usr/share/autostart/restore_kmix_volumes.desktop 9;0 -/usr/share/autostart/korgac.desktop 44;0 -/usr/share/autostart/kabcdistlistupdater.desktop 69;0 -/usr/share/autostart/guidance-power-manager.desktop 66;0 -/etc/inittab 72;0 -/etc/rc.d/rc.wicd 53;0 -/etc/rc.d/rc.local 24;0 -/etc/rc.d/rc.keymap 1;8 -/etc/rc.d/rc.font.new 1;8 -/etc/rc.d/rc.font 10;0 -/etc/rc.d/rc.M 260;1 -/home/maks/.ezdit/ezdit.conf 68;0 -/home/maks/logs/irc.rusnet.org.ru.log 58;0 -/etc/profile 29;24 -/home/maks/.xsession-errors 846;0 -/home/maks/hello.hs 1;9 -/home/maks/ion/ion.SlackBuild 6;3 -/home/maks/ion/README 2;0 -/home/maks/ghc-6.10.4/Makefile 4;0 -/home/maks/ghc-6.10.4/ANNOUNCE 109;0 -/home/maks/ghc-6.10.4/utils/Makefile 121;0 -/home/maks/ghc-6.10.4/INSTALL 41;0 -/home/maks/ghc-6.10.4/README 2;0 -/var/slapt-get/packages/gcc-4.4.2/install/doinst.sh 30;9 -/home/maks/ghc-6.10.4/mk/install.mk 90;0 -/boot/README.initrd 2;0 -/var/slapt-get/slackware/l/install/doinst.sh 192;6 -/home/maks/constructor/locale.dir 88;0 -/home/maks/constructor/locale.alias 51;0 -/home/maks/constructor/l_alias.glibc 74;0 -/home/maks/constructor/fstab.cdrw 4;0 -/home/maks/constructor/fonts.conf 67;0 -/home/maks/constructor/doinst.sh 4;6 -/etc/X11/xorg.conf 67;25 -/var/slapt-get/slackware/a/install/doinst.sh 31;0 -/etc/rc.d/rc.modules-2.6.32.2-smp 67;0 -/var/slapt-get/slackware/d/install/doinst.sh 2;6 -/home/maks/edcucumber-read-only/cucumber.tcl 16;0 -/home/maks/DeskCal/DeskCal.tcl 72;0 -/home/maks/tcltext2.3/tcltext.tcl 1;9 -/home/maks/tdict-1.1/README.tdict.1.1 50;0 -/home/maks/tcltext2.3/README 5;0 -/home/maks/tcltext2.3/nonguiinstall.sh 2;0 -/home/maks/htmlwidget/tclconfig/tcl.m4 81;0 -/home/maks/htmlwidget/hv/hv3_file.tcl 131;0 -/home/maks/.tclshrc 2;30 -/var/slapt-get/slackware/xap/install/doinst.sh 4;6 -/home/maks/.vim/after/syntax/css.vim 112;0 -/var/slapt-get/slackware/tcl/install/doinst.sh 416;9 -/home/maks/Downloads/TORRENTS/_СКАЧАНО_/simpsons/01-й сезон/MULTINFO.TXT 1;1 -/home/maks/.wicd/WHEREAREMYFILES 22;0 -/home/maks/Programs/Media/tuxguitar-1.0-jet/tuxguitar 28;0 -/home/maks/.cache/guile/ccache/1.9-0.D-LE-4/usr/share/guile/1.9/ice-9/readline.scm.go 123;32 -/home/maks/.vim/template/scheme.vim 4;0 -/home/maks/.vim/template/ss.vim 1;20 -/home/maks/.vim/ftdetect/detect.vim 7;0 -/home/maks/.vim/template/scm.vim 3;0 -/home/maks/.vim/template/tcl.vim 3;0 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-42.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-41.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-31.ss 2;2 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-27.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-23.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-22.ss 2;2 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-17.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-16.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-12.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-11.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-08.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-07.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-03.ss 1;20 -/home/maks/Programs/Разработка/Scheme/SICP/Глава 1/1-02.ss 1;19 -/home/maks/.vim/ftplugin/scheme/scheme.vim 2;12 -/home/maks/.vim/syntax/scheme.vim 34;0 -/home/maks/plt-4.2.2/src/build/foreign/Makefile 30;13 -/home/maks/plt-4.2.2/src/build/mred/Makefile 376;13 -/home/maks/plt-4.2.2/src/build/mzscheme/Makefile 359;13 -/home/maks/plt-4.2.2/src/build/Makefile 178;34 -/home/maks/plt-4.2.2/src/README 132;0 -/home/maks/guile-1.9.4/NEWS 7139;13 -/home/maks/guile-1.9.4/HACKING 345;0 -/home/maks/guile-1.9.4/GUILE-VERSION 2;0 -/home/maks/guile-1.9.4/ChangeLog 110;0 -/usr/include/limits.h 123;0 -/home/maks/Programs/Разработка/Scripts/index.html 87;0 -/home/maks/Programs/Разработка/Scripts/shells/DxShell.php 2032;0 -/home/maks/Programs/Разработка/Scripts/myscripts/flood.sh 53;0 -/home/maks/Programs/Разработка/Scripts/brut/passwd_to_file.pl 5;0 -/home/maks/Programs/Разработка/Scripts/SMS/index.html 2;0 -/home/maks/Programs/Разработка/Scheme/tmp/clock.ss 18;15 -/home/maks/Programs/Разработка/Qt4/GUI/form1.cpp 898;0 -/home/maks/Programs/Разработка/Bash/hash/table.sh 43;0 -/etc/slackpkg/slackpkg.conf 80;0 -/etc/skel/.screenrc 2;0 -/etc/mutt/mime.types 84;0 -/etc/mutt/Muttrc 197;0 -/etc/hp/hplip.conf 38;0 -/etc/rpc 70;0 -/etc/sensors3.conf 352;0 -/etc/shadow 26;0 -/etc/sudoers 19;1 -/etc/termcap 41;0 -/etc/wgetrc 100;0 -/etc/inetd.conf 110;0 -/etc/lynx.cfg 131;0 -/etc/fstab 8;0 -/home/maks/Programs/Разработка/Perl/proxycheck.pl 4;0 -/home/maks/Programs/Разработка/Perl/proxycheck.pl~ 12;0 -/home/maks/Programs/Разработка/Tcl/src/Music/1_old.tcl 610;0 -/home/maks/.recently-used 23;14 -/home/maks/.2mandvd/logfile.txt 10;0 -/home/maks/imagination-2.1/src/support.c 23;27 -/home/maks/imagination-2.1.tar.gz#utar/imagination-2.1/src/support.c 24;0 -/home/maks/imagination.SlackBuild 115;0 -/var/slapt-get/multimedia/imagination/2.1/install/doinst.sh 6;0 -/home/maks/imagination-2.1/icons/Makefile 49;0 -/home/maks/imagination-2.1/Makefile 17;0 -/home/maks/imagination-2.1/INSTALL 2;0 -/home/maks/imagination-2.1/README 11;0 -/home/maks/imagination-2.1/transitions/Makefile.in 48;0 -/home/maks/imagination-2.1/transitions/Makefile.am 5;0 -/home/maks/oleaut32.zip#uzip/readme.txt 43;0 -/media/MEDIA/Видео/Сериалы/CSI. Майами/3 Сезон/done.txt 10;24 -/home/maks/.shellrc/config/cw/def/g++ 2;12 -/usr/lib/gcc/i486-slackware-linux/4.4.2/specs 21;0 -/home/maks/Programs/Разработка/Tcl/Soft/Разное/tcl2html.tcl 137;0 -/home/maks/Programs/Разработка/Tcl/Soft/Настройки/Prompt/prompt.tcl 62;0 -/home/maks/Programs/Разработка/Tcl/Soft/Пакеты/Snack/snack.pdf 122;0 -/home/maks/Programs/Разработка/Tcl/src/Music/Backup/1.tcl.06-06-2009.bak 328;0 -/home/maks/Programs/Разработка/Scheme/tmp/test.ss 1;40 -/home/maks/test.ss 9;0 -/home/maks/laptopconf/01-touchpad.rules 1;8 -/etc/rc.d/rc.modules 316;9 -/etc/rc.d/rc.acpid 8;29 -/etc/rc.d/rc.S 366;8 -/etc/rc.d/rc.udev 1;8 -/etc/rc.d/rc.slapt-update-notifier 15;8 -/etc/rc.d/rc.modules-2.6.29.6-smp 44;8 -/etc/rc.d/rc.messagebus 1;8 -/etc/bluetooth/network.conf 38;8 -/etc/rc.d/rc.bluetooth 115;8 -/etc/rc.d/rc.sysvinit 2;9 -/home/maks/gtk-qt-engine-0.8-i486-2.tgz#utar/usr/share/themes/Qt/gtk-2.0/gtkrc 1;8 -/install/data.xml 1;8 -/home/maks/man-1.6f-i486-2.tgz#utar/install/doinst.sh 1;8 -/home/maks/man-1.6f-i486-2.tgz#utar/install/slack-required 1;8 -/home/maks/man-1.6f-i486-2.tgz#utar/usr/share/locale/ru/man 49;8 -/home/maks/man-pages-3.15-noarch-1.tgz#utar/install/doinst.sh 8;16 -/usr/man/README 1;8 -/usr/man/whatis 10;8 -/home/maks/man-pages-ru-4.2-noarch-1.tgz#utar/install/slack-desc 1;24 -/home/maks/man-pages-ru-4.2-noarch-1.tgz#utar/install/slack-required 1;11 -/etc/lilo.conf 64;28 -/home/maks/gtk-qt-engine-0.8-i486-2.tgz#utar/install/slack-required 38;8 -/home/maks/gtk-qt-engine-0.8-i486-2.tgz#utar/install/slack-desc 1;8 -/home/maks/man-pages-ru-4.2-noarch-1.tgz#utar/install/data.xml 3;8 -/home/maks/.shellrc/config/cw/def/figlet 2;19 -/home/maks/.shellrc/config/cw/def/df 2;0 -/home/maks/.shellrc/config/cw/def/date 4;0 -/home/maks/.shellrc/config/cw/def/arp 8;2 -/home/maks/.shellrc/config/cw/def/arping 11;0 -/home/maks/.shellrc/config/cw/def/cal 8;0 -/home/maks/.procmailrc 24;0 -/home/maks/TMP/printable.aspx.tar.bz2#utar/printable.aspx 57;0 -/home/maks/.shellrc/config/media/mpd/mpd.log 49;0 -/home/maks/.shellrc/config/mail/mutt/boxes.mutt 23;0 -/home/maks/.shellrc/config/bash/inputrc 70;0 -/home/maks/.shellrc/config/bash/completion_addons 101;0 -/home/maks/.shellrc/config/bash/bashrc 158;0 -/home/maks/.shellrc/config/bash/aliases 1;46 -/home/maks/.shellrc/config/bash/DIR_COLORS 167;0 -/home/maks/.shellrc/config/net/hv3/hv3 16;0 -/home/maks/.shellrc/config/mc/history 350;0 -/home/maks/.shellrc/config/mcabber/mcabberrc 482;54 -/home/maks/.shellrc/config/mcabber/eventcmd 13;1 -/home/maks/.shellrc/config/mcabber/mcabber-notify.sh 13;70 -/home/maks/.xsession 8;0 -/home/maks/.xine/catalog.cache 1371;0 -/home/maks/.purple/blist.xml 55;0 -/home/maks/.ncftp/firewall 109;0 -/home/maks/.msf3/modcache 972;0 -/home/maks/.hplip/hplip.conf 2;0 -/home/maks/.bogofilter/wordlist.db 3;0 -/home/maks/.shellrc/mail/zone-x.ru 78529;0 -/home/maks/.shellrc/mail/spam-learn 70;0 -/home/maks/.shellrc/config/rc/etc/rc.d/rc.firewall 31;30 -/home/maks/.shellrc/mail/sms 118;0 -/home/maks/.shellrc/mail/new 1;1 -/home/maks/.shellrc/books/books.tc~ 2;0 -/home/maks/.shellrc/config/rc/40-newip 1;1 -/home/maks/.kde/Autostart/start.sh 5;0 -/home/maks/.shellrc/config/vim/vim/ftdetect/detect.vim 4;0 -/home/maks/.newsbeuter/urls 3;0 -/home/maks/.shellrc/config/rss/raggle/feeds.yaml 30;12 -/home/maks/Книги.tc#uzip/tellico.xml 147;0 -/home/maks/Книги.tc 3;0 -/home/maks/.spamassassin/user_prefs 5;25 -/home/maks/.kde/Autostart/Xmodmap 3;0 -/home/maks/.shellrc/autostart/Xmodmap 5;0 -/home/maks/.emacs 44;0 -/home/maks/muttrc-20020703_mike/.mutt-mike/folder 5;0 -/home/maks/muttrc-20020703_mike/.mutt-mike/alias 4;0 -/home/maks/muttrc-20020703_mike/.mutt-mike/set 18;0 -/home/maks/muttrc-20020703_mike/.procmailrc-mike 123;0 -/home/maks/.fetchmailrc 42;0 -/home/maks/.shellrc/config/firewall/rc.firewall 48;0 -/home/maks/Mail/.inbox.directory/Makslih@mail.ru/..mbox 1158;0 -/home/maks/.shellrc/mail/inbox 10090;12 diff --git a/etc/soft/mc/ini b/etc/soft/mc/ini deleted file mode 100644 index b1cf9cf..0000000 --- a/etc/soft/mc/ini +++ /dev/null @@ -1,152 +0,0 @@ -[Midnight-Commander] -verbose=1 -pause_after_run=1 -shell_patterns=1 -auto_save_setup=1 -preallocate_space=0 -auto_menu=0 -use_internal_view=1 -use_internal_edit=0 -clear_before_exec=1 -confirm_delete=1 -confirm_overwrite=1 -confirm_execute=0 -confirm_history_cleanup=1 -confirm_exit=1 -confirm_directory_hotlist_delete=1 -safe_delete=0 -mouse_repeat_rate=100 -double_click_speed=250 -use_8th_bit_as_meta=0 -confirm_view_dir=0 -mouse_move_pages_viewer=1 -mouse_close_dialog=0 -fast_refresh=0 -drop_menus=0 -wrap_mode=1 -old_esc_mode=0 -old_esc_mode_timeout=1000000 -cd_symlinks=1 -show_all_if_ambiguous=0 -max_dirt_limit=10 -use_file_to_guess_type=1 -alternate_plus_minus=0 -only_leading_plus_minus=1 -show_output_starts_shell=0 -xtree_mode=0 -num_history_items_recorded=60 -file_op_compute_totals=1 -classic_progressbar=1 -vfs_timeout=60 -ftpfs_directory_timeout=900 -use_netrc=1 -ftpfs_retry_seconds=30 -ftpfs_always_use_proxy=0 -ftpfs_use_passive_connections=1 -ftpfs_use_passive_connections_over_proxy=0 -ftpfs_use_unix_list_options=1 -ftpfs_first_cd_then_ls=1 -fish_directory_timeout=900 -editor_tab_spacing=8 -editor_word_wrap_line_length=72 -editor_fill_tabs_with_spaces=0 -editor_return_does_auto_indent=1 -editor_backspace_through_tabs=0 -editor_fake_half_tabs=1 -editor_option_save_mode=0 -editor_option_save_position=1 -editor_option_auto_para_formatting=0 -editor_option_typewriter_wrap=0 -editor_edit_confirm_save=1 -editor_syntax_highlighting=1 -editor_persistent_selections=1 -editor_cursor_beyond_eol=0 -editor_cursor_after_inserted_block=0 -editor_visible_tabs=1 -editor_visible_spaces=1 -editor_line_state=0 -editor_simple_statusbar=0 -editor_check_new_line=0 -editor_show_right_margin=0 -editor_group_undo=0 -editor_ask_filename_before_edit=0 -nice_rotating_dash=1 -mcview_remember_file_position=0 -auto_fill_mkdir_name=1 -copymove_persistent_attr=1 -select_flags=6 -editor_backup_extension=~ -editor_filesize_threshold=64M -mcview_eof= -ignore_ftp_chattr_errors=true -skin=default - -editor_drop_selection_on_copy=1 -editor_stop_format_chars=-+*\\,.;:&> - -[Layout] -message_visible=0 -keybar_visible=0 -xterm_title=0 -output_lines=0 -command_prompt=1 -menubar_visible=0 -free_space=1 -horizontal_split=0 -vertical_equal=1 -left_panel_size=61 -horizontal_equal=1 -top_panel_size=1 - -[Misc] -timeformat_recent=%b %e %H:%M -timeformat_old=%b %e %Y -ftp_proxy_host=gate -ftpfs_password=anonymous@ -display_codepage=UTF-8 -source_codepage=Other_8_bit -autodetect_codeset= -spell_language=en -clipboard_store= -clipboard_paste= - -[Colors] -base_color= -linux= -color_terminals= - -xterm-256color= - -xterm= - -[Panels] -show_mini_info=true -kilobyte_si=false -mix_all_files=false -show_backups=true -show_dot_files=true -fast_reload=false -fast_reload_msg_shown=false -mark_moves_down=true -reverse_files_only=true -auto_save_setup_panels=false -navigate_with_arrows=true -panel_scroll_pages=true -mouse_move_pages=true -filetype_mode=true -permission_mode=false -torben_fj_mode=false -quick_search_mode=2 - -simple_swap=false - -select_flags=6 - -[HotlistConfig] -expanded_view_of_groups=0 - -[Panelize] -Изменённые файлы под контролем git=git ls-files --modified -Найти корректуры, отвергнутые командой patch=find . -name \\*.rej -print -Найти оригиналы (*.orig) после команды patch=find . -name \\*.orig -print -Найти программы с установленными SUID/SGID битами=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print diff --git a/etc/soft/mc/ini.default b/etc/soft/mc/ini.default deleted file mode 100644 index 3769849..0000000 --- a/etc/soft/mc/ini.default +++ /dev/null @@ -1,110 +0,0 @@ - -[Midnight-Commander] -show_backups=1 -show_dot_files=1 -verbose=1 -mark_moves_down=1 -pause_after_run=1 -shell_patterns=1 -auto_save_setup=1 -auto_menu=0 -use_internal_view=1 -use_internal_edit=0 -clear_before_exec=1 -mix_all_files=0 -fast_reload=0 -fast_reload_msg_shown=0 -confirm_delete=1 -confirm_overwrite=1 -confirm_execute=0 -confirm_exit=1 -confirm_directory_hotlist_delete=1 -safe_delete=0 -mouse_repeat_rate=100 -double_click_speed=250 -use_8th_bit_as_meta=0 -confirm_view_dir=0 -mouse_move_pages=1 -mouse_move_pages_viewer=1 -mouse_close_dialog=0 -fast_refresh=0 -navigate_with_arrows=1 -drop_menus=0 -wrap_mode=1 -old_esc_mode=0 -cd_symlinks=1 -show_all_if_ambiguous=0 -max_dirt_limit=10 -torben_fj_mode=0 -use_file_to_guess_type=1 -alternate_plus_minus=0 -only_leading_plus_minus=1 -show_output_starts_shell=0 -panel_scroll_pages=1 -xtree_mode=0 -num_history_items_recorded=60 -file_op_compute_totals=1 -skip_check_codeset=0 -vfs_timeout=60 -ftpfs_directory_timeout=900 -use_netrc=1 -ftpfs_retry_seconds=30 -ftpfs_always_use_proxy=0 -ftpfs_use_passive_connections=1 -ftpfs_use_unix_list_options=1 -ftpfs_first_cd_then_ls=1 -fish_directory_timeout=900 -editor_word_wrap_line_length=72 -editor_key_emulation=0 -editor_tab_spacing=8 -editor_fill_tabs_with_spaces=0 -editor_return_does_auto_indent=1 -editor_backspace_through_tabs=0 -editor_fake_half_tabs=1 -editor_option_save_mode=0 -editor_option_save_position=1 -editor_option_auto_para_formatting=0 -editor_option_typewriter_wrap=0 -editor_edit_confirm_save=1 -editor_syntax_highlighting=1 -editor_persistent_selections=1 -editor_visible_tabs=1 -editor_visible_spaces=1 -editor_line_state=0 -editor_simple_statusbar=0 -nice_rotating_dash=1 -horizontal_split=0 -mcview_remember_file_position=0 -auto_fill_mkdir_name=0 -editor_backup_extension=~ - -[Layout] -equal_split=1 -first_panel_size=78 -message_visible=0 -keybar_visible=0 -xterm_title=1 -output_lines=0 -command_prompt=1 -menubar_visible=0 -show_mini_info=1 -permission_mode=1 -filetype_mode=1 -free_space=1 - -[Misc] -ftp_proxy_host=gate -find_ignore_dirs= -ftpfs_password=anonymous@ -display_codepage=UTF-8 -source_codepage=UTF-8 - -[Colors] -base_color= -xterm= -color_terminals= - -[Panelize] -Найти корректуры, отвергнутые командой patch=find . -name \\*.rej -print -Найти оригиналы (*.orig) после команды patch=find . -name \\*.orig -print -Найти программы с установленными SUID/SGID битами=find . \\( \\( -perm -04000 -a -perm +011 \\) -o \\( -perm -02000 -a -perm +01 \\) \\) -print diff --git a/etc/soft/mc/ini.koorg b/etc/soft/mc/ini.koorg deleted file mode 100644 index 0e7c621..0000000 --- a/etc/soft/mc/ini.koorg +++ /dev/null @@ -1,143 +0,0 @@ - -[Midnight-Commander] -show_backups=1 -show_dot_files=1 -verbose=1 -mark_moves_down=1 -pause_after_run=1 -shell_patterns=1 -auto_save_setup=1 -auto_menu=0 -use_internal_view=1 -use_internal_edit=0 -clear_before_exec=1 -mix_all_files=0 -fast_reload=0 -fast_reload_msg_shown=0 -confirm_delete=1 -confirm_overwrite=1 -confirm_execute=0 -confirm_exit=1 -confirm_directory_hotlist_delete=1 -safe_delete=0 -mouse_repeat_rate=100 -double_click_speed=250 -use_8th_bit_as_meta=0 -confirm_view_dir=0 -mouse_move_pages=1 -mouse_move_pages_viewer=1 -mouse_close_dialog=0 -fast_refresh=0 -navigate_with_arrows=1 -drop_menus=0 -wrap_mode=1 -old_esc_mode=0 -cd_symlinks=1 -show_all_if_ambiguous=0 -max_dirt_limit=10 -torben_fj_mode=0 -use_file_to_guess_type=1 -alternate_plus_minus=0 -only_leading_plus_minus=1 -show_output_starts_shell=0 -panel_scroll_pages=1 -xtree_mode=0 -num_history_items_recorded=60 -file_op_compute_totals=1 -skip_check_codeset=0 -vfs_timeout=60 -ftpfs_directory_timeout=900 -use_netrc=1 -ftpfs_retry_seconds=30 -ftpfs_always_use_proxy=0 -ftpfs_use_passive_connections=1 -ftpfs_use_unix_list_options=1 -ftpfs_first_cd_then_ls=1 -fish_directory_timeout=900 -editor_word_wrap_line_length=72 -editor_key_emulation=0 -editor_tab_spacing=8 -editor_fill_tabs_with_spaces=0 -editor_return_does_auto_indent=1 -editor_backspace_through_tabs=0 -editor_fake_half_tabs=1 -editor_option_save_mode=0 -editor_option_save_position=1 -editor_option_auto_para_formatting=0 -editor_option_typewriter_wrap=0 -editor_edit_confirm_save=1 -editor_syntax_highlighting=1 -editor_persistent_selections=1 -editor_visible_tabs=1 -editor_visible_spaces=1 -editor_line_state=0 -editor_simple_statusbar=0 -nice_rotating_dash=1 -horizontal_split=0 -mcview_remember_file_position=0 -auto_fill_mkdir_name=0 -editor_backup_extension=~ - -[Layout] -equal_split=1 -first_panel_size=78 -message_visible=0 -keybar_visible=0 -xterm_title=1 -output_lines=0 -command_prompt=1 -menubar_visible=0 -show_mini_info=1 -permission_mode=1 -filetype_mode=1 -free_space=1 - -[Misc] -ftp_proxy_host=gate -find_ignore_dirs= -ftpfs_password=anonymous@ -display_codepage=UTF-8 -source_codepage=UTF-8 - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -xterm= -color_terminals= - -[Colors] -base_color=,black:normal=,black:selected=black,cyan:marked=,black:markselect=yellow,cyan:errors=white,red:menu=white,cyan:reverse=black,lightgray:dnormal=black,lightgray:dfocus=black,cyan:dhotnormal=blue,lightgray:dhotfocus=blue,cyan:viewunderline=,black:menuhot=yellow,cyan:menusel=white,black:menuhotsel=yellow,black:helpnormal=black,lightgray:helpitalic=red,lightgray:helpbold=blue,lightgray:helplink=black,cyan:helpslink=yellow,blue:gauge=white,black:input=black,cyan:directory=white,black:executable=brightgreen,black:link=cyan,black:stalelink=brightred,blue:device=,black:core=red,blue:special=red,black:editnormal=lightgray,black:editbold=yellow,blue:editmarked=black,cyan:errdhotnormal=yellow,red:errdhotfocus=yellow,lightgray -xterm= -color_terminals= - -[Panelize] -Найти корректуры, отвергнутые командой patch=find . -name \\*.rej -print -Найти оригиналы (*.orig) после команды patch=find . -name \\*.orig -print -Найти программы с установленными SUID/SGID битами=find . \\( \\( -perm -04000 -a -perm +011 \\) -o \\( -perm -02000 -a -perm +01 \\) \\) -print diff --git a/etc/soft/mc/mc.ext b/etc/soft/mc/mc.ext deleted file mode 100644 index 8c0da07..0000000 --- a/etc/soft/mc/mc.ext +++ /dev/null @@ -1,747 +0,0 @@ -# Midnight Commander 3.0 extension file -# Warning: Structure of this file has changed completely with version 3.0 -# -# All lines starting with # or empty lines are thrown away. -# Lines starting in the first column should have following format: -# -# keyword/descNL, i.e. everything after keyword/ until new line is desc -# -# keyword can be: -# -# shell (desc is, when starting with a dot, any extension (no wildcars), -# i.e. matches all the files *desc . Example: .tar matches *.tar; -# if it doesn't start with a dot, it matches only a file of that name) -# -# shell/i (desc is, when starting with a dot, any extension (no wildcars), -# The same as shell but with case insensitive. -# -# regex (desc is an extended regular expression) -# Please note that we are using the GNU regex library and thus -# \| matches the literal | and | has special meaning (or) and -# () have special meaning and \( \) stand for literal ( ). -# -# regex/i (desc is an extended regular expression) -# The same as regex but with case insensitive. -# -# type (file matches this if `file %f` matches regular expression desc -# (the filename: part from `file %f` is removed)) -# -# type/i (file matches this if `file %f` matches regular expression desc) -# The same as type but with case insensitive. -# -# directory (matches any directory matching regular expression desc) -# -# include (matches an include directive) -# -# default (matches any file no matter what desc is) -# -# Other lines should start with a space or tab and should be in the format: -# -# keyword=commandNL (with no spaces around =), where keyword should be: -# -# Open (if the user presses Enter or doubleclicks it), -# -# View (F3), Edit (F4) -# -# Include is the keyword used to add any further entries from an include/ -# section -# -# command is any one-line shell command, with the following substitutions: -# -# %% -> % character -# %p -> name of the current file (without path, but pwd is its path). -# Also provided to external application as MC_EXT_BASENAME -# global variable -# %f -> name of the current file. Unlike %p, if file is located on a -# non-local virtual filesystem, i.e. either tarfs or ftpfs, -# then the file will be temporarily copied into a local directory -# and %f will be the full path to this local temporal file. -# If you don't want to get a local copy and want to get the -# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then -# use %d/%p instead of %f. -# Also provided to external application as MC_EXT_FILENAME -# global variable -# %d -> name of the current directory (pwd, without trailing slash) -# Also provided to external application as MC_EXT_CURRENTDIR -# global variable -# %s -> "selected files", i.e. space separated list of tagged files if any -# or name of the current file. -# Also provided to external application as MC_EXT_SELECTED -# global variable -# %t -> list of tagged files -# Also provided to external application as MC_EXT_ONLYTAGGED -# global variable -# %u -> list of tagged files (they'll be untaged after the command) -# -# (If these 6 letters are in uppercase, they refer to the other panel. -# But you shouldn't have to use it in this file.) -# -# -# %cd -> the rest is a path mc should change into (cd won't work, since it's -# a child process). %cd handles even vfs names. -# -# %view -> the command you type will be piped into mc's internal file viewer -# if you type only the %view and no command, viewer will load %f file -# instead (i.e. no piping, so it is different to %view cat %f) -# %view may be directly followed by {} with a list of any of -# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for -# text using backspace for bold and underscore) and unform -# (no highlighting for nroff sequences) separated by commas. -# -# %var -> You use it like this: %var{VAR:default}. This macro will expand -# to the value of the VAR variable in the environment if it's set -# otherwise the value in default will be used. This is similar to -# the Bourne shell ${VAR-default} construct. -# -# Rules are applied from top to bottom, thus the order is important. -# If some actions are missing, search continues as if this target didn't -# match (i.e. if a file matches the first and second entry and View action -# is missing in the first one, then on pressing F3 the View action from -# the second entry will be used. default should catch all the actions. -# -# Any new entries you develop for you are always welcome if they are -# useful on more than one system. You can post your modifications -# as tickets at www.midnight-commander.org - - -### Changes ### -# -# Reorganization: 2012-03-07 Slava Zanko - - -### GIT Repo ### -# gitfs changeset -regex/^\[git\] - Open=%cd %p/changesetfs:// - View=%cd %p/patchsetfs:// - -### Archives ### - -# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk, .gem -regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk$|\.gem$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.gz - -shell/.tar.bz - # Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.bzip - -regex/\.t(ar\.bz2|bz2?|b2)$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.bzip2 - -# .tar.lzma, .tlz -regex/\.t(ar\.lzma|lz)$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.lzma - -# .tar.xz, .txz -regex/\.t(ar\.xz|xz)$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.xz - -# .tar.F - used in QNX -shell/.tar.F - # Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.F - -# .qpr/.qpk - QNX Neutrino package installer files -regex/\.qp[rk]$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.qpr - -# tar -shell/i/.tar - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar - -# lha -type/^LHa\ .*archive - Open=%cd %p/ulha:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view lha - -# arj -regex/i/\.a(rj|[0-9][0-9])$ - Open=%cd %p/uarj:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view arj - -# cab -shell/i/.cab - Open=%cd %p/ucab:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cab - -# ha -shell/i/.ha - Open=%cd %p/uha:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view ha - -# rar -regex/i/\.r(ar|[0-9][0-9])$ - Open=%cd %p/urar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view rar - -# ALZip -shell/i/.alz - Open=%cd %p/ualz:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view alz - -# cpio -shell/.cpio.Z - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio.z - -shell/.cpio.xz - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio.xz - -shell/.cpio.gz - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio.gz - -shell/i/.cpio - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio - -# 7zip archives (they are not man pages) -shell/i/.7z - Open=%cd %p/u7z:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view 7z - -# patch -regex/\.(diff|patch)(\.bz2)$ - Open=%cd %p/patchfs:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bz2 - -regex/\.(diff|patch)(\.(gz|Z))$ - Open=%cd %p/patchfs:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -# ls-lR -regex/(^|\.)ls-?lR(\.gz|Z|bz2)$ - Open=%cd %p/lslR:// - -# trpm -shell/.trpm - Open=%cd %p/trpm:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view trpm - -# RPM packages (SuSE uses *.spm for source packages) -regex/\.(src\.rpm|spm)$ - Open=%cd %p/rpm:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view src.rpm - -shell/.rpm - Open=%cd %p/rpm:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view rpm - -# deb -regex/\.u?deb$ - Open=%cd %p/deb:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view deb - -# dpkg -shell/.debd - Open=%cd %p/debd:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view debd - -# apt -shell/.deba - Open=%cd %p/deba:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view deba - -# ISO9660 -shell/i/.iso - Open=%cd %p/iso9660:// - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view iso9660 - - -regex/\.(diff|patch)$ - Open=%cd %p/patchfs:// - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view cat - -# ar library -regex/\.s?a$ - Open=%cd %p/uar:// - #Open=%view{ascii} ar tv %f - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view ar - -# gplib -shell/i/.lib - Open=%cd %p/ulib:// - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view lib - - -# Mailboxes -type/^ASCII\ mail\ text - Open=%cd %p/mailfs:// - - -### Sources ### - -# C/C++ -regex/i/\.(c|cc|cpp)$ - Include=editor - -# C/C++ header -regex/i/\.(h|hh|hpp)$ - Include=editor - -# Fortran -shell/i/.f - Include=editor - -# Assembler -regex/i/\.(s|asm)$ - Include=editor - -include/editor - Open=%var{EDITOR:vi} %f - -# .so libraries -regex/\.(so|so\.[0-9\.]*)$ - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view so - -# Object -type/^ELF - #Open=%var{PAGER:more} %f - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view elf - -### Documentation ### - -# Texinfo -#regex/\.(te?xi|texinfo)$ - -# GNU Info page -type/^Info\ text - Open=/usr/libexec/mc/ext.d/text.sh open info - -shell/.info - Open=/usr/libexec/mc/ext.d/text.sh open info - -# Exception: .3gp are video files not manual pages -shell/i/.3gp - Include=video - -# Manual page -regex/(([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])|\.man)$ - Open=/usr/libexec/mc/ext.d/text.sh open man %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man %var{PAGER:more} - -# Perl pod page -shell/.pod - Open=/usr/libexec/mc/ext.d/text.sh open pod %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view pod %var{PAGER:more} - -# Troff with me macros. -# Exception - "read.me" is not a nroff file. -shell/read.me - Open= - View= - -shell/.me - Open=/usr/libexec/mc/ext.d/text.sh open nroff.me %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view nroff.me %var{PAGER:more} - -# Troff with ms macros. -shell/.ms - Open=/usr/libexec/mc/ext.d/text.sh open nroff.ms %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view nroff.ms %var{PAGER:more} - -# Manual page - compressed -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.g?[Zz]$ - Open=/usr/libexec/mc/ext.d/text.sh open man.gz %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.gz %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz$ - Open=/usr/libexec/mc/ext.d/text.sh open man.bz %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.bz %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz2$ - Open=/usr/libexec/mc/ext.d/text.sh open man.bz2 %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.bz2 %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$ - Open=/usr/libexec/mc/ext.d/text.sh open man.lzma %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.lzma %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$ - Open=/usr/libexec/mc/ext.d/text.sh open man.xz %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.xz %var{PAGER:more} - -# CHM -shell/i/.chm - Open=/usr/libexec/mc/ext.d/text.sh open chm - -### Images ### - -type/^GIF - Include=image - -type/^JPEG - View=%view{ascii} /usr/libexec/mc/ext.d/image.sh view jpeg - Include=image - -type/^PC\ bitmap - Include=image - -type/^PNG - Include=image - -type/^JNG - Include=image - -type/^MNG - Include=image - -type/^TIFF - Include=image - -type/^PBM - Include=image - -type/^PGM - Include=image - -type/^PPM - Include=image - -type/^Netpbm - Include=image - -shell/.xcf - Open=/usr/libexec/mc/ext.d/image.sh open xcf - -shell/.xbm - Open=/usr/libexec/mc/ext.d/image.sh open xbm - -shell/.xpm - Include=image - View=/usr/libexec/mc/ext.d/image.sh view xpm %f - -shell/.ico - Include=image - -shell/i/.svg - View=%view{ascii} /usr/libexec/mc/ext.d/image.sh view svg - Open=/usr/libexec/mc/ext.d/image.sh open svg - -include/image - Open=/usr/libexec/mc/ext.d/image.sh open ALL_FORMATS - View=%view{ascii} /usr/libexec/mc/ext.d/image.sh view ALL_FORMATS - - -### Sound files ### - -regex/i/\.(wav|snd|voc|au|smp|aiff|snd|m4a|ape|aac|wv)$ - Open=/usr/libexec/mc/ext.d/sound.sh open common - -regex/i/\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$ - Open=/usr/libexec/mc/ext.d/sound.sh open mod - -shell/i/.waw22 - Open=/usr/libexec/mc/ext.d/sound.sh open wav22 - -shell/i/.mp3 - Open=/usr/libexec/mc/ext.d/sound.sh open mp3 - View=%view{ascii} /usr/libexec/mc/ext.d/sound.sh view mp3 - -regex/i/\.og[gax]$ - Open=/usr/libexec/mc/ext.d/sound.sh open ogg - View=%view{ascii} /usr/libexec/mc/ext.d/sound.sh view ogg - -regex/i/\.(spx|flac)$ - Open=/usr/libexec/mc/ext.d/sound.sh open common - -regex/i/\.(midi?|rmid?)$ - Open=/usr/libexec/mc/ext.d/sound.sh open midi - -shell/i/.wma - Open=/usr/libexec/mc/ext.d/sound.sh open wma - View=%view{ascii} /usr/libexec/mc/ext.d/sound.sh view wma - - -### Play lists ### - -regex/i/\.(m3u|pls)$ - Open=/usr/libexec/mc/ext.d/sound.sh open playlist - - -### Video ### - -shell/i/.avi - Include=video - -regex/i/\.as[fx]$ - Include=video - -shell/i/.divx - Include=video - -shell/i/.mkv - Include=video - -regex/i/\.(mov|qt)$ - Include=video - -regex/i/\.(mp4|m4v|mpe?g)$ - Include=video - -# MPEG-2 TS container + H.264 codec -shell/i/.mts - Include=video - -shell/i/.ts - Include=video - -shell/i/.vob - Include=video - -shell/i/.wmv - Include=video - -regex/i/\.fl[icv]$ - Include=video - -shell/i/.ogv - Include=video - -regex/i/\.ra?m$ - Open=/usr/libexec/mc/ext.d/video.sh open ram - -# WebM -shell/i/.webm - Include=video - -type/WebM - Include=video - -include/video - Open=/usr/libexec/mc/ext.d/video.sh open ALL_FORMATS - View=%view{ascii} /usr/libexec/mc/ext.d/video.sh view ALL_FORMATS - - -### Documents ### - -# Postscript -type/^PostScript - Open=/usr/libexec/mc/ext.d/doc.sh open ps - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view ps - -# PDF -type/^PDF - Open=/usr/libexec/mc/ext.d/doc.sh open pdf - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view pdf - -# html -regex/i/\.html?$ - Open=/usr/libexec/mc/ext.d/web.sh open html - View=%view{ascii} /usr/libexec/mc/ext.d/web.sh view html - -# StarOffice 5.2 -shell/.sdw - Open=/usr/libexec/mc/ext.d/doc.sh open ooffice - -# StarOffice 6 and OpenOffice.org formats -regex/i/\.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg)$ - Open=/usr/libexec/mc/ext.d/doc.sh open ooffice - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view odt - -# AbiWord -shell/.abw - Open=/usr/libexec/mc/ext.d/doc.sh open abw - -# Gnumeric -shell/i/.gnumeric - Open=/usr/libexec/mc/ext.d/doc.sh open gnumeric - -# Microsoft Word Document -regex/i/\.(do[ct]|wri)$ - Open=/usr/libexec/mc/ext.d/doc.sh open msdoc - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msdoc -type/^Microsoft\ Word - Open=/usr/libexec/mc/ext.d/doc.sh open msdoc - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msdoc - -# RTF document -shell/i/.rtf - Open=catdoc - View=%view{ascii} catdoc - -# Microsoft Excel Worksheet -regex/i/\.xl[sw]$ - Open=/usr/libexec/mc/ext.d/doc.sh open msxls - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msxls -type/^Microsoft\ Excel - Open=/usr/libexec/mc/ext.d/doc.sh open msxls - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msxls - -regex/i/\.(ppt|pps)$ - Open=/usr/libexec/mc/ext.d/doc.sh open msppt - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msppt - -# Use OpenOffice.org to open any MS Office documents -type/^Microsoft\ Office\ Document - Open=/usr/libexec/mc/ext.d/doc.sh open ooffice - -# Framemaker -type/^FrameMaker - Open=/usr/libexec/mc/ext.d/doc.sh open framemaker - -# DVI -shell/i/.dvi - Open=/usr/libexec/mc/ext.d/doc.sh open dvi - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view dvi - -# TeX -shell/i/.tex - Include=editor - -# DjVu -regex/i/\.djvu?$ - Open=/usr/libexec/mc/ext.d/doc.sh open djvu - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view djvu - -# Comic Books -regex/i/\.cb[zr]$ - Open=/usr/libexec/mc/ext.d/doc.sh open comic - -# Epub -shell/i/.epub - Open=/usr/libexec/mc/ext.d/doc.sh open epub - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view epub - - -### Miscellaneous ### - -# Compiled Java classes -shell/.class - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view javaclass - -# Makefile -regex/[Mm]akefile$ - Open=make -f %f %{Enter parameters} - -# Imakefile -shell/Imakefile - Open=/usr/libexec/mc/ext.d/misc.sh open imakefile - -# Makefile.PL (MakeMaker) -regex/^Makefile.(PL|pl)$ - Open=%var{PERL:perl} %f - -# sqlite3.db -type/^SQLite 3.x database - Open=/usr/libexec/mc/ext.d/misc.sh open sqlite - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view sqlite - -# dbf -shell/i/.dbf - Open=/usr/libexec/mc/ext.d/misc.sh open dbf - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view dbf - -# REXX script -regex/\.(rexx?|cmd)$ - Open=rexx %f %{Enter parameters};echo "Press ENTER";read y - -# Disk images for Commodore computers (VIC20, C64, C128) -shell/i/.d64 - Open=%cd %p/uc1541:// - View=%view{ascii} c1541 %f -list - Extract=c1541 %f -extract - -# Glade, a user interface designer for GTK+ and GNOME -shell/i/.glade - Open=/usr/libexec/mc/ext.d/misc.sh open glade - -# Gettext Catalogs -shell/.mo - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view mo - -# lyx -shell/i/.lyx - Open=/usr/libexec/mc/ext.d/misc.sh open lyx - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view lyx - -# torrent -shell/i/.torrent - View=%view{ascii} ctorrent -x %f - -### Plain compressed files ### - -# ace -shell/i/.ace - Open=%cd %p/uace:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view ace - Extract=unace x %f - -# arc -shell/i/.arc - Open=%cd %p/uarc:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view arc - Extract=arc x %f '*' - Extract (with flags)=I=%{Enter any Arc flags:}; if test -n "$I"; then arc x $I %f; fi - -# zip -type/i/^zip\ archive - Open=%cd %p/uzip:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view zip - -# jar(zip) -type/i/^Java\ Jar\ file\ data\ \(zip\) - Open=%cd %p/uzip:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view zip - -# zoo -shell/i/.zoo - Open=%cd %p/uzoo:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view zoo - -# gzip -type/^gzip - Open=/usr/libexec/mc/ext.d/archive.sh view gz %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -regex/\.(gz|Z)$ - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -# bzip2 -type/^bzip2 - Open=/usr/libexec/mc/ext.d/archive.sh view bzip2 %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bz2 - -regex/\.bz2?$ - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bz2 - -# bzip -type/^bzip - Open=/usr/libexec/mc/ext.d/archive.sh view bzip %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bzip - -# compress -type/^compress - Open=/usr/libexec/mc/ext.d/archive.sh view gz %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -# lzma -regex/\.lzma$ - Open=/usr/libexec/mc/ext.d/archive.sh view lzma %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view lzma - -# xz -regex/\.xz$ - Open=/usr/libexec/mc/ext.d/archive.sh view xz %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view xz - -# Parity Archive -type/^Parity\ Archive\ Volume\ Set - Open=/usr/libexec/mc/ext.d/archive.sh open par2 - -### Default ### - -# Default target for anything not described above -default/* - Open= - View= - - -### EOF ### diff --git a/etc/soft/mc/skins/dark.ini b/etc/soft/mc/skins/dark.ini deleted file mode 100644 index 4f58e86..0000000 --- a/etc/soft/mc/skins/dark.ini +++ /dev/null @@ -1,151 +0,0 @@ -[skin] - description=Dark skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;black - selected=black;cyan - marked=yellow;black - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;blue - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;black - inputhistory= - commandhistory= - -[dialog] - _default_=brightcyan;blue - dfocus=blue;cyan - dhotnormal=white; - dhotfocus=white;cyan - dtitle=white; - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightmagenta; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=brightblue; - core=red; - temp=gray; - archive=brightgreen; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=lightgray;blue - menuhot=white;blue - menusel=black;cyan - menuhotsel=white;cyan - menuinactive=black;white - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;black - editbold=yellow;brightgreen - editmarked=black;white - editwhitespace=brightblue;black - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=white;blue -# editbg= - editframe=gray; - editframeactive=lightgray; - editframedrag=red; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewbold=yellow;black - viewunderline=brightred;black - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[buttonbar] - hotkey=red;white - button=black;white - -[statusbar] - _default_=black;white - -[popupmenu] - _default_=lightgray;blue - menusel=black;cyan - menutitle=lightgray;blue - -[widget-common] - sort-sign-up=↑ - sort-sign-down=↓ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = ← - history-next-item-sign = → - history-show-list-sign = ↓ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ - diff --git a/etc/soft/mc/skins/darkfar.ini b/etc/soft/mc/skins/darkfar.ini deleted file mode 100644 index c053671..0000000 --- a/etc/soft/mc/skins/darkfar.ini +++ /dev/null @@ -1,150 +0,0 @@ -[skin] - description=Dark Far skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=lightgray;black - selected=black;cyan - marked=yellow;black - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;blue - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;black - inputhistory= - commandhistory= - -[dialog] - _default_=brightcyan;blue - dfocus=blue;cyan - dhotnormal=white; - dhotfocus=white;cyan - dtitle=white; - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightmagenta; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=brightblue; - core=red; - temp=gray; - archive=brightgreen; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=lightgray;blue - menuhot=white;blue - menusel=black;cyan - menuhotsel=white;cyan - menuinactive=black;white - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;black - editbold=yellow;brightgreen - editmarked=black;white - editwhitespace=brightblue;black - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=white;blue -# editbg= - editframe=gray; - editframeactive=lightgray; - editframedrag=white; - window-state-char = ↕ - window-close-char = × - -[viewer] - viewbold=yellow;black - viewunderline=brightred;black - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[buttonbar] - hotkey=red;white - button=black;white - -[statusbar] - _default_=black;white - -[popupmenu] - _default_=lightgray;blue - menusel=black;cyan - menutitle=lightgray;blue - -[widget-common] - sort-sign-up=↑ - sort-sign-down=↓ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = ← - history-next-item-sign = → - history-show-list-sign = ↓ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/default.ini b/etc/soft/mc/skins/default.ini deleted file mode 100644 index aaeb898..0000000 --- a/etc/soft/mc/skins/default.ini +++ /dev/null @@ -1,138 +0,0 @@ -[skin] - description=Standard skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;lightgray - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdtitle=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=black; - core=red; - temp=gray; - archive=brightmagenta; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=white;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=black;cyan - -[buttonbar] - hotkey=white;black - button=black;cyan - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow;brightgreen - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg=lightgray; -# editframe=lightgray; - editframeactive=white; - editframedrag=green; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=yellow;black - menutitle=yellow;cyan - -[widget-common] - sort-sign-up = ' - sort-sign-down = , - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc/skins/double-lines.ini b/etc/soft/mc/skins/double-lines.ini deleted file mode 100644 index 8a4a8ec..0000000 --- a/etc/soft/mc/skins/double-lines.ini +++ /dev/null @@ -1,137 +0,0 @@ -[skin] - description=Far-like skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - commandlinemark=black;lightgray - disabled=gray;lightgray - reverse=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=black; - core=red; - temp=gray; - archive=brightmagenta; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=white;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=lightgray;blue - -[buttonbar] - hotkey=lightgray;blue - button=lightgray;blue - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow;brightgreen - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= -# editframe= - editframeactive=white; - editframedrag=green; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=white;black - menutitle=white;cyan - -[widget-common] - sort-sign-up = ' - sort-sign-down = , - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc/skins/featured.ini b/etc/soft/mc/skins/featured.ini deleted file mode 100644 index 26d049f..0000000 --- a/etc/soft/mc/skins/featured.ini +++ /dev/null @@ -1,156 +0,0 @@ -# Please, use this skin in UTF-8 system codepage only. - -[skin] - description=Enhanced standart skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;lightgray - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=black; - core=red; - temp=gray; - archive=brightmagenta; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=white;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=black;cyan - -[buttonbar] - hotkey=white;black - button=black;cyan - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow;brightgreen - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= -# editframe= - editframeactive=lightgray; - editframedrag=cyan; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=white;black - menutitle=white;cyan - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = ⋅ - hiddenfiles-sign-hide = • - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - diff --git a/etc/soft/mc/skins/gotar.ini b/etc/soft/mc/skins/gotar.ini deleted file mode 100644 index 1cc61c9..0000000 --- a/etc/soft/mc/skins/gotar.ini +++ /dev/null @@ -1,131 +0,0 @@ -[skin] - description=GoTaR @PLD Linux - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;black - selected=white;blue - marked=brightred; - markselect=yellow; - gauge=;yellow - input=brightgreen; - disabled=gray;blue - reverse=brightgreen;blue - header=brightred; - inputhistory= - commandhistory= - -[dialog] - _default_=brightcyan;blue - dfocus=brightred;black - dhotnormal=brightred; - dhotfocus=yellow;black - dtitle=brightred; - -[error] - _default_=white;red - errdfocus=brightgreen;blue - errdhotnormal=yellow; - errdhotfocus=yellow;blue - errdtitle=yellow; - -[filehighlight] - directory=brightcyan; - executable=brightgreen; - symlink=red; - hardlink= - stalelink=yellow;blue - device=green; - special=brightblue; - core=red; - temp=gray; - archive=cyan; - doc=brown; - source=green; - media=white; - graph=magenta; - database=; - -[menu] - _default_=brightgreen;black - menuhot=brightred; - menusel=brightcyan;blue - menuhotsel=yellow; - menuinactive=lightgray; - -[buttonbar] - hotkey=lightgray;black - button=white;blue - -[statusbar] - _default_=white;blue - -[help] - _default_=brightred;black - helpitalic=brightcyan; - helpbold=brightgreen; - helplink=white; - helpslink=yellow;blue - helptitle=brightgreen; - -[editor] - _default_=lightgray;black - editbold=yellow;blue - editmarked=brightgreen;red - editwhitespace=brightblue;blue - editlinestate=brightgreen - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;blue -# editbg= -# editframe= - editframeactive=white; - editframedrag=green; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=brightred;black - viewunderline=brightgreen;black - viewselected=yellow;black - -[diffviewer] - _default_=lightgray;black - added=brightgreen; - changedline=cyan; - changednew=yellow; - changed=;brown - removed=;blue - folder=brightblue; - error=white;red - -[popupmenu] - _default_=brightgreen;black - menusel=brightcyan;blue - menutitle=brightcyan;black - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc/skins/mc46.ini b/etc/soft/mc/skins/mc46.ini deleted file mode 100644 index ce486df..0000000 --- a/etc/soft/mc/skins/mc46.ini +++ /dev/null @@ -1,129 +0,0 @@ -[skin] - description=mc-4.6 skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=black;cyan - inputmark=cyan;black - disabled=gray;lightgray - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdtitle=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - stalelink=brightred; - device=brightmagenta; - special=black; - -[menu] - _default_=black;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=gray;cyan - -[buttonbar] - hotkey=lightgray;black - button=black;cyan - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow; - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= -# editframe= - editframeactive=lightgray; - editframedrag=cyan; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=yellow;black - menutitle=yellow;cyan - -[widget-common] - sort-sign-up = ' - sort-sign-down = , - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc/skins/modarcon16-defbg.ini b/etc/soft/mc/skins/modarcon16-defbg.ini deleted file mode 100644 index ec06e9b..0000000 --- a/etc/soft/mc/skins/modarcon16-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16-DefaultBG (user) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;default - selected=color15;color2 - marked=color11;;bold - markselect=color11;color2;bold - gauge=color15;color2 - input=color15;color0 - inputmark=color11;color2;bold - inputunchanged=;color0 - commandlinemark=color11;color2;bold - reverse=color0;color10 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color2;bold - dhotfocus=color3;color2 - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color2;bold - errdhotnormal=color13 - errdhotfocus=color13;color2 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color7;default - menuhot=color3 - menusel=color11;color2;bold - menuhotsel=color3;color2 - menuinactive=color8 - -[popupmenu] - _default_=color7;default - menusel=color11;color2;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color2 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color2;bold - -[editor] - _default_=color7;default - editbold=color15;;bold - editmarked=color11;color2;bold - editwhitespace=color12;color4 - editlinestate=color2;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;default - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color2 - changed=color15;color6 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/modarcon16.ini b/etc/soft/mc/skins/modarcon16.ini deleted file mode 100644 index 6e9d061..0000000 --- a/etc/soft/mc/skins/modarcon16.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16 (user) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;color0 - selected=color15;color2 - marked=color11;;bold - markselect=color11;color2;bold - gauge=color15;color2 - input=color15 - inputmark=color11;color2;bold - inputunchanged= - commandlinemark=color11;color2;bold - reverse=color0;color10 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color2;bold - dhotfocus=color3;color2 - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color2;bold - errdhotnormal=color13 - errdhotfocus=color13;color2 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color0;color7 - menuhot=color3 - menusel=color11;color2;bold - menuhotsel=color3;color2 - menuinactive=color8 - -[popupmenu] - _default_=color0;color7 - menusel=color11;color2;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color2 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color2;bold - -[editor] - _default_=color7;color0 - editbold=color15;;bold - editmarked=color11;color2;bold - editwhitespace=color12;color4 - editlinestate=color2;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;color0 - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color2 - changed=color15;color6 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/modarcon16root-defbg.ini b/etc/soft/mc/skins/modarcon16root-defbg.ini deleted file mode 100644 index 14b8b01..0000000 --- a/etc/soft/mc/skins/modarcon16root-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16root-DefaultBG (root) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;default - selected=color15;color1 - marked=color11;;bold - markselect=color11;color1;bold - gauge=color15;color1 - input=color15;color0 - inputmark=color11;color1;bold - inputunchanged=;color0 - commandlinemark=color11;color1;bold - reverse=color0;color9 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color1;bold - dhotfocus=color5;color1;bold - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color3;bold - errdhotnormal=color13 - errdhotfocus=color13;color3 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color7;default - menuhot=color3 - menusel=color11;color1;bold - menuhotsel=color5;color1;bold - menuinactive=color8 - -[popupmenu] - _default_=color7;default - menusel=color11;color1;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color1 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color1;bold - -[editor] - _default_=color7;default - editbold=color15;;bold - editmarked=color11;color1;bold - editwhitespace=color12;color4 - editlinestate=color1;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;default - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color5 - changed=color15;color3 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/modarcon16root.ini b/etc/soft/mc/skins/modarcon16root.ini deleted file mode 100644 index 9acaeba..0000000 --- a/etc/soft/mc/skins/modarcon16root.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16root (root) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;color0 - selected=color15;color1 - marked=color11;;bold - markselect=color11;color1;bold - gauge=color15;color1 - input=color15 - inputmark=color11;color1;bold - inputunchanged= - commandlinemark=color11;color1;bold - reverse=color0;color9 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color1;bold - dhotfocus=color5;color1;bold - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color3;bold - errdhotnormal=color13 - errdhotfocus=color13;color3 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color0;color7 - menuhot=color3 - menusel=color11;color1;bold - menuhotsel=color5;color1;bold - menuinactive=color8 - -[popupmenu] - _default_=color0;color7 - menusel=color11;color1;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color1 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color1;bold - -[editor] - _default_=color7;color0 - editbold=color15;;bold - editmarked=color11;color1;bold - editwhitespace=color12;color4 - editlinestate=color1;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;color0 - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color5 - changed=color15;color3 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/modarin256-defbg.ini b/etc/soft/mc/skins/modarin256-defbg.ini deleted file mode 100644 index b3621cb..0000000 --- a/etc/soft/mc/skins/modarin256-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256-DefaultBG (user) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;default - selected=color253;color23 - marked=color228;;bold - markselect=color228;color23;bold - gauge=color250;color66 - input=color187;color235;bold - inputmark=color228;color23;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color23;bold - reverse=color254;color66 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color23;bold - dhotfocus=color214;color23 - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color23;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color23;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color250;default - menuhot=color214 - menusel=color253;color23 - menuhotsel=color214;color23 - menuinactive=color245 - -[popupmenu] - _default_=color250;default - menusel=color253;color23 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color253;color66 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color23;bold - -[editor] - _default_=color250;default - editbold=color228;;bold - editmarked=color228;color23;bold - editwhitespace=color56;color234 - editlinestate=color66;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color250;default - viewunderline=;;underline - -[diffviewer] - changedline=color231;color29 - changednew=color232;color78 - changed=color231;color39 - added=color232;color81 - removed=;color234 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/modarin256.ini b/etc/soft/mc/skins/modarin256.ini deleted file mode 100644 index bae8118..0000000 --- a/etc/soft/mc/skins/modarin256.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256 (user) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color252;color237 - selected=color253;color23 - marked=color228;;bold - markselect=color228;color23;bold - gauge=color250;color66 - input=color187;color235;bold - inputmark=color228;color23;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color23;bold - reverse=color254;color66 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color23;bold - dhotfocus=color214;color23 - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color23;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color23;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color252;color239 - menuhot=color214 - menusel=color253;color23 - menuhotsel=color214;color23 - menuinactive=color246 - -[popupmenu] - _default_=color252;color239 - menusel=color253;color23 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color253;color66 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color23;bold - -[editor] - _default_=color252;color237 - editbold=color228;;bold - editmarked=color228;color23;bold - editwhitespace=color56;color234 - editlinestate=color66;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color252;color237 - viewunderline=;;underline - -[diffviewer] - changedline=color231;color29 - changednew=color232;color78 - changed=color231;color39 - added=color232;color81 - removed=;color235 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/modarin256root-defbg.ini b/etc/soft/mc/skins/modarin256root-defbg.ini deleted file mode 100644 index 9b510fb..0000000 --- a/etc/soft/mc/skins/modarin256root-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256root-DefaultBG (root) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;default - selected=color253;color88 - marked=color228;;bold - markselect=color228;color88;bold - gauge=color250;color95 - input=color187;color235;bold - inputmark=color228;color88;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color88;bold - reverse=color254;color95 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color88;bold - dhotfocus=color214;color88;bold - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color95;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color95;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color250;default - menuhot=color214 - menusel=color253;color88 - menuhotsel=color214;color88 - menuinactive=color245 - -[popupmenu] - _default_=color250;default - menusel=color253;color88 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color254;color95 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color88;bold - -[editor] - _default_=color250;default - editbold=color228;;bold - editmarked=color228;color88;bold - editwhitespace=color56;color234 - editlinestate=color95;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color250;default - viewunderline=;;underline - -[diffviewer] - changedline=color231;color130 - changednew=color232;color208 - changed=color231;color96 - added=color232;color218 - removed=;color234 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/modarin256root.ini b/etc/soft/mc/skins/modarin256root.ini deleted file mode 100644 index 6d6b5fd..0000000 --- a/etc/soft/mc/skins/modarin256root.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256root (root) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color252;color237 - selected=color253;color88 - marked=color228;;bold - markselect=color228;color88;bold - gauge=color250;color95 - input=color187;color235;bold - inputmark=color228;color88;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color88;bold - reverse=color254;color95 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color88;bold - dhotfocus=color214;color88;bold - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color95;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color95;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color252;color239 - menuhot=color214 - menusel=color253;color88 - menuhotsel=color214;color88 - menuinactive=color246 - -[popupmenu] - _default_=color252;color239 - menusel=color253;color88 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color254;color95 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color88;bold - -[editor] - _default_=color252;color237 - editbold=color228;;bold - editmarked=color228;color88;bold - editwhitespace=color56;color234 - editlinestate=color95;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color252;color237 - viewunderline=;;underline - -[diffviewer] - changedline=color231;color130 - changednew=color232;color208 - changed=color231;color96 - added=color232;color218 - removed=;color235 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc/skins/nicedark.ini b/etc/soft/mc/skins/nicedark.ini deleted file mode 100644 index 54233e9..0000000 --- a/etc/soft/mc/skins/nicedark.ini +++ /dev/null @@ -1,143 +0,0 @@ -[skin] - description=Nice and Dark - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;black - selected=lightgray;blue - marked=brown;black - markselect=brown;blue - gauge=black;lightgray - input=lightgray;black - inputunchanged=gray;black - inputmark=black;lightgray - disabled=gray;darkgray - reverse=brown;black - commandlinemark=black;lightgray - header=lightgray;black - inputhistory= - commandhistory= - -[dialog] - _default_=lightgray;darkgray - dfocus=lightgray;blue - dhotnormal=brown;darkgray - dhotfocus=brown;blue - dtitle=brown;darkgray - -[error] - _default_=red;black - errdfocus=black;red - errdhotnormal=brightred;black - errdhotfocus=brown;red - errdtitle=brown;black - -[filehighlight] - directory=blue; - executable=brightgreen; - symlink=gray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=gray; - core=red; - temp=gray; - archive=magenta; - doc=lightgray; - source=brightcyan; - media=green; - graph=cyan; - database=brightred; - -[menu] - _default_=lightgray;black - menuhot=brown;black - menusel=lightgray;blue - menuhotsel=brown;blue - menuinactive=gray;black - -[buttonbar] - hotkey=lightgray;blue - button=lightgray;black - -[statusbar] - _default_=lightgray;black - -[help] - _default_=lightgray;darkgray - helpitalic=red;darkgray - helpbold=brown;darkgray - helplink=blue;darkgray - helpslink=lightgray;blue - helptitle=brown;darkgray - -[editor] - _default_=lightgray;darkgray - editbold=brown;blue - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= - editframe=gray; - editframeactive=lightgray; - editframedrag=brightblue; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewbold=brown;blue - viewunderline=brightred;blue - viewselected=brown;cyan - -[diffviewer] - added=white;brown - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=lightgray;black - menusel=lightgray;blue - menutitle=lightgray;black - -[widget-common] - sort-sign-down=↑ - sort-sign-up=↓ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - diff --git a/etc/soft/mc/skins/sand256.ini b/etc/soft/mc/skins/sand256.ini deleted file mode 100644 index 7f2a55c..0000000 --- a/etc/soft/mc/skins/sand256.ini +++ /dev/null @@ -1,201 +0,0 @@ -# This skin demonstrates how to use 256 colors in mc. -# -# As a prerequisite, you will need to: -# 1) Have a terminal emulator that supports 256 colors (a few examples: -# xterm, Gnome terminal and other VTE derivatives, KDE's Konsole; -# iTerm for Mac OS X, PuTTY for Windows). -# 2) Adjust your TERM variable accordingly, e.g.: export TERM=xterm-256color -# Verify by running tput colors -# -# Each of the 256 colors has two names, you can use whichever you prefer. -# -# One possibility is to use the names "color0" to "color255" to access every -# color directly based on their number. -# -# The first 16 colors ("color0" to "color15") can also be specified by their -# names (these names are already being used by mc for 8/16 color terminals): -# black gray -# red brightred -# green brightgreen -# brown yellow -# blue brightblue -# magenta brightmagenta -# cyan brightcyan -# lightgray white -# Note that with 8/16 color terminal settings (such as TERM=xterm), colors -# of the second column can only be used for the foreground, and their actual -# interpretation varies across terminals. Some terminals show the colors -# from the first column instead (that is, you only have 8 colors), but make -# them bold. Others show the brighter version (16 foreground colors). Yet -# others make them bold and bright at the same time. Switching to 256 colors -# should end this ambiguity: you should have 16 separate colors according to -# their names, none of them are bold by default but any of them can be -# switched to bold, and all of them are available for background, too. This -# is the intended behavior, the actual behavior might vary across terminals. -# -# Colors of the 6x6x6 cube ("color16" to "color231") can alternatively be -# referred to as "rgb000" to "rgb555", all three digits ranging from 0 to 5, -# corresponding to the R, G and B color components. -# -# The 24 grayscale colors ("color232" to "color255") have the aliases "gray0" -# to "gray23". -# -# In addition to the 256 colors, the special word "default" means the -# default foreground or background color of your terminal, while "base" means -# mc's main colors. A missing value means falling back to the _default_ of the -# given section. -# -# Following the foreground and background colors, the third (optional) value -# can specify special attributes to enable. Valid values are bold, underline, -# reverse and blink. Append more with a plus sign, e.g. "underline+bold". -# Leaving the field empty makes it fall back to the attributes of _default_. -# Use any other word (e.g. "none") to prevent fallback and disable all flags. - -[skin] - description=Sand skin using 256 colors - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=black;rgb554 - selected=;rgb452 - marked=rgb400 - markselect=rgb400;rgb452 - gauge=;rgb452 - input=;rgb452 - inputunchanged=gray;rgb452 - inputmark=rgb452;gray - disabled=gray;rgb553 - reverse=;rgb452 - commandlinemark=white;gray - header=red - -[dialog] - _default_=black;rgb553 - dfocus=;rgb452 - dhotnormal=;;underline - dhotfocus=;rgb452;underline - dtitle=;;underline - -[error] - _default_=rgb554;rgb320;bold - errdfocus=black;rgb452;bold - errdhotnormal=;;bold+underline - errdhotfocus=black;rgb452;bold+underline - errdtitle=;;bold+underline - -[filehighlight] - directory= - executable=rgb030 - symlink=rgb202 - hardlink= - # 404 Not Found :) - stalelink=rgb404 - device=rgb231 - special=rgb331 - core=rgb430 - temp=gray15 - archive=rgb012 - doc=rgb103 - source=rgb310 - media=rgb024 - graph=rgb033 - database=rgb421 - -[menu] - _default_=black;rgb452 - menuhot=;;underline - menusel=;rgb551 - menuhotsel=;rgb551;underline - menuinactive= - -[popupmenu] - _default_=black;rgb553 - menusel=;rgb452;underline - menutitle=;;underline - -[buttonbar] - hotkey=black;rgb554 - button=black;rgb452 - -[statusbar] - _default_=black;rgb452 - -[help] - _default_=black;rgb553 - helpitalic=green - helpbold=red - helplink=blue;;underline - helpslink=blue;;reverse - -[editor] - _default_=black;rgb554 - editbold=rgb400 - editmarked=;rgb452 - editwhitespace=rgb400;rgb553 - editlinestate=;rgb553 - bookmark=;rgb551 - bookmarkfound=;rgb530 - editrightmargin=rgb400;rgb553 -# editbg= - editframe=rgb530; - editframeactive=black; - editframedrag=rgb400; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewunderline=;;underline - -[diffviewer] - added=;rgb450 - changedline=blue;rgb553 - changednew=rgb400;rgb553 - changed=;rgb553 - removed=;rgb511 - folder=;rgb530 - error=rgb554;rgb320 - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ - diff --git a/etc/soft/mc/skins/x.ini b/etc/soft/mc/skins/x.ini deleted file mode 100644 index e4f68dd..0000000 --- a/etc/soft/mc/skins/x.ini +++ /dev/null @@ -1,192 +0,0 @@ -# This is a 256 colors MidnightCommander color scheme -# based on the Xoria256 color scheme for the Vim editor -# (http://www.vim.org/scripts/script.php?script_id=2140) - -# Note you'll need mc > 4.7.5 for this scheme to work (256 colors support) -# Hint: compile from the git repository - -# Author : Alexander Glyzov (isee@inbox.ru) -# Last Change : Jan 11, 2011 - -# Special Thanks to Dmitriy Zotikov -- author of the Vim Xoria256 color scheme. - - - -[skin] - description=Xoria256 - 256colors=true - -# [Lines] -# horiz=─ -# vert=│ -# lefttop=┌ -# righttop=┐ -# leftbottom=└ -# rightbottom=┘ -# topmiddle=─ -# bottommiddle=─ -# leftmiddle=├ -# rightmiddle=┤ -# cross=┼ -# dhoriz=─ -# dvert=│ -# dlefttop=┌ -# drighttop=┐ -# dleftbottom=└ -# drightbottom=┘ -# dtopmiddle=─ -# dbottommiddle=─ -# dleftmiddle=├ -# drightmiddle=┤ - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;color234 - selected=;color60 - marked=color228 - markselect=color228;color60 - reverse=color234;color250; - header=color180;;bold - - gauge=white;black - - input=color252;color60;bold - inputunchanged=color250;color60;bold - inputmark=color228;color236;bold - - disabled=color244;color250 - - #inputhistory= - #commandhistory= - #commandlinemark=black;lightgray - -[dialog] - _default_=black;color250 - dhotnormal=color88;; - dfocus=black;color73; - dhotfocus=color88;color73; - dtitle=color235;;bold - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red;bold - -[filehighlight] - directory=;;bold - executable=color114 - symlink=color180 - hardlink= - stalelink=rgb404 - device=rgb231 - special=rgb331 - core=rgb430 - temp=color239 - archive=color174 - doc=rgb033 - source=color29 - media=color110 - graph=color182 - database=color31 - -[menu] - _default_=black;color250 - menuhot=color88;; - menusel=black;color73; - menuhotsel=color88;color73; - menuinactive=color244 - -[popupmenu] - _default_=black;color250 - menusel=black;color73 - menutitle=;;bold - -[buttonbar] - button=black;color250 - hotkey=color88;color181;bold - -[statusbar] - _default_=black;color250 - -[help] - _default_=black;color250 - helpitalic=color88;;bold - helpbold=color235;;bold - helplink=color19;; - helpslink=black;color73;inverse - -[editor] - _default_=color250;color234 - editbold=;;bold - editmarked=;color60 - editwhitespace=color236;color234 - editlinestate=;color235 - bookmark=;color239; - bookmarkfound=;color239;bold - editrightmargin=color180;color235;bold -# editbg= - editframe=color244; - editframeactive=color250; - editframedrag=color73; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewunderline=;;underline - -[diffviewer] - changedline=;color60 - changednew=black;color174 - - added=black;color181 - changed=black;color151 - removed=;color235 - - folder=;color60 - error=rgb554;rgb320 - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ - diff --git a/etc/soft/mc/skins/xoria256.ini b/etc/soft/mc/skins/xoria256.ini deleted file mode 100644 index 8de6e86..0000000 --- a/etc/soft/mc/skins/xoria256.ini +++ /dev/null @@ -1,181 +0,0 @@ -# This is a 256 colors MidnightCommander color scheme -# based on the Xoria256 color scheme for the Vim editor -# (http://http://www.vim.org/scripts/script.php?script_id=2140) - -# Note you'll need mc >= 4.7.6 for this scheme to work (256 colors support) -# Hint: compile from the git repository - -# Author : Alexander Glyzov (isee@inbox.ru) -# Last Change : Jan 11, 2011 - -# Special Thanks to Dmitriy Zotikov -- author of the Vim Xoria256 color scheme. - - - -[skin] - description=Xoria256 - -# [Lines] -# horiz=─ -# vert=│ -# lefttop=┌ -# righttop=┐ -# leftbottom=└ -# rightbottom=┘ -# topmiddle=─ -# bottommiddle=─ -# leftmiddle=├ -# rightmiddle=┤ -# cross=┼ -# dhoriz=─ -# dvert=│ -# dlefttop=┌ -# drighttop=┐ -# dleftbottom=└ -# drightbottom=┘ -# dtopmiddle=─ -# dbottommiddle=─ -# dleftmiddle=├ -# drightmiddle=┤ - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;color234 - selected=;color60 - marked=color228 - markselect=color228;color60 - reverse=color234;color250; - header=color180;;bold - - gauge=white;black - - input=color252;color60;bold - inputunchanged=color250;color60;bold - inputmark=color228;color236;bold - - disabled=color244;color250 - - #inputhistory= - #commandhistory= - #commandlinemark=black;lightgray - -[dialog] - _default_=black;color250 - dhotnormal=color88;; - dfocus=black;color73; - dhotfocus=color88;color73; - dtitle=color235;;bold - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red;bold - -[filehighlight] - directory=;;bold - executable=color114 - symlink=color180 - stalelink=rgb404 - device=rgb231 - special=rgb331 - core=rgb430 - temp=color239 - archive=color174 - doc=rgb033 - source=color29 - media=color110 - graph=color182 - database=color31 - -[menu] - _default_=black;color250 - menuhot=color88;; - menusel=black;color73; - menuhotsel=color88;color73; - menuinactive=color244 - -[popupmenu] - _default_=black;color250 - menusel=black;color73 - menutitle=;;bold - -[buttonbar] - button=black;color250 - hotkey=color88;color181;bold - -[statusbar] - _default_=black;color250 - -[help] - _default_=black;color250 - helpitalic=color88;;bold - helpbold=color235;;bold - helplink=color19;; - helpslink=black;color73;inverse - -[editor] - _default_=color250;color234 - editbold=;;bold - editmarked=;color60 - editwhitespace=color236;color234 - editlinestate=;color235 - bookmark=;color239; - bookmarkfound=;color239;bold - editrightmargin=color180;color235;bold - -[viewer] - viewunderline=;;underline - -[diffviewer] - changedline=;color60 - changednew=black;color174 - - added=black;color181 - changed=black;color151 - removed=;color235 - - folder=;color60 - error=rgb554;rgb320 - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/Tree b/etc/soft/mc_new/Tree deleted file mode 100644 index 1d9672d..0000000 --- a/etc/soft/mc_new/Tree +++ /dev/null @@ -1 +0,0 @@ -Midnight Commander TreeStore v 2.0 diff --git a/etc/soft/mc_new/filehighlight.ini b/etc/soft/mc_new/filehighlight.ini deleted file mode 100644 index f16a689..0000000 --- a/etc/soft/mc_new/filehighlight.ini +++ /dev/null @@ -1,44 +0,0 @@ -[executable] - type=FILE_EXE - -[directory] - type=DIR - -[device] - type=DEVICE - -[special] - type=SPECIAL - -[stalelink] - type=STALE_LINK - -[symlink] - type=SYMLINK - -[core] - regexp=^core\\.*\\d*$ - -[temp] - extensions=tmp;$$$;~;bak;o;elc;toc;out;rej;aux; - extensions_case=false - regexp=(^#.*|.*~$) - -[archive] - extensions=gz;bz2;tar;tgz;rpm;rar;zip;arj;cab;lzma;xz;tbz2;iso;mdf; - -[doc] - extensions=txt;srt;ass;ssa;doc;ps;pdf;xml;html;htm;tex;css;chm;dvi;djvu;log;odt;cue; - -[source] - extensions=c;h;cc;hh;cpp;cxx;hpp;asm;py;pl;pm;inc;cgi;php;phps;js;java;jav;jasm;sh;bash;diff;patch;pas;tcl;tk;awk;m4;st;mak;sl;ada;caml;ml;mli;mly;mll;mlp;sas;prg;hs;hi;erl;lisp;el;ebuild; - -[media] - extensions=mov;mpg;mpeg;mkv;ogm;mp4;m2v;m4v;wmv;rmvb;rm;asf;avi;flv;vob;flac;mka;mp3;ogg;wav;ape;m3u; - -[graph] - extensions=jpg;jpeg;gif;bmp;tga;xpm;tif;tiff;png;svgz;svg;pcx;xpm;eps;wmf;ico; - -[database] - extensions=db;mdb;dat;sql;xls - diff --git a/etc/soft/mc_new/ini b/etc/soft/mc_new/ini deleted file mode 100644 index 97bfd80..0000000 --- a/etc/soft/mc_new/ini +++ /dev/null @@ -1,194 +0,0 @@ - -[Midnight-Commander] -show_backups=1 -show_dot_files=1 -verbose=1 -mark_moves_down=1 -pause_after_run=1 -shell_patterns=1 -auto_save_setup=1 -auto_menu=0 -use_internal_view=1 -use_internal_edit=0 -clear_before_exec=1 -mix_all_files=0 -fast_reload=0 -fast_reload_msg_shown=0 -confirm_delete=1 -confirm_overwrite=1 -confirm_execute=0 -confirm_exit=1 -confirm_directory_hotlist_delete=1 -safe_delete=0 -mouse_repeat_rate=100 -double_click_speed=250 -use_8th_bit_as_meta=0 -confirm_view_dir=0 -mouse_move_pages=1 -mouse_move_pages_viewer=1 -mouse_close_dialog=0 -fast_refresh=0 -navigate_with_arrows=1 -drop_menus=0 -wrap_mode=1 -old_esc_mode=0 -cd_symlinks=1 -show_all_if_ambiguous=0 -max_dirt_limit=10 -torben_fj_mode=0 -use_file_to_guess_type=1 -alternate_plus_minus=0 -only_leading_plus_minus=1 -show_output_starts_shell=0 -panel_scroll_pages=1 -xtree_mode=0 -num_history_items_recorded=60 -file_op_compute_totals=1 -skip_check_codeset=0 -vfs_timeout=60 -ftpfs_directory_timeout=900 -use_netrc=1 -ftpfs_retry_seconds=30 -ftpfs_always_use_proxy=0 -ftpfs_use_passive_connections=1 -ftpfs_use_unix_list_options=1 -ftpfs_first_cd_then_ls=1 -fish_directory_timeout=900 -editor_word_wrap_line_length=72 -editor_key_emulation=0 -editor_tab_spacing=8 -editor_fill_tabs_with_spaces=0 -editor_return_does_auto_indent=1 -editor_backspace_through_tabs=0 -editor_fake_half_tabs=1 -editor_option_save_mode=0 -editor_option_save_position=1 -editor_option_auto_para_formatting=0 -editor_option_typewriter_wrap=0 -editor_edit_confirm_save=1 -editor_syntax_highlighting=1 -editor_persistent_selections=1 -editor_visible_tabs=1 -editor_visible_spaces=1 -editor_line_state=0 -editor_simple_statusbar=0 -nice_rotating_dash=1 -mcview_remember_file_position=0 -auto_fill_mkdir_name=0 -editor_backup_extension=~ - -kilobyte_si=0 -confirm_history_cleanup=1 -ftpfs_use_passive_connections_over_proxy=0 -editor_cursor_beyond_eol=0 -editor_check_new_line=0 -editor_show_right_margin=0 -reverse_files_only=1 -copymove_persistent_attr=1 -select_flags=6 -mcview_eof= -skin=gotar -keymap=mc.keymap -auto_save_setup_panels=1 - -filepos_max_saved_entries=1024 - -quick_search_case_sensitive=2 - -old_esc_mode_timeout=1000000 -classic_progressbar=1 -scroll_pages=1 -filetype_mode=1 -permission_mode=0 -ignore_ftp_chattr_errors=true - -preallocate_space=0 -editor_group_undo=0 - -editor_cursor_after_inserted_block=0 -editor_ask_filename_before_edit=0 -editor_filesize_threshold=64M - -horizontal_split=0 - -[Layout] -message_visible=0 -keybar_visible=0 -xterm_title=1 -output_lines=0 -command_prompt=1 -menubar_visible=0 -show_mini_info=1 -permission_mode=1 -filetype_mode=1 -free_space=1 - -classic_progressbar=true - -horizontal_split=0 -vertical_equal=1 -left_panel_size=85 -horizontal_equal=1 -top_panel_size=87 - -equal_split=1 -first_panel_size=87 - -[Misc] -ftp_proxy_host=gate -find_ignore_dirs= -ftpfs_password=anonymous@ -display_codepage=UTF-8 -source_codepage=UTF-8 - -timeformat_recent=%b %e %H:%M -timeformat_old=%b %e %Y -autodetect_codeset= - -clipboard_store= -clipboard_paste= - -[Colors] -;base_color=lightgray,black:normal=lightgray,black:selected=black,cyan:marked=yellow,black:markselect=yellow,cyan:errors=red,white:menu=white,cyan:reverse=black,lightgray:dnormal=black,lightgray:dfocus=black,cyan:dhotnormal=yellow,lightgray:dhotfocus=yellow,cyan:viewunderline=brightred,blue:menuhot=yellow,cyan:menusel=lightgrey,black:menuhotsel=yellow,black:helpnormal=black,lightgray:helpitalic=red,lightgray:helpbold=yellow,lightgray:helplink=black,cyan:helpslink=yellow,black:gauge=white,black:input=black,cyan:directory=white,black:executable=green,black:link=lightred,black:stalelink=brightred,black:device=brightmagenta,black:core=red,black:special=black,blue:editnormal=lightgray,black:editbold=yellow,black:editmarked=black,cyan:errdhotnormal=red,white:errdhotfocus=yellow,lightgray:archive=brightmagenta -xterm= -color_terminals= - -rxvt-256color= - -linux= - -base_color= - -rxvt-unicode= - -xterm-256color= - -[HotlistConfig] -expanded_view_of_groups=0 - -[Panels] -kilobyte_si=false -mix_all_files=false -show_backups=true -show_dot_files=true -fast_reload=false -fast_reload_msg_shown=false -mark_moves_down=true -reverse_files_only=true -auto_save_setup_panels=true -navigate_with_arrows=true -panel_scroll_pages=true -mouse_move_pages=true -filetype_mode=true -permission_mode=false -quick_search_mode=2 - -simple_swap=false - -show_mini_info=true -torben_fj_mode=false - -[Panelize] - , patch=find . -name *.rej -print - (*.orig) patch=find . -name *.orig -print - SUID/SGID =find . ( ( -perm -04000 -a -perm +011 ) -o ( -perm -02000 -a -perm +01 ) ) -print diff --git a/etc/soft/mc_new/mc.ext b/etc/soft/mc_new/mc.ext deleted file mode 100644 index 9e84aaf..0000000 --- a/etc/soft/mc_new/mc.ext +++ /dev/null @@ -1,742 +0,0 @@ -# Midnight Commander 3.0 extension file -# Warning: Structure of this file has changed completely with version 3.0 -# -# All lines starting with # or empty lines are thrown away. -# Lines starting in the first column should have following format: -# -# keyword/descNL, i.e. everything after keyword/ until new line is desc -# -# keyword can be: -# -# shell (desc is, when starting with a dot, any extension (no wildcars), -# i.e. matches all the files *desc . Example: .tar matches *.tar; -# if it doesn't start with a dot, it matches only a file of that name) -# -# shell/i (desc is, when starting with a dot, any extension (no wildcars), -# The same as shell but with case insensitive. -# -# regex (desc is an extended regular expression) -# Please note that we are using the GNU regex library and thus -# \| matches the literal | and | has special meaning (or) and -# () have special meaning and \( \) stand for literal ( ). -# -# regex/i (desc is an extended regular expression) -# The same as regex but with case insensitive. -# -# type (file matches this if `file %f` matches regular expression desc -# (the filename: part from `file %f` is removed)) -# -# type/i (file matches this if `file %f` matches regular expression desc) -# The same as type but with case insensitive. -# -# directory (matches any directory matching regular expression desc) -# -# include (matches an include directive) -# -# default (matches any file no matter what desc is) -# -# Other lines should start with a space or tab and should be in the format: -# -# keyword=commandNL (with no spaces around =), where keyword should be: -# -# Open (if the user presses Enter or doubleclicks it), -# -# View (F3), Edit (F4) -# -# Include is the keyword used to add any further entries from an include/ -# section -# -# command is any one-line shell command, with the following substitutions: -# -# %% -> % character -# %p -> name of the current file (without path, but pwd is its path). -# Also provided to external application as MC_EXT_BASENAME -# global variable -# %f -> name of the current file. Unlike %p, if file is located on a -# non-local virtual filesystem, i.e. either tarfs or ftpfs, -# then the file will be temporarily copied into a local directory -# and %f will be the full path to this local temporal file. -# If you don't want to get a local copy and want to get the -# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then -# use %d/%p instead of %f. -# Also provided to external application as MC_EXT_FILENAME -# global variable -# %d -> name of the current directory (pwd, without trailing slash) -# Also provided to external application as MC_EXT_CURRENTDIR -# global variable -# %s -> "selected files", i.e. space separated list of tagged files if any -# or name of the current file. -# Also provided to external application as MC_EXT_SELECTED -# global variable -# %t -> list of tagged files -# Also provided to external application as MC_EXT_ONLYTAGGED -# global variable -# %u -> list of tagged files (they'll be untaged after the command) -# -# (If these 6 letters are in uppercase, they refer to the other panel. -# But you shouldn't have to use it in this file.) -# -# -# %cd -> the rest is a path mc should change into (cd won't work, since it's -# a child process). %cd handles even vfs names. -# -# %view -> the command you type will be piped into mc's internal file viewer -# if you type only the %view and no command, viewer will load %f file -# instead (i.e. no piping, so it is different to %view cat %f) -# %view may be directly followed by {} with a list of any of -# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for -# text using backspace for bold and underscore) and unform -# (no highlighting for nroff sequences) separated by commas. -# -# %var -> You use it like this: %var{VAR:default}. This macro will expand -# to the value of the VAR variable in the environment if it's set -# otherwise the value in default will be used. This is similar to -# the Bourne shell ${VAR-default} construct. -# -# Rules are applied from top to bottom, thus the order is important. -# If some actions are missing, search continues as if this target didn't -# match (i.e. if a file matches the first and second entry and View action -# is missing in the first one, then on pressing F3 the View action from -# the second entry will be used. default should catch all the actions. -# -# Any new entries you develop for you are always welcome if they are -# useful on more than one system. You can post your modifications -# as tickets at www.midnight-commander.org - - -### Changes ### -# -# Reorganization: 2012-03-07 Slava Zanko - - -### GIT Repo ### -# gitfs changeset -regex/^\[git\] - Open=%cd %p/changesetfs:// - View=%cd %p/patchsetfs:// - -### Archives ### - -# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk, .gem -regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk$|\.gem$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.gz - -shell/.tar.bz - # Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.bzip - -regex/\.t(ar\.bz2|bz2?|b2)$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.bzip2 - -# .tar.lzma, .tlz -regex/\.t(ar\.lzma|lz)$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.lzma - -# .tar.xz, .txz -regex/\.t(ar\.xz|xz)$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.xz - -# .tar.F - used in QNX -shell/.tar.F - # Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.F - -# .qpr/.qpk - QNX Neutrino package installer files -regex/\.qp[rk]$ - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar.qpr - -# tar -shell/i/.tar - Open=%cd %p/utar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view tar - -# lha -type/^LHa\ .*archive - Open=%cd %p/ulha:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view lha - -# arj -regex/i/\.a(rj|[0-9][0-9])$ - Open=%cd %p/uarj:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view arj - -# cab -shell/i/.cab - Open=%cd %p/ucab:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cab - -# ha -shell/i/.ha - Open=%cd %p/uha:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view ha - -# rar -regex/i/\.r(ar|[0-9][0-9])$ - Open=%cd %p/urar:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view rar - -# ALZip -shell/i/.alz - Open=%cd %p/ualz:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view alz - -# cpio -shell/.cpio.Z - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio.z - -shell/.cpio.xz - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio.xz - -shell/.cpio.gz - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio.gz - -shell/i/.cpio - Open=%cd %p/ucpio:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view cpio - -# 7zip archives (they are not man pages) -shell/i/.7z - Open=%cd %p/u7z:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view 7z - -# patch -regex/\.(diff|patch)(\.bz2)$ - Open=%cd %p/patchfs:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bz2 - -regex/\.(diff|patch)(\.(gz|Z))$ - Open=%cd %p/patchfs:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -# ls-lR -regex/(^|\.)ls-?lR(\.gz|Z|bz2)$ - Open=%cd %p/lslR:// - -# trpm -shell/.trpm - Open=%cd %p/trpm:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view trpm - -# RPM packages (SuSE uses *.spm for source packages) -regex/\.(src\.rpm|spm)$ - Open=%cd %p/rpm:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view src.rpm - -shell/.rpm - Open=%cd %p/rpm:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view rpm - -# deb -regex/\.u?deb$ - Open=%cd %p/deb:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view deb - -# dpkg -shell/.debd - Open=%cd %p/debd:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view debd - -# apt -shell/.deba - Open=%cd %p/deba:// - View=%view{ascii} /usr/libexec/mc/ext.d/package.sh view deba - -# ISO9660 -shell/i/.iso - Open=%cd %p/iso9660:// - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view iso9660 - - -regex/\.(diff|patch)$ - Open=%cd %p/patchfs:// - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view cat - -# ar library -regex/\.s?a$ - Open=%cd %p/uar:// - #Open=%view{ascii} ar tv %f - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view ar - -# gplib -shell/i/.lib - Open=%cd %p/ulib:// - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view lib - - -# Mailboxes -type/^ASCII\ mail\ text - Open=%cd %p/mailfs:// - - -### Sources ### - -# C/C++ -regex/i/\.(c|cc|cpp)$ - Include=editor - -# C/C++ header -regex/i/\.(h|hh|hpp)$ - Include=editor - -# Fortran -shell/i/.f - Include=editor - -# Assembler -regex/i/\.(s|asm)$ - Include=editor - -include/editor - Open=%var{EDITOR:vi} %f - -# .so libraries -regex/\.(so|so\.[0-9\.]*)$ - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view so - -# Object -type/^ELF - #Open=%var{PAGER:more} %f - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view elf - -### Documentation ### - -# Texinfo -#regex/\.(te?xi|texinfo)$ - -# GNU Info page -type/^Info\ text - Open=/usr/libexec/mc/ext.d/text.sh open info - -shell/.info - Open=/usr/libexec/mc/ext.d/text.sh open info - -# Exception: .3gp are video files not manual pages -shell/i/.3gp - Include=video - -# Manual page -regex/(([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])|\.man)$ - Open=/usr/libexec/mc/ext.d/text.sh open man %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man %var{PAGER:more} - -# Perl pod page -shell/.pod - Open=/usr/libexec/mc/ext.d/text.sh open pod %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view pod %var{PAGER:more} - -# Troff with me macros. -# Exception - "read.me" is not a nroff file. -shell/read.me - Open= - View= - -shell/.me - Open=/usr/libexec/mc/ext.d/text.sh open nroff.me %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view nroff.me %var{PAGER:more} - -# Troff with ms macros. -shell/.ms - Open=/usr/libexec/mc/ext.d/text.sh open nroff.ms %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view nroff.ms %var{PAGER:more} - -# Manual page - compressed -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.g?[Zz]$ - Open=/usr/libexec/mc/ext.d/text.sh open man.gz %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.gz %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz$ - Open=/usr/libexec/mc/ext.d/text.sh open man.bz %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.bz %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz2$ - Open=/usr/libexec/mc/ext.d/text.sh open man.bz2 %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.bz2 %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$ - Open=/usr/libexec/mc/ext.d/text.sh open man.lzma %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.lzma %var{PAGER:more} - -regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$ - Open=/usr/libexec/mc/ext.d/text.sh open man.xz %var{PAGER:more} - View=%view{ascii,nroff} /usr/libexec/mc/ext.d/text.sh view man.xz %var{PAGER:more} - -# CHM -shell/i/.chm - Open=/usr/libexec/mc/ext.d/text.sh open chm - -### Images ### - -type/^GIF - Include=image - -type/^JPEG - View=%view{ascii} /usr/libexec/mc/ext.d/image.sh view jpeg - Include=image - -type/^PC\ bitmap - Include=image - -type/^PNG - Include=image - -type/^JNG - Include=image - -type/^MNG - Include=image - -type/^TIFF - Include=image - -type/^PBM - Include=image - -type/^PGM - Include=image - -type/^PPM - Include=image - -type/^Netpbm - Include=image - -shell/.xcf - Open=/usr/libexec/mc/ext.d/image.sh open xcf - -shell/.xbm - Open=/usr/libexec/mc/ext.d/image.sh open xbm - -shell/.xpm - Include=image - View=/usr/libexec/mc/ext.d/image.sh view xpm %f - -shell/.ico - Include=image - -shell/i/.svg - View=%view{ascii} /usr/libexec/mc/ext.d/image.sh view svg - Open=/usr/libexec/mc/ext.d/image.sh open svg - -include/image - Open=geeqie - View=%view{ascii} /usr/libexec/mc/ext.d/image.sh view ALL_FORMATS - - -### Sound files ### - -regex/i/\.(wav|snd|voc|au|smp|aiff|snd|m4a|ape|aac|wv)$ - Open=/usr/libexec/mc/ext.d/sound.sh open common - -regex/i/\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$ - Open=/usr/libexec/mc/ext.d/sound.sh open mod - -shell/i/.waw22 - Open=/usr/libexec/mc/ext.d/sound.sh open wav22 - -shell/i/.mp3 - Open=/usr/libexec/mc/ext.d/sound.sh open mp3 - View=%view{ascii} /usr/libexec/mc/ext.d/sound.sh view mp3 - -regex/i/\.og[gax]$ - Open=/usr/libexec/mc/ext.d/sound.sh open ogg - View=%view{ascii} /usr/libexec/mc/ext.d/sound.sh view ogg - -regex/i/\.(spx|flac)$ - Open=/usr/libexec/mc/ext.d/sound.sh open common - -regex/i/\.(midi?|rmid?)$ - Open=/usr/libexec/mc/ext.d/sound.sh open midi - -shell/i/.wma - Open=/usr/libexec/mc/ext.d/sound.sh open wma - View=%view{ascii} /usr/libexec/mc/ext.d/sound.sh view wma - - -### Play lists ### - -regex/i/\.(m3u|pls)$ - Open=/usr/libexec/mc/ext.d/sound.sh open playlist - - -### Video ### - -shell/i/.avi - Include=video - -regex/i/\.as[fx]$ - Include=video - -shell/i/.divx - Include=video - -shell/i/.mkv - Include=video - -regex/i/\.(mov|qt)$ - Include=video - -regex/i/\.(mp4|m4v|mpe?g)$ - Include=video - -# MPEG-2 TS container + H.264 codec -shell/i/.mts - Include=video - -shell/i/.ts - Include=video - -shell/i/.vob - Include=video - -shell/i/.wmv - Include=video - -regex/i/\.fl[icv]$ - Include=video - -shell/i/.ogv - Include=video - -regex/i/\.ra?m$ - Open=/usr/libexec/mc/ext.d/video.sh open ram - -# WebM -shell/i/.webm - Include=video - -type/WebM - Include=video - -include/video - Open=vlc %p - View=%view{ascii} /usr/libexec/mc/ext.d/video.sh view ALL_FORMATS - - -### Documents ### - -# Postscript -type/^PostScript - Include=zathura - -# PDF -type/^PDF - Include=zathura - -# DjVu -regex/i/\.djvu?$ - Include=zathura - -include/zathura - Open=nohup zathura -c %var{SHELLRC:~/.shellrc}/etc/soft/zathura/ -d %var{SHELLRC:~/.shellrc}/etc/soft/zathura/ -p %var{SHELLRC:~/.shellrc}/etc/soft/zathura/plugins %p &>/dev/null & - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view djvu - -# html -regex/i/\.html?$ - Open=/usr/libexec/mc/ext.d/web.sh open html - View=%view{ascii} /usr/libexec/mc/ext.d/web.sh view html - -# StarOffice 5.2 -shell/.sdw - Open=/usr/libexec/mc/ext.d/doc.sh open ooffice - -# StarOffice 6 and OpenOffice.org formats -regex/i/\.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg)$ - Open=/usr/libexec/mc/ext.d/doc.sh open ooffice - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view odt - -# AbiWord -shell/.abw - Open=/usr/libexec/mc/ext.d/doc.sh open abw - -# Gnumeric -shell/i/.gnumeric - Open=/usr/libexec/mc/ext.d/doc.sh open gnumeric - -# Microsoft Word Document -regex/i/\.(do[ct]|wri)$ - Open=/usr/libexec/mc/ext.d/doc.sh open msdoc - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msdoc -type/^Microsoft\ Word - Open=/usr/libexec/mc/ext.d/doc.sh open msdoc - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msdoc - -# RTF document -shell/i/.rtf - Open=/usr/libexec/mc/ext.d/doc.sh open msdoc - -# Microsoft Excel Worksheet -regex/i/\.xl[sw]$ - Open=/usr/libexec/mc/ext.d/doc.sh open msxls - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msxls -type/^Microsoft\ Excel - Open=/usr/libexec/mc/ext.d/doc.sh open msxls - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msxls - -regex/i/\.(ppt|pps)$ - Open=/usr/libexec/mc/ext.d/doc.sh open msppt - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view msppt - -# Use OpenOffice.org to open any MS Office documents -type/^Microsoft\ Office\ Document - Open=/usr/libexec/mc/ext.d/doc.sh open ooffice - -# Framemaker -type/^FrameMaker - Open=/usr/libexec/mc/ext.d/doc.sh open framemaker - -# DVI -shell/i/.dvi - Open=/usr/libexec/mc/ext.d/doc.sh open dvi - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view dvi - -# TeX -shell/i/.tex - Include=editor - -# Comic Books -regex/i/\.cb[zr]$ - Open=/usr/libexec/mc/ext.d/doc.sh open comic - -# Epub -shell/i/.epub - Open=/usr/libexec/mc/ext.d/doc.sh open epub - View=%view{ascii} /usr/libexec/mc/ext.d/doc.sh view epub - - -### Miscellaneous ### - -# Compiled Java classes -shell/.class - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view javaclass - -# Makefile -regex/[Mm]akefile$ - Open=make -f %f %{Enter parameters} - -# Imakefile -shell/Imakefile - Open=/usr/libexec/mc/ext.d/misc.sh open imakefile - -# Makefile.PL (MakeMaker) -regex/^Makefile.(PL|pl)$ - Open=%var{PERL:perl} %f - -# sqlite3.db -type/^SQLite 3.x database - Open=/usr/libexec/mc/ext.d/misc.sh open sqlite - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view sqlite - -# dbf -shell/i/.dbf - Open=/usr/libexec/mc/ext.d/misc.sh open dbf - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view dbf - -# REXX script -regex/\.(rexx?|cmd)$ - Open=rexx %f %{Enter parameters};echo "Press ENTER";read y - -# Disk images for Commodore computers (VIC20, C64, C128) -shell/i/.d64 - Open=%cd %p/uc1541:// - View=%view{ascii} c1541 %f -list - Extract=c1541 %f -extract - -# Glade, a user interface designer for GTK+ and GNOME -shell/i/.glade - Open=/usr/libexec/mc/ext.d/misc.sh open glade - -# Gettext Catalogs -shell/.mo - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view mo - -# lyx -shell/i/.lyx - Open=/usr/libexec/mc/ext.d/misc.sh open lyx - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view lyx - -# torrent -shell/i/.torrent - View=%view{ascii} /usr/libexec/mc/ext.d/misc.sh view torrent - -### Plain compressed files ### - -# ace -shell/i/.ace - Open=%cd %p/uace:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view ace - Extract=unace x %f - -# arc -shell/i/.arc - Open=%cd %p/uarc:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view arc - Extract=arc x %f '*' - Extract (with flags)=I=%{Enter any Arc flags:}; if test -n "$I"; then arc x $I %f; fi - -# zip -type/i/^zip\ archive - Open=%cd %p/uzip:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view zip - -# zoo -shell/i/.zoo - Open=%cd %p/uzoo:// - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view zoo - -# gzip -type/^gzip - Open=/usr/libexec/mc/ext.d/archive.sh view gz %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -regex/\.(gz|Z)$ - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -# bzip2 -type/^bzip2 - Open=/usr/libexec/mc/ext.d/archive.sh view bzip2 %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bz2 - -regex/\.bz2?$ - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bz2 - -# bzip -type/^bzip - Open=/usr/libexec/mc/ext.d/archive.sh view bzip %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view bzip - -# compress -type/^compress - Open=/usr/libexec/mc/ext.d/archive.sh view gz %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view gz - -# lzma -regex/\.lzma$ - Open=/usr/libexec/mc/ext.d/archive.sh view lzma %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view lzma - -# xz -regex/\.xz$ - Open=/usr/libexec/mc/ext.d/archive.sh view xz %var{PAGER:more} - View=%view{ascii} /usr/libexec/mc/ext.d/archive.sh view xz - -# Parity Archive -type/^Parity\ Archive\ Volume\ Set - Open=/usr/libexec/mc/ext.d/archive.sh open par2 - -### Default ### - -# Default target for anything not described above -default/* - Open= - View= - - -### EOF ### diff --git a/etc/soft/mc_new/skins/dark.ini b/etc/soft/mc_new/skins/dark.ini deleted file mode 100644 index 4f58e86..0000000 --- a/etc/soft/mc_new/skins/dark.ini +++ /dev/null @@ -1,151 +0,0 @@ -[skin] - description=Dark skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;black - selected=black;cyan - marked=yellow;black - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;blue - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;black - inputhistory= - commandhistory= - -[dialog] - _default_=brightcyan;blue - dfocus=blue;cyan - dhotnormal=white; - dhotfocus=white;cyan - dtitle=white; - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightmagenta; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=brightblue; - core=red; - temp=gray; - archive=brightgreen; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=lightgray;blue - menuhot=white;blue - menusel=black;cyan - menuhotsel=white;cyan - menuinactive=black;white - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;black - editbold=yellow;brightgreen - editmarked=black;white - editwhitespace=brightblue;black - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=white;blue -# editbg= - editframe=gray; - editframeactive=lightgray; - editframedrag=red; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewbold=yellow;black - viewunderline=brightred;black - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[buttonbar] - hotkey=red;white - button=black;white - -[statusbar] - _default_=black;white - -[popupmenu] - _default_=lightgray;blue - menusel=black;cyan - menutitle=lightgray;blue - -[widget-common] - sort-sign-up=↑ - sort-sign-down=↓ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = ← - history-next-item-sign = → - history-show-list-sign = ↓ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ - diff --git a/etc/soft/mc_new/skins/darkfar.ini b/etc/soft/mc_new/skins/darkfar.ini deleted file mode 100644 index c053671..0000000 --- a/etc/soft/mc_new/skins/darkfar.ini +++ /dev/null @@ -1,150 +0,0 @@ -[skin] - description=Dark Far skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=lightgray;black - selected=black;cyan - marked=yellow;black - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;blue - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;black - inputhistory= - commandhistory= - -[dialog] - _default_=brightcyan;blue - dfocus=blue;cyan - dhotnormal=white; - dhotfocus=white;cyan - dtitle=white; - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightmagenta; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=brightblue; - core=red; - temp=gray; - archive=brightgreen; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=lightgray;blue - menuhot=white;blue - menusel=black;cyan - menuhotsel=white;cyan - menuinactive=black;white - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;black - editbold=yellow;brightgreen - editmarked=black;white - editwhitespace=brightblue;black - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=white;blue -# editbg= - editframe=gray; - editframeactive=lightgray; - editframedrag=white; - window-state-char = ↕ - window-close-char = × - -[viewer] - viewbold=yellow;black - viewunderline=brightred;black - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[buttonbar] - hotkey=red;white - button=black;white - -[statusbar] - _default_=black;white - -[popupmenu] - _default_=lightgray;blue - menusel=black;cyan - menutitle=lightgray;blue - -[widget-common] - sort-sign-up=↑ - sort-sign-down=↓ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = ← - history-next-item-sign = → - history-show-list-sign = ↓ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/default.ini b/etc/soft/mc_new/skins/default.ini deleted file mode 100644 index aaeb898..0000000 --- a/etc/soft/mc_new/skins/default.ini +++ /dev/null @@ -1,138 +0,0 @@ -[skin] - description=Standard skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;lightgray - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdtitle=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=black; - core=red; - temp=gray; - archive=brightmagenta; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=white;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=black;cyan - -[buttonbar] - hotkey=white;black - button=black;cyan - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow;brightgreen - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg=lightgray; -# editframe=lightgray; - editframeactive=white; - editframedrag=green; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=yellow;black - menutitle=yellow;cyan - -[widget-common] - sort-sign-up = ' - sort-sign-down = , - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc_new/skins/double-lines.ini b/etc/soft/mc_new/skins/double-lines.ini deleted file mode 100644 index 8a4a8ec..0000000 --- a/etc/soft/mc_new/skins/double-lines.ini +++ /dev/null @@ -1,137 +0,0 @@ -[skin] - description=Far-like skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - commandlinemark=black;lightgray - disabled=gray;lightgray - reverse=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=black; - core=red; - temp=gray; - archive=brightmagenta; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=white;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=lightgray;blue - -[buttonbar] - hotkey=lightgray;blue - button=lightgray;blue - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow;brightgreen - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= -# editframe= - editframeactive=white; - editframedrag=green; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=white;black - menutitle=white;cyan - -[widget-common] - sort-sign-up = ' - sort-sign-down = , - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc_new/skins/featured.ini b/etc/soft/mc_new/skins/featured.ini deleted file mode 100644 index 26d049f..0000000 --- a/etc/soft/mc_new/skins/featured.ini +++ /dev/null @@ -1,156 +0,0 @@ -# Please, use this skin in UTF-8 system codepage only. - -[skin] - description=Enhanced standart skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=gray;cyan - inputmark=cyan;black - disabled=gray;lightgray - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=black; - core=red; - temp=gray; - archive=brightmagenta; - doc=brown; - source=cyan; - media=green; - graph=brightcyan; - database=brightred; - -[menu] - _default_=white;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=black;cyan - -[buttonbar] - hotkey=white;black - button=black;cyan - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow;brightgreen - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= -# editframe= - editframeactive=lightgray; - editframedrag=cyan; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=white;black - menutitle=white;cyan - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = ⋅ - hiddenfiles-sign-hide = • - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - diff --git a/etc/soft/mc_new/skins/gotar.ini b/etc/soft/mc_new/skins/gotar.ini deleted file mode 100644 index 1cc61c9..0000000 --- a/etc/soft/mc_new/skins/gotar.ini +++ /dev/null @@ -1,131 +0,0 @@ -[skin] - description=GoTaR @PLD Linux - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;black - selected=white;blue - marked=brightred; - markselect=yellow; - gauge=;yellow - input=brightgreen; - disabled=gray;blue - reverse=brightgreen;blue - header=brightred; - inputhistory= - commandhistory= - -[dialog] - _default_=brightcyan;blue - dfocus=brightred;black - dhotnormal=brightred; - dhotfocus=yellow;black - dtitle=brightred; - -[error] - _default_=white;red - errdfocus=brightgreen;blue - errdhotnormal=yellow; - errdhotfocus=yellow;blue - errdtitle=yellow; - -[filehighlight] - directory=brightcyan; - executable=brightgreen; - symlink=red; - hardlink= - stalelink=yellow;blue - device=green; - special=brightblue; - core=red; - temp=gray; - archive=cyan; - doc=brown; - source=green; - media=white; - graph=magenta; - database=; - -[menu] - _default_=brightgreen;black - menuhot=brightred; - menusel=brightcyan;blue - menuhotsel=yellow; - menuinactive=lightgray; - -[buttonbar] - hotkey=lightgray;black - button=white;blue - -[statusbar] - _default_=white;blue - -[help] - _default_=brightred;black - helpitalic=brightcyan; - helpbold=brightgreen; - helplink=white; - helpslink=yellow;blue - helptitle=brightgreen; - -[editor] - _default_=lightgray;black - editbold=yellow;blue - editmarked=brightgreen;red - editwhitespace=brightblue;blue - editlinestate=brightgreen - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;blue -# editbg= -# editframe= - editframeactive=white; - editframedrag=green; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=brightred;black - viewunderline=brightgreen;black - viewselected=yellow;black - -[diffviewer] - _default_=lightgray;black - added=brightgreen; - changedline=cyan; - changednew=yellow; - changed=;brown - removed=;blue - folder=brightblue; - error=white;red - -[popupmenu] - _default_=brightgreen;black - menusel=brightcyan;blue - menutitle=brightcyan;black - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc_new/skins/mc46.ini b/etc/soft/mc_new/skins/mc46.ini deleted file mode 100644 index ce486df..0000000 --- a/etc/soft/mc_new/skins/mc46.ini +++ /dev/null @@ -1,129 +0,0 @@ -[skin] - description=mc-4.6 skin - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;blue - selected=black;cyan - marked=yellow;blue - markselect=yellow;cyan - gauge=white;black - input=black;cyan - inputunchanged=black;cyan - inputmark=cyan;black - disabled=gray;lightgray - reverse=black;lightgray - commandlinemark=black;lightgray - header=yellow;blue - inputhistory= - commandhistory= - -[dialog] - _default_=black;lightgray - dfocus=black;cyan - dhotnormal=blue;lightgray - dhotfocus=blue;cyan - dtitle=blue;lightgray - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdtitle=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red - -[filehighlight] - directory=white; - executable=brightgreen; - symlink=lightgray; - stalelink=brightred; - device=brightmagenta; - special=black; - -[menu] - _default_=black;cyan - menuhot=yellow;cyan - menusel=white;black - menuhotsel=yellow;black - menuinactive=gray;cyan - -[buttonbar] - hotkey=lightgray;black - button=black;cyan - -[statusbar] - _default_=black;cyan - -[help] - _default_=black;lightgray - helpitalic=red;lightgray - helpbold=blue;lightgray - helplink=black;cyan - helpslink=yellow;blue - helptitle=blue;lightgray - -[editor] - _default_=lightgray;blue - editbold=yellow; - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= -# editframe= - editframeactive=lightgray; - editframedrag=cyan; - window-state-char = * - window-close-char = X - -[viewer] - viewbold=yellow;blue - viewunderline=brightred;blue - viewselected=yellow;cyan - -[diffviewer] - added=white;green - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=white;cyan - menusel=yellow;black - menutitle=yellow;cyan - -[widget-common] - sort-sign-up = ' - sort-sign-down = , - -[widget-panel] - filename-scroll-left-char = { - filename-scroll-right-char = } diff --git a/etc/soft/mc_new/skins/modarcon16-defbg.ini b/etc/soft/mc_new/skins/modarcon16-defbg.ini deleted file mode 100644 index ec06e9b..0000000 --- a/etc/soft/mc_new/skins/modarcon16-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16-DefaultBG (user) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;default - selected=color15;color2 - marked=color11;;bold - markselect=color11;color2;bold - gauge=color15;color2 - input=color15;color0 - inputmark=color11;color2;bold - inputunchanged=;color0 - commandlinemark=color11;color2;bold - reverse=color0;color10 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color2;bold - dhotfocus=color3;color2 - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color2;bold - errdhotnormal=color13 - errdhotfocus=color13;color2 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color7;default - menuhot=color3 - menusel=color11;color2;bold - menuhotsel=color3;color2 - menuinactive=color8 - -[popupmenu] - _default_=color7;default - menusel=color11;color2;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color2 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color2;bold - -[editor] - _default_=color7;default - editbold=color15;;bold - editmarked=color11;color2;bold - editwhitespace=color12;color4 - editlinestate=color2;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;default - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color2 - changed=color15;color6 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/modarcon16.ini b/etc/soft/mc_new/skins/modarcon16.ini deleted file mode 100644 index 6e9d061..0000000 --- a/etc/soft/mc_new/skins/modarcon16.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16 (user) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;color0 - selected=color15;color2 - marked=color11;;bold - markselect=color11;color2;bold - gauge=color15;color2 - input=color15 - inputmark=color11;color2;bold - inputunchanged= - commandlinemark=color11;color2;bold - reverse=color0;color10 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color2;bold - dhotfocus=color3;color2 - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color2;bold - errdhotnormal=color13 - errdhotfocus=color13;color2 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color0;color7 - menuhot=color3 - menusel=color11;color2;bold - menuhotsel=color3;color2 - menuinactive=color8 - -[popupmenu] - _default_=color0;color7 - menusel=color11;color2;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color2 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color2;bold - -[editor] - _default_=color7;color0 - editbold=color15;;bold - editmarked=color11;color2;bold - editwhitespace=color12;color4 - editlinestate=color2;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;color0 - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color2 - changed=color15;color6 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/modarcon16root-defbg.ini b/etc/soft/mc_new/skins/modarcon16root-defbg.ini deleted file mode 100644 index 14b8b01..0000000 --- a/etc/soft/mc_new/skins/modarcon16root-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16root-DefaultBG (root) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;default - selected=color15;color1 - marked=color11;;bold - markselect=color11;color1;bold - gauge=color15;color1 - input=color15;color0 - inputmark=color11;color1;bold - inputunchanged=;color0 - commandlinemark=color11;color1;bold - reverse=color0;color9 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color1;bold - dhotfocus=color5;color1;bold - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color3;bold - errdhotnormal=color13 - errdhotfocus=color13;color3 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color7;default - menuhot=color3 - menusel=color11;color1;bold - menuhotsel=color5;color1;bold - menuinactive=color8 - -[popupmenu] - _default_=color7;default - menusel=color11;color1;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color1 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color1;bold - -[editor] - _default_=color7;default - editbold=color15;;bold - editmarked=color11;color1;bold - editwhitespace=color12;color4 - editlinestate=color1;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;default - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color5 - changed=color15;color3 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/modarcon16root.ini b/etc/soft/mc_new/skins/modarcon16root.ini deleted file mode 100644 index 9acaeba..0000000 --- a/etc/soft/mc_new/skins/modarcon16root.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarCon16root (root) - 256colors=false - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color7;color0 - selected=color15;color1 - marked=color11;;bold - markselect=color11;color1;bold - gauge=color15;color1 - input=color15 - inputmark=color11;color1;bold - inputunchanged= - commandlinemark=color11;color1;bold - reverse=color0;color9 - header=color3 - disabled=color8;color7 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color0;color7 - dhotnormal=color3 - dfocus=color11;color1;bold - dhotfocus=color5;color1;bold - dtitle=color11;;bold - -[error] - _default_=color15;color1 - errdfocus=color11;color3;bold - errdhotnormal=color13 - errdhotfocus=color13;color3 - errdtitle=color11;;bold - -[filehighlight] - directory=color15;;bold - executable=color10 - symlink=color12 - hardlink= - stalelink=color9 - device=color13 - special=color3 - core=color1 - temp=color8 - archive=color3 - doc=color14 - source=color6 - media=color5 - graph=color13 - database=color2 - -[menu] - _default_=color0;color7 - menuhot=color3 - menusel=color11;color1;bold - menuhotsel=color5;color1;bold - menuinactive=color8 - -[popupmenu] - _default_=color0;color7 - menusel=color11;color1;bold - menutitle=color11;;bold - -[buttonbar] - button=color7 - hotkey=color15;color3 - -[statusbar] - _default_=color15;color1 - -[help] - _default_=color0;color7 - helpitalic=color10;;bold - helpbold=color5 - helplink=color14 - helpslink=color11;color1;bold - -[editor] - _default_=color7;color0 - editbold=color15;;bold - editmarked=color11;color1;bold - editwhitespace=color12;color4 - editlinestate=color1;color0 - bookmark=color0;color7 - bookmarkfound=color0;color7 - editrightmargin=color0;color7 - -[viewer] - _default_=color7;color0 - viewunderline=;;underline - -[diffviewer] - changedline=color15;color4 - changednew=color15;color5 - changed=color15;color3 - added=color0;color7 - removed=color8;color0 - folder=color11;color0;bold - error=color15;color1 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/modarin256-defbg.ini b/etc/soft/mc_new/skins/modarin256-defbg.ini deleted file mode 100644 index b3621cb..0000000 --- a/etc/soft/mc_new/skins/modarin256-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256-DefaultBG (user) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;default - selected=color253;color23 - marked=color228;;bold - markselect=color228;color23;bold - gauge=color250;color66 - input=color187;color235;bold - inputmark=color228;color23;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color23;bold - reverse=color254;color66 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color23;bold - dhotfocus=color214;color23 - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color23;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color23;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color250;default - menuhot=color214 - menusel=color253;color23 - menuhotsel=color214;color23 - menuinactive=color245 - -[popupmenu] - _default_=color250;default - menusel=color253;color23 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color253;color66 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color23;bold - -[editor] - _default_=color250;default - editbold=color228;;bold - editmarked=color228;color23;bold - editwhitespace=color56;color234 - editlinestate=color66;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color250;default - viewunderline=;;underline - -[diffviewer] - changedline=color231;color29 - changednew=color232;color78 - changed=color231;color39 - added=color232;color81 - removed=;color234 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/modarin256.ini b/etc/soft/mc_new/skins/modarin256.ini deleted file mode 100644 index bae8118..0000000 --- a/etc/soft/mc_new/skins/modarin256.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256 (user) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color252;color237 - selected=color253;color23 - marked=color228;;bold - markselect=color228;color23;bold - gauge=color250;color66 - input=color187;color235;bold - inputmark=color228;color23;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color23;bold - reverse=color254;color66 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color23;bold - dhotfocus=color214;color23 - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color23;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color23;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color252;color239 - menuhot=color214 - menusel=color253;color23 - menuhotsel=color214;color23 - menuinactive=color246 - -[popupmenu] - _default_=color252;color239 - menusel=color253;color23 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color253;color66 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color23;bold - -[editor] - _default_=color252;color237 - editbold=color228;;bold - editmarked=color228;color23;bold - editwhitespace=color56;color234 - editlinestate=color66;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color252;color237 - viewunderline=;;underline - -[diffviewer] - changedline=color231;color29 - changednew=color232;color78 - changed=color231;color39 - added=color232;color81 - removed=;color235 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/modarin256root-defbg.ini b/etc/soft/mc_new/skins/modarin256root-defbg.ini deleted file mode 100644 index 9b510fb..0000000 --- a/etc/soft/mc_new/skins/modarin256root-defbg.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256root-DefaultBG (root) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;default - selected=color253;color88 - marked=color228;;bold - markselect=color228;color88;bold - gauge=color250;color95 - input=color187;color235;bold - inputmark=color228;color88;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color88;bold - reverse=color254;color95 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color88;bold - dhotfocus=color214;color88;bold - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color95;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color95;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color250;default - menuhot=color214 - menusel=color253;color88 - menuhotsel=color214;color88 - menuinactive=color245 - -[popupmenu] - _default_=color250;default - menusel=color253;color88 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color254;color95 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color88;bold - -[editor] - _default_=color250;default - editbold=color228;;bold - editmarked=color228;color88;bold - editwhitespace=color56;color234 - editlinestate=color95;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color250;default - viewunderline=;;underline - -[diffviewer] - changedline=color231;color130 - changednew=color232;color208 - changed=color231;color96 - added=color232;color218 - removed=;color234 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/modarin256root.ini b/etc/soft/mc_new/skins/modarin256root.ini deleted file mode 100644 index 6d6b5fd..0000000 --- a/etc/soft/mc_new/skins/modarin256root.ini +++ /dev/null @@ -1,182 +0,0 @@ -# -# modarin256: a moderate-dark-independent 256-color skin for MidnightCommander. -# -# This skin is using colors independent from the default 16 terminal colors, -# i.e., no matter how the 16 standard colors are configured, the appearance -# of Midnight Commander will not be affected. -# -# There are 4 variants of this skin: -# -# modarin256 -# - default skin, no standard colors used. -# -# modarin256-defbg -# - like modarin256, but using the default background color for core, editor, -# viewer, menu and popupmenu backgrounds, for use with (semi-)transparent -# background colors. -# -# modarin256root -# modarin256root-defbg -# - like the other two skins, but for the root user, with red colors used -# instead of green colors for things like select/focus/statusbar etc., -# to keep reminding the user that mc is running as root. -# -# Fallback skins for 16-color terminals (poor man's skins): -# -# modarcon16 -# modarcon16-defbg -# modarcon16root -# modarcon16root-defbg -# - like everything running in a 16-color terminal, these skins look ugly -# and are no subsitute for the 256-color versions. As some terminals don't -# support using dark gray as background color, i used a black background -# and adjusted the remaining colors accordingly. -# -# 256-color skins require mc version 4.8 or newer. -# -# Author: Oliver Lange -# -# Version: 1.2 -# - -[skin] - description=MoDarIn256root (root) - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color252;color237 - selected=color253;color88 - marked=color228;;bold - markselect=color228;color88;bold - gauge=color250;color95 - input=color187;color235;bold - inputmark=color228;color88;bold - inputunchanged=color144;color235;bold - commandlinemark=color228;color88;bold - reverse=color254;color95 - header=color180;;bold - disabled=color246;color239 - #inputhistory= - #commandhistory= - -[dialog] - _default_=color252;color239 - dhotnormal=color214 - dfocus=color228;color88;bold - dhotfocus=color214;color88;bold - dtitle=color180;;bold - -[error] - _default_=color230;color52 - errdfocus=color254;color95;bold - errdhotnormal=color203;color52 - errdhotfocus=color203;color95;bold - errdtitle=color227;;bold - -[filehighlight] - directory=color144;;bold - executable=color114 - symlink=color45 - hardlink= - stalelink=color203 - device=color170 - special=color142 - core=color197 - temp=color245 - archive=color172 - doc=color153 - source=color109 - media=color141 - graph=color216 - database=color103 - -[menu] - _default_=color252;color239 - menuhot=color214 - menusel=color253;color88 - menuhotsel=color214;color88 - menuinactive=color246 - -[popupmenu] - _default_=color252;color239 - menusel=color253;color88 - menutitle=color180;;bold - -[buttonbar] - button=color253;color236 - hotkey=color214;color238;bold - -[statusbar] - _default_=color254;color95 - -[help] - _default_=color252;color239 - helpitalic=color114;;bold - helpbold=color180;;bold - helplink=color45 - helpslink=color228;color88;bold - -[editor] - _default_=color252;color237 - editbold=color228;;bold - editmarked=color228;color88;bold - editwhitespace=color56;color234 - editlinestate=color95;color235 - bookmark=;color239 - bookmarkfound=;color239;bold - editrightmargin=;color235;bold - -[viewer] - _default_=color252;color237 - viewunderline=;;underline - -[diffviewer] - changedline=color231;color130 - changednew=color232;color208 - changed=color231;color96 - added=color232;color218 - removed=;color235 - folder=color232;color185 - error=color231;color160 - -[widget-common] - sort-sign-up=↓ - sort-sign-down=↑ - -[widget-panel] - hiddenfiles-sign-show=• - hiddenfiles-sign-hide=○ - history-prev-item-sign=« - history-next-item-sign=» - history-show-list-sign=^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/mc_new/skins/nicedark.ini b/etc/soft/mc_new/skins/nicedark.ini deleted file mode 100644 index 54233e9..0000000 --- a/etc/soft/mc_new/skins/nicedark.ini +++ /dev/null @@ -1,143 +0,0 @@ -[skin] - description=Nice and Dark - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=lightgray;black - selected=lightgray;blue - marked=brown;black - markselect=brown;blue - gauge=black;lightgray - input=lightgray;black - inputunchanged=gray;black - inputmark=black;lightgray - disabled=gray;darkgray - reverse=brown;black - commandlinemark=black;lightgray - header=lightgray;black - inputhistory= - commandhistory= - -[dialog] - _default_=lightgray;darkgray - dfocus=lightgray;blue - dhotnormal=brown;darkgray - dhotfocus=brown;blue - dtitle=brown;darkgray - -[error] - _default_=red;black - errdfocus=black;red - errdhotnormal=brightred;black - errdhotfocus=brown;red - errdtitle=brown;black - -[filehighlight] - directory=blue; - executable=brightgreen; - symlink=gray; - hardlink= - stalelink=brightred; - device=brightmagenta; - special=gray; - core=red; - temp=gray; - archive=magenta; - doc=lightgray; - source=brightcyan; - media=green; - graph=cyan; - database=brightred; - -[menu] - _default_=lightgray;black - menuhot=brown;black - menusel=lightgray;blue - menuhotsel=brown;blue - menuinactive=gray;black - -[buttonbar] - hotkey=lightgray;blue - button=lightgray;black - -[statusbar] - _default_=lightgray;black - -[help] - _default_=lightgray;darkgray - helpitalic=red;darkgray - helpbold=brown;darkgray - helplink=blue;darkgray - helpslink=lightgray;blue - helptitle=brown;darkgray - -[editor] - _default_=lightgray;darkgray - editbold=brown;blue - editmarked=black;cyan - editwhitespace=brightblue;blue - editlinestate=white;cyan - bookmark=white;red - bookmarkfound=black;green - editrightmargin=brightblue;black -# editbg= - editframe=gray; - editframeactive=lightgray; - editframedrag=brightblue; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewbold=brown;blue - viewunderline=brightred;blue - viewselected=brown;cyan - -[diffviewer] - added=white;brown - changedline=blue;cyan - changednew=red;cyan - changed=white;cyan - removed=white;red - folder=blue;black - error=red;white - -[popupmenu] - _default_=lightgray;black - menusel=lightgray;blue - menutitle=lightgray;black - -[widget-common] - sort-sign-down=↑ - sort-sign-up=↓ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - diff --git a/etc/soft/mc_new/skins/sand256.ini b/etc/soft/mc_new/skins/sand256.ini deleted file mode 100644 index 7f2a55c..0000000 --- a/etc/soft/mc_new/skins/sand256.ini +++ /dev/null @@ -1,201 +0,0 @@ -# This skin demonstrates how to use 256 colors in mc. -# -# As a prerequisite, you will need to: -# 1) Have a terminal emulator that supports 256 colors (a few examples: -# xterm, Gnome terminal and other VTE derivatives, KDE's Konsole; -# iTerm for Mac OS X, PuTTY for Windows). -# 2) Adjust your TERM variable accordingly, e.g.: export TERM=xterm-256color -# Verify by running tput colors -# -# Each of the 256 colors has two names, you can use whichever you prefer. -# -# One possibility is to use the names "color0" to "color255" to access every -# color directly based on their number. -# -# The first 16 colors ("color0" to "color15") can also be specified by their -# names (these names are already being used by mc for 8/16 color terminals): -# black gray -# red brightred -# green brightgreen -# brown yellow -# blue brightblue -# magenta brightmagenta -# cyan brightcyan -# lightgray white -# Note that with 8/16 color terminal settings (such as TERM=xterm), colors -# of the second column can only be used for the foreground, and their actual -# interpretation varies across terminals. Some terminals show the colors -# from the first column instead (that is, you only have 8 colors), but make -# them bold. Others show the brighter version (16 foreground colors). Yet -# others make them bold and bright at the same time. Switching to 256 colors -# should end this ambiguity: you should have 16 separate colors according to -# their names, none of them are bold by default but any of them can be -# switched to bold, and all of them are available for background, too. This -# is the intended behavior, the actual behavior might vary across terminals. -# -# Colors of the 6x6x6 cube ("color16" to "color231") can alternatively be -# referred to as "rgb000" to "rgb555", all three digits ranging from 0 to 5, -# corresponding to the R, G and B color components. -# -# The 24 grayscale colors ("color232" to "color255") have the aliases "gray0" -# to "gray23". -# -# In addition to the 256 colors, the special word "default" means the -# default foreground or background color of your terminal, while "base" means -# mc's main colors. A missing value means falling back to the _default_ of the -# given section. -# -# Following the foreground and background colors, the third (optional) value -# can specify special attributes to enable. Valid values are bold, underline, -# reverse and blink. Append more with a plus sign, e.g. "underline+bold". -# Leaving the field empty makes it fall back to the attributes of _default_. -# Use any other word (e.g. "none") to prevent fallback and disable all flags. - -[skin] - description=Sand skin using 256 colors - 256colors=true - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=─ - dvert=│ - dlefttop=┌ - drighttop=┐ - dleftbottom=└ - drightbottom=┘ - dtopmiddle=─ - dbottommiddle=─ - dleftmiddle=├ - drightmiddle=┤ - -[core] - _default_=black;rgb554 - selected=;rgb452 - marked=rgb400 - markselect=rgb400;rgb452 - gauge=;rgb452 - input=;rgb452 - inputunchanged=gray;rgb452 - inputmark=rgb452;gray - disabled=gray;rgb553 - reverse=;rgb452 - commandlinemark=white;gray - header=red - -[dialog] - _default_=black;rgb553 - dfocus=;rgb452 - dhotnormal=;;underline - dhotfocus=;rgb452;underline - dtitle=;;underline - -[error] - _default_=rgb554;rgb320;bold - errdfocus=black;rgb452;bold - errdhotnormal=;;bold+underline - errdhotfocus=black;rgb452;bold+underline - errdtitle=;;bold+underline - -[filehighlight] - directory= - executable=rgb030 - symlink=rgb202 - hardlink= - # 404 Not Found :) - stalelink=rgb404 - device=rgb231 - special=rgb331 - core=rgb430 - temp=gray15 - archive=rgb012 - doc=rgb103 - source=rgb310 - media=rgb024 - graph=rgb033 - database=rgb421 - -[menu] - _default_=black;rgb452 - menuhot=;;underline - menusel=;rgb551 - menuhotsel=;rgb551;underline - menuinactive= - -[popupmenu] - _default_=black;rgb553 - menusel=;rgb452;underline - menutitle=;;underline - -[buttonbar] - hotkey=black;rgb554 - button=black;rgb452 - -[statusbar] - _default_=black;rgb452 - -[help] - _default_=black;rgb553 - helpitalic=green - helpbold=red - helplink=blue;;underline - helpslink=blue;;reverse - -[editor] - _default_=black;rgb554 - editbold=rgb400 - editmarked=;rgb452 - editwhitespace=rgb400;rgb553 - editlinestate=;rgb553 - bookmark=;rgb551 - bookmarkfound=;rgb530 - editrightmargin=rgb400;rgb553 -# editbg= - editframe=rgb530; - editframeactive=black; - editframedrag=rgb400; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewunderline=;;underline - -[diffviewer] - added=;rgb450 - changedline=blue;rgb553 - changednew=rgb400;rgb553 - changed=;rgb553 - removed=;rgb511 - folder=;rgb530 - error=rgb554;rgb320 - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ - diff --git a/etc/soft/mc_new/skins/x.ini b/etc/soft/mc_new/skins/x.ini deleted file mode 100644 index e4f68dd..0000000 --- a/etc/soft/mc_new/skins/x.ini +++ /dev/null @@ -1,192 +0,0 @@ -# This is a 256 colors MidnightCommander color scheme -# based on the Xoria256 color scheme for the Vim editor -# (http://www.vim.org/scripts/script.php?script_id=2140) - -# Note you'll need mc > 4.7.5 for this scheme to work (256 colors support) -# Hint: compile from the git repository - -# Author : Alexander Glyzov (isee@inbox.ru) -# Last Change : Jan 11, 2011 - -# Special Thanks to Dmitriy Zotikov -- author of the Vim Xoria256 color scheme. - - - -[skin] - description=Xoria256 - 256colors=true - -# [Lines] -# horiz=─ -# vert=│ -# lefttop=┌ -# righttop=┐ -# leftbottom=└ -# rightbottom=┘ -# topmiddle=─ -# bottommiddle=─ -# leftmiddle=├ -# rightmiddle=┤ -# cross=┼ -# dhoriz=─ -# dvert=│ -# dlefttop=┌ -# drighttop=┐ -# dleftbottom=└ -# drightbottom=┘ -# dtopmiddle=─ -# dbottommiddle=─ -# dleftmiddle=├ -# drightmiddle=┤ - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;color234 - selected=;color60 - marked=color228 - markselect=color228;color60 - reverse=color234;color250; - header=color180;;bold - - gauge=white;black - - input=color252;color60;bold - inputunchanged=color250;color60;bold - inputmark=color228;color236;bold - - disabled=color244;color250 - - #inputhistory= - #commandhistory= - #commandlinemark=black;lightgray - -[dialog] - _default_=black;color250 - dhotnormal=color88;; - dfocus=black;color73; - dhotfocus=color88;color73; - dtitle=color235;;bold - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red;bold - -[filehighlight] - directory=;;bold - executable=color114 - symlink=color180 - hardlink= - stalelink=rgb404 - device=rgb231 - special=rgb331 - core=rgb430 - temp=color239 - archive=color174 - doc=rgb033 - source=color29 - media=color110 - graph=color182 - database=color31 - -[menu] - _default_=black;color250 - menuhot=color88;; - menusel=black;color73; - menuhotsel=color88;color73; - menuinactive=color244 - -[popupmenu] - _default_=black;color250 - menusel=black;color73 - menutitle=;;bold - -[buttonbar] - button=black;color250 - hotkey=color88;color181;bold - -[statusbar] - _default_=black;color250 - -[help] - _default_=black;color250 - helpitalic=color88;;bold - helpbold=color235;;bold - helplink=color19;; - helpslink=black;color73;inverse - -[editor] - _default_=color250;color234 - editbold=;;bold - editmarked=;color60 - editwhitespace=color236;color234 - editlinestate=;color235 - bookmark=;color239; - bookmarkfound=;color239;bold - editrightmargin=color180;color235;bold -# editbg= - editframe=color244; - editframeactive=color250; - editframedrag=color73; - window-state-char = ↕ - window-close-char = ✕ - -[viewer] - viewunderline=;;underline - -[diffviewer] - changedline=;color60 - changednew=black;color174 - - added=black;color181 - changed=black;color151 - removed=;color235 - - folder=;color60 - error=rgb554;rgb320 - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - filename-scroll-left-char = « - filename-scroll-right-char = » - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ - diff --git a/etc/soft/mc_new/skins/xoria256.ini b/etc/soft/mc_new/skins/xoria256.ini deleted file mode 100644 index 8de6e86..0000000 --- a/etc/soft/mc_new/skins/xoria256.ini +++ /dev/null @@ -1,181 +0,0 @@ -# This is a 256 colors MidnightCommander color scheme -# based on the Xoria256 color scheme for the Vim editor -# (http://http://www.vim.org/scripts/script.php?script_id=2140) - -# Note you'll need mc >= 4.7.6 for this scheme to work (256 colors support) -# Hint: compile from the git repository - -# Author : Alexander Glyzov (isee@inbox.ru) -# Last Change : Jan 11, 2011 - -# Special Thanks to Dmitriy Zotikov -- author of the Vim Xoria256 color scheme. - - - -[skin] - description=Xoria256 - -# [Lines] -# horiz=─ -# vert=│ -# lefttop=┌ -# righttop=┐ -# leftbottom=└ -# rightbottom=┘ -# topmiddle=─ -# bottommiddle=─ -# leftmiddle=├ -# rightmiddle=┤ -# cross=┼ -# dhoriz=─ -# dvert=│ -# dlefttop=┌ -# drighttop=┐ -# dleftbottom=└ -# drightbottom=┘ -# dtopmiddle=─ -# dbottommiddle=─ -# dleftmiddle=├ -# drightmiddle=┤ - -[Lines] - horiz=─ - vert=│ - lefttop=┌ - righttop=┐ - leftbottom=└ - rightbottom=┘ - topmiddle=─ - bottommiddle=─ - leftmiddle=├ - rightmiddle=┤ - cross=┼ - dhoriz=═ - dvert=║ - dlefttop=╔ - drighttop=╗ - dleftbottom=╚ - drightbottom=╝ - dtopmiddle=╤ - dbottommiddle=╧ - dleftmiddle=╟ - drightmiddle=╢ - -[core] - _default_=color250;color234 - selected=;color60 - marked=color228 - markselect=color228;color60 - reverse=color234;color250; - header=color180;;bold - - gauge=white;black - - input=color252;color60;bold - inputunchanged=color250;color60;bold - inputmark=color228;color236;bold - - disabled=color244;color250 - - #inputhistory= - #commandhistory= - #commandlinemark=black;lightgray - -[dialog] - _default_=black;color250 - dhotnormal=color88;; - dfocus=black;color73; - dhotfocus=color88;color73; - dtitle=color235;;bold - -[error] - _default_=white;red - errdfocus=black;lightgray - errdhotnormal=yellow;red - errdhotfocus=yellow;lightgray - errdtitle=yellow;red;bold - -[filehighlight] - directory=;;bold - executable=color114 - symlink=color180 - stalelink=rgb404 - device=rgb231 - special=rgb331 - core=rgb430 - temp=color239 - archive=color174 - doc=rgb033 - source=color29 - media=color110 - graph=color182 - database=color31 - -[menu] - _default_=black;color250 - menuhot=color88;; - menusel=black;color73; - menuhotsel=color88;color73; - menuinactive=color244 - -[popupmenu] - _default_=black;color250 - menusel=black;color73 - menutitle=;;bold - -[buttonbar] - button=black;color250 - hotkey=color88;color181;bold - -[statusbar] - _default_=black;color250 - -[help] - _default_=black;color250 - helpitalic=color88;;bold - helpbold=color235;;bold - helplink=color19;; - helpslink=black;color73;inverse - -[editor] - _default_=color250;color234 - editbold=;;bold - editmarked=;color60 - editwhitespace=color236;color234 - editlinestate=;color235 - bookmark=;color239; - bookmarkfound=;color239;bold - editrightmargin=color180;color235;bold - -[viewer] - viewunderline=;;underline - -[diffviewer] - changedline=;color60 - changednew=black;color174 - - added=black;color181 - changed=black;color151 - removed=;color235 - - folder=;color60 - error=rgb554;rgb320 - -[widget-common] - sort-sign-up = ↓ - sort-sign-down = ↑ - -[widget-panel] - hiddenfiles-sign-show = • - hiddenfiles-sign-hide = ○ - history-prev-item-sign = « - history-next-item-sign = » - history-show-list-sign = ^ - -[widget-scollbar] - first-vert-char=↑ - last-vert-char=↓ - first-horiz-char=« - last-horiz-char=» - current-char=■ - background-char=▒ diff --git a/etc/soft/nagelfar/COPYING b/etc/soft/nagelfar/COPYING deleted file mode 100644 index a43ea21..0000000 --- a/etc/soft/nagelfar/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/etc/soft/nagelfar/README.txt b/etc/soft/nagelfar/README.txt deleted file mode 100644 index 82fac93..0000000 --- a/etc/soft/nagelfar/README.txt +++ /dev/null @@ -1 +0,0 @@ -See doc/README.txt and the other files there for information. diff --git a/etc/soft/nagelfar/doc/README.txt b/etc/soft/nagelfar/doc/README.txt deleted file mode 100644 index e2bdf92..0000000 --- a/etc/soft/nagelfar/doc/README.txt +++ /dev/null @@ -1,106 +0,0 @@ -INSTALLATION - -Unpack the distribution whereever you want it and add a link -to nagelfar.tcl from any directory in your path. - -The syntax database in the distribution may not be right for your system. -Look in the file syntaxdb.tcl, or in the About window to see the platform -and version it is for. Read syntaxdatabases.txt for more information on -how to generate your own. - - -REQUIREMENTS - -Nagelfar requires Tcl 8.4 or higher. -If you do not have 8.4, you can run Nagelfar as a Starkit -using a 8.4 based Tclkit. http://wiki.tcl.tk/tclkit - -Generally it is good to run Nagelfar in a Tcl at least as new the script -is targeted for. In particular, to check 8.5 code with {*} syntax, Nagelfar -must be run with at least 8.5. - - -USAGE - -This tool is both a command line tool and a GUI tool. - -Typical usage: -nagelfar.tcl \u003ctcl-file\u003e - -For a usage summary: -nagelfar.tcl -h - -Multiple files can be checked in one command. In that case the tool -will remember procedures from previous files when checking a file. - - -GUI - -If you start it without arguments or with -gui, you get GUI mode, -provided that Tk can be found. - -Nagelfar supports drag&drop if TkDnd is available. - -The GUI lists database files and lets you select one to use. - -The other list shows files to check. With multiple files all are checked -in the same way as with multiple files on a command line. -You can reorder files with shift-up/down keys, and remove them with delete. - -By doubleclicking on an error the file and line is viewed in a simple -editor. You can edit and save the file. - - -FEEDBACK - -Bugs and suggestions can be added to the trackers at: -http://nagelfar.berlios.de/ - -You can also mail peter.spjuth@gmail.com -(I also accept beer and teddybears, or just a note saying you use the -tool so I get encouraged to work on it.) - - -GENERATE HEADERS - -You can generate a header file to help checking multiple files. - -nagelfar.tcl -header \u003cout-file\u003e \u003cfile1\u003e \u003cfile2\u003e - -You can then check file1 and get it to recognise procs from file2 too: - -nagelfar.tcl \u003cout-file\u003e \u003cfile1\u003e - - -TODO - -The database in syntaxbuild is far from complete when it comes to subcommands. -Handle widgets -command options, bind code and other callbacks -Handle e.g. -textvariable -Handle namespaces and qualified vars better -Everything marked FIXA -Tidy up code structure. Things are getting messy. -A standardized way to handle databases for packages, and loading -them when package require is seen. -Handle namespace import if the namespace is known e.g. from a package db. -Maybe places where a constant list is expected (e.g. foreach {a b} ...) -should be able to recognise [list a b] as a constant list. - -Recognise the idiom [list cmd arg arg] as code. -Recognise the idiom [set $var] for double dereferencing. -Option to enforce switch --. -Option to enforce not using "then". - -Make a GUI to help working with the database builder. It should -be possible to add packages that should be included in the db. - - -BUGS - -The close brace alignment check should match against the line -with the opening brace, not the start of the command: - cmd xx yy \ - apa { - hejsan - } -Line 4: Close brace not aligned with line 1 (4 8) diff --git a/etc/soft/nagelfar/doc/call-by-name.txt b/etc/soft/nagelfar/doc/call-by-name.txt deleted file mode 100644 index 618afce..0000000 --- a/etc/soft/nagelfar/doc/call-by-name.txt +++ /dev/null @@ -1,34 +0,0 @@ -A common source of false warnings have to do with call-by-name. - -When analysing a procedure, Nagelfar will detect "upvar" usage and -set up a syntax description accordingly. -Example, the following procedure: - -proc Incr {varName val} { - upvar $varName var - set var [expr {$var + $val}] -} - -will get the syntax description "v x" where "v" indicates variable name. - -There are limitations to this detection though, in that it is neither -100% accurate unless the code is straightforward, and it is only detected -in the second pass of the analysis. - -Nagelfar uses two passes when analyzing a file. In the first, only -"namespace eval" and "proc" are analyzed to collect basic information -about procedures. This allows procs to be in any order in the file and -still be checked correctly. However, since procedure bodies are not -processed in the first pass, the "Incr" procedure above will get "x x" -stored as its syntax description and not until the "Incr" is processed -in the second pass it is corrected to "v x". - -This means that a procedure like "Incr" above needs to be defined earlier -in the file than it is used, or you have to provide the syntax description -yourself. The latter is also necessary when Nagelfar's automatic detection -doesn't do the right thing. - -You provide a syntax description using inline comments -(see doc/inlinecomments.txt). For the example above it would be: - -##nagelfar syntax Incr v x diff --git a/etc/soft/nagelfar/doc/codecoverage.txt b/etc/soft/nagelfar/doc/codecoverage.txt deleted file mode 100644 index bc37af6..0000000 --- a/etc/soft/nagelfar/doc/codecoverage.txt +++ /dev/null @@ -1,104 +0,0 @@ -
    Code Coverage
- -Nagelfar has support for doing simple code coverage analysis. - - -Instrument each file: -nagelfar.tcl -instrument apa.tcl - -That creates apa.tcl_i - -Make your tests run the instrumented file. If a file is sourced from an -instrumented file, an instrumented version (i.e. one called _i) will be -read if it exists. Thus you only need to adjust the top file being called -from the test, if all other files are accessed through source. - -You do not need to keep the instrumented name. You can rename them back -to the original if you cannot use _i or the automatic "source" redirection -for some reason. - -The source under test must terminate using the "exit" command. The -instrumentation uses the exit command to produce the result, thus it needs -to be called to work as expected. - -If you cannot end your tests with "exit", you can call the internal command -::_instrument_::cleanup manually. Note that this command name is not -guaranteed, so try to use "exit". - -Running tests creates apa.tcl_log. -Coverage data is accumulated in the log file so multiple tests can -be run. Make sure the log file is deleted before a rerun. - -Create a markup file for displaying result: -nagelfar.tcl -markup apa.tcl - -This reads coverage data from apa.tcl_log and creates apa.tcl_m. The markup -file contains markers in blocks that were not run. - -See uncovered parts by comparing original with markup in a graphical -diff tool, like eskil: - -eskil -noparse apa.tcl apa.tcl_m - - -
    Example
- -Nagelfar's testsuite has code like this to automatically run the -instrumented file: - set file nagelfar.tcl - if {[file exists ${file}_i]} { - set file ${file}_i - } - -Below is the makefile lines used by Nagelfar to test itself. - -# Source files for code coverage -SRCFILES = nagelfar.tcl -IFILES = $(SRCFILES:.tcl=.tcl_i) -LOGFILES = $(SRCFILES:.tcl=.tcl_log) -MFILES = $(SRCFILES:.tcl=.tcl_m) - -# Instrument source file for code coverage -%.tcl_i: %.tcl - @./nagelfar.tcl -instrument $< - -# Target to prepare for code coverage run. Makes sure log file is clear. -instrument: $(IFILES) - @rm -f $(LOGFILES) - -# Run tests to create log file. -$(LOGFILES): $(IFILES) - @./tests/all.tcl $(TESTFLAGS) - -# Create markup file for better view of result -%.tcl_m: %.tcl_log - @./nagelfar.tcl -markup $*.tcl - -# View code coverage result -icheck: $(MFILES) - @for i in $(SRCFILES) ; do eskil -noparse $$i $${i}_m & done - -# Remove code coverage files -clean: - @rm -f $(LOGFILES) $(IFILES) $(MFILES) - - -
    Naming conventions
- -When xxx is instrumented, result is called xxx_i. - -The "source" command is overloaded to prefer xxx_i if -it exists, when xxx is sourced. - -Instrumented files can be renamed to the original before running, -if that is desired. - -The log files for xxx_i or xxx is called xxx_log. -At startup any existing log is read, to accumulate info. - -The "exit" command is overloaded to call ::_instrument_::cleanup, -which produces the logs. If you cannot end your tests with "exit", -you can call ::_instrument_::cleanup manually. Note that this -command name is not guaranteed, so try to use "exit". - -Markup of xxx reads xxx_log and produces xxx_m. diff --git a/etc/soft/nagelfar/doc/inlinecomments.txt b/etc/soft/nagelfar/doc/inlinecomments.txt deleted file mode 100644 index d3b8b3b..0000000 --- a/etc/soft/nagelfar/doc/inlinecomments.txt +++ /dev/null @@ -1,74 +0,0 @@ -Nagelfar supports having comments inlined to help it check a file. - -Whenever \u003cfile\u003e.tcl is checked, any \u003cfile\u003e.syntax is run through -the syntax checker first. Thus you can put your comments in such -a separate file instead of your source if that is not suitable. - -A comment should start with "##nagelfar" to be recognised as special. -The comment must be a valid Tcl list. - -
    Ignoring messages
- -##nagelfar ignore ?string? -##nagelfar filter ?string? - -These two are equivalent and adds a message filter rule for the line -following it. The string argument will be part of the filter pattern, -which is a glob pattern built like this: "*Line *$line:*$string*" -If the string is preceeded by "N", "W" or "E", anything from that -severity level and down is ignored. - -Examples: -##nagelfar ignore -set apa [Miffo a b c] -##nagelfar ignore Unknown variable -set apa [lindex $Gurka 1] -##nagelfar ignore Expr without braces -set apa [expr 1 + 2] -##nagelfar ignore N - -Nagelfar also recognises "# PRAGMA: nocheck", which is equivalent to -"##nagelfar ignore", and ignores messages on the next line. - -
    Specifying variables
- -##nagelfar variable name ?type? - -This will make "name" a known variable and optionally set its type. -Types are still experimental in Nagelfar. The type "varName" can -be used to tell Nagelfar that a variable contains a variable name, -which suppresses some warnings. - -Example: -##nagelfar variable apaName varName -set hejsan [set $apaName] - -
    Syntax database
- -##nagelfar syntax cmd tokens -##nagelfar subcmd cmd subcmds -##nagelfar subcmd+ cmd subcmds -##nagelfar option cmd options -##nagelfar return cmd type -##nagelfar copy from to - -All these provides access directly into the syntax database that -usually is loaded from syntaxdb.tcl. -Check syntaxbuild.tcl for more info. - -Examples: -##nagelfar syntax binary s x* -##nagelfar subcmd binary format scan -##nagelfar syntax binary\\ scan x x n n* -##nagelfar syntax fcopy x x p* -##nagelfar option fcopy -size -command - -Add to subcmd list, e.g. when using namespace ensemble: -##nagelfar subcmd+ string mysubcmd -##nagelfar syntax string\ mysubcmd x x - -Copy syntax from command -##nagelfar copy binary mybinary - -For more examples, use the database browser to see how the comments -would look like for the commands known in the database. diff --git a/etc/soft/nagelfar/doc/messages.txt b/etc/soft/nagelfar/doc/messages.txt deleted file mode 100644 index 121b3c6..0000000 --- a/etc/soft/nagelfar/doc/messages.txt +++ /dev/null @@ -1,36 +0,0 @@ -Explanations of some error messages. - -"Found constant "x" which is also a variable." - - This is the error for detecting missing $. - This is also a common source for false errors. Typically with commands - that use call-by-name, or when using simple variable names. - For example, this will give such a message: $w configure -anchor w - If the constant is within quotes no warning is issued so in the example - above you can get rid of it by doing -anchor "w". - -"Could not complete statement." - - A valid end of this statement could not be found. This means that - a brace, quote or bracket is missing. - The message may be followed by extra info that can help figure out - what happened. - -"Close brace not aligned with line \u003cl\u003e (\u003ci1\u003e \u003ci2\u003e)" - - It is assumed that a close brace is indented equally to the line - where its corresponding open brace is (line \u003cl\u003e). - The open brace's indent level is \u003ci1\u003e and the close brace's \u003ci2\u003e. - This error may indicate a brace mismatch, an indentation slip - or just that you have a different indentation style. - -"Found non indented close brace that did not end statement. This may - indicate a brace mismatch." - - A close brace that is not indented should normally end the - preceeding statement. See also above. - -"Close brace first in statement." - - A close brace was seen where a command should start. - Typically a brace mismatch. diff --git a/etc/soft/nagelfar/doc/syntaxdatabases.txt b/etc/soft/nagelfar/doc/syntaxdatabases.txt deleted file mode 100644 index 4f9e214..0000000 --- a/etc/soft/nagelfar/doc/syntaxdatabases.txt +++ /dev/null @@ -1,45 +0,0 @@ -SYNTAX DATABASES - -The tool uses a file defining what commands are available and how they -are used. This file is typically called syntaxdb.tcl, and is just a Tcl -file defining variables. - -Any file called syntaxdb*.tcl in your current directory or in the -directory where Nagelfar is located is detected and possibly used as -default database unless you specify one on the command line. -The search order for default database is: - syntaxdb.tcl in current directory - syntaxdb*.tcl in current directory (if more than one it is unspecified which) - syntaxdb.tcl where Nagelfar is located - syntaxdb*.tcl where Nagelfar is located - -You can select database(s) with the command line switch "-s". - -In the GUI, all databases found are listed, and those found where Nagelfar -is located are marked "(app)". - -Syntax databases may contain inline comments, so a file generated with -the -header option may be used with -s. - - -CREATING SYNTAX DATABASES - -A syntax database is created by syntaxbuild.tcl which makes -it possible to create customised databases for the interpreter -where your script will run. - -For example, if you want to create a database for Tcl8.2: - -tclsh82 syntaxbuild.tcl syntaxdb82.tcl -or -tclsh82 -% source syntaxbuild.tcl -% buildFile syntaxdb82.tcl -% exit - -Then use it: -nagelfar.tcl -s syntaxdb82.tcl \u003ctcl-file\u003e - - -On Windows it is usually just to double click on syntaxbuild.tcl -and a new syntaxdb.tcl is generated using your installed Tcl version. diff --git a/etc/soft/nagelfar/doc/syntaxtokens.txt b/etc/soft/nagelfar/doc/syntaxtokens.txt deleted file mode 100644 index a977f44..0000000 --- a/etc/soft/nagelfar/doc/syntaxtokens.txt +++ /dev/null @@ -1,67 +0,0 @@ -Nagelfar's syntax descriptions for a command consists of little language -describing the arguments to the command. - -An entry must be a valid list of tokens as described below. - -Check the syntax database (syntaxdb.tcl) or in the database browser in the -gui for examples. - -
    Tokens
- -x Anything, the argument is not checked -o Option, i.e anything starting with - -p Option+Any (p as in option Pair) -s Subcommand -e Expression -E Expression that should be in braces - -d Definition. That arg defines a new command. - If followed by =cmd, it copies syntax from cmd. - -c Code, checked in surrounding context -cg Code, checked in global context -cn Code, checked in a virtual namespace -cl Code, checked in its own local context -cv Code, checked in its own local context, preceded by variable list - -n, v and l all marks variable names. Those arguments will not be - checked against known variables to detect missing $. -n The variable does not have to exist, and is set by the command. -v The variable must exist. It is not marked as set. -l Does not have to exist. It will be marked as known, but not set. - -If a token is an integer, just check the number of arguments against -it. This is equivalent to that many "x"es. - -r min ?max? Specify a range for number of arguments - -
    Modifiers
- -These apply to some of the tokens. - -? Zero or One -* Zero or more -. One or nothing at all - -* after x swallows all the rest and must be last -s may only have . -e and c may not have any modifier - -
    Subcommands
- -For commands that have subcommands (as indicated by token "s"), -separate descriptions can be set up for each subcommand. -If a syntax for a subcommand is defined, it is used to check the rest. - -##nagelfar syntax string s x x* -##nagelfar syntax string\\ bytelength 1 -##nagelfar syntax string\\ compare o* x x - -
    Different syntax for different number of arguments
- -If the first token ends with : it means that there are different syntax -descriptions for different number of arguments. Any token ending -with : starts a syntax for the number of arguments that the number -preceding it says. A lone : starts the default syntax. - -Example: "1: x 2: n n : e x*" diff --git a/etc/soft/nagelfar/misctests/test.syntax b/etc/soft/nagelfar/misctests/test.syntax deleted file mode 100644 index e72c137..0000000 --- a/etc/soft/nagelfar/misctests/test.syntax +++ /dev/null @@ -1,3 +0,0 @@ -# Special syntax definitions for the file test.tcl - -##nagelfar syntax copy v n diff --git a/etc/soft/nagelfar/misctests/test.tcl b/etc/soft/nagelfar/misctests/test.tcl deleted file mode 100644 index 9eded0a..0000000 --- a/etc/soft/nagelfar/misctests/test.tcl +++ /dev/null @@ -1,93 +0,0 @@ -proc apa {} { - - set bepa 1 - # Detect missing $ - set cepa bepa - # Detect unknown or misspelled variable - set depa $cep - set epa - # Detect bad $ - set $depa apa - if {[info exists $cepa]} { - # Detect wrong number of args - set apa bepa cepa - } - # Detect ugly if - if {$bepa == $cepa} { - set hej 1 - } elsif {$bepa == $cepa} { - set hej 2 - } else { - set hej 3 - } - # Detect bad subcommand - info gurka - - # Detect bad switch comment - switch $bepa { - hej { - set hej hopp - } - # This is bad - hopp { - # Detect a missing command - miffo - } - } -} - -# Test call-by-name handling -# The syntax of this proc is described in -# the file test.syntax -proc copy {srcName dstName} { - upvar $srcName src $dstName dst - set dst $src -} - -proc testCopy {} { - set apa 1 - # It should not warn about apa below - copy apa bepa - # Bepa should be known now - set cepa $bepa - - # Detect $ mistake - copy apa $bepa - copy $apa bepa -} - -proc bepa {} { - # Missing quote - set apa "hej hopp -} -# A quote just to fix syntax coloring " - -proc cepa {} { - # Missing bracket - set apa [hej hopp -} - -proc epa {} { - # Extra close brace - if {[string length apa}} { - set bepa 1 - } -} - -proc fepa {} { - # Commented brace { - if {[string length apa]} { - set bepa 1 - } -} -} - -# This should be last in the file, since -# the missing close brace disturbs anything -# after it -proc depa {} { - # Missing close brace - if {[string length apa] { - set bepa 1 - } -} diff --git a/etc/soft/nagelfar/nag b/etc/soft/nagelfar/nag deleted file mode 100755 index 1d3495c..0000000 --- a/etc/soft/nagelfar/nag +++ /dev/null @@ -1,5728 +0,0 @@ -#!/bin/sh -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2010, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# prologue.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- -# the next line restarts using tclsh \ -exec tclsh "$0" "$@" - -set debug 0 -package require Tcl 8.4 - -package provide app-nagelfar 1.0 -set version "Version 1.1.11 2010-10-04" - -set thisScript [file normalize [file join [pwd] [info script]]] -set thisDir [file dirname $thisScript] - -# Follow any link -set tmplink $thisScript -while {[file type $tmplink] == "link"} { - set tmplink [file readlink $tmplink] - set tmplink [file normalize [file join $thisDir $tmplink]] - set thisDir [file dirname $tmplink] -} -unset tmplink - -# Search where the script is to be able to place e.g. ctext there. -if {[info exists ::starkit::topdir]} { - lappend auto_path [file dirname [file normalize $::starkit::topdir]] -} else { - lappend auto_path $thisDir -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2010, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# nagelfar.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -##################### -# Syntax check engine -##################### - -# Arguments to many procedures: -# index : Index of the start of a string or command. -# cmd : Command -# argv : List of arguments -# wordstatus: List of status for the words in argv -# indices : List of indices where every word in argv starts -# knownVars : An array that keeps track of variables known in this scope - -# Interpretation of wordstatus: -# 1 constant -# 2 braced -# 4 quoted -# 8 {*}-expanded - -# Interpretation of knownVars: -# knownVars(known,$var) : Variable is known to exist. -# knownVars(local,$var) : Variable is local in a procedure. -# knownVars(set,$var) : A set of this variable has been seen. -# knownVars(read,$var) : A read of this variable has been seen. -# knownVars(type,$var) : The variable's type if known. -# knownVars(namespace,$var) : Variable belongs to this namespace. -# knownVars(upvar,$var) : Variable is upvared from this variable. - -# Moved out message handling to make it more flexible -proc echo {str {tag {}}} { - if {[info exists ::Nagelfar(resultWin)]} { - if {$tag == 1} { - set tag info - } - $::Nagelfar(resultWin) configure -state normal - $::Nagelfar(resultWin) insert end $str\n $tag - $::Nagelfar(resultWin) configure -state disabled - } elseif {$::Nagelfar(embedded)} { - lappend ::Nagelfar(chkResult) $str - } else { - puts stdout $str - } - update -} - -# Debug output -proc decho {str} { - if {[info exists ::Nagelfar(resultWin)]} { - $::Nagelfar(resultWin) configure -state normal - $::Nagelfar(resultWin) insert end $str\n error - $::Nagelfar(resultWin) configure -state disabled - } else { - puts stderr $str - } - update -} - -# Error message from program, not from syntax check -proc errEcho {msg} { - if {$::Nagelfar(gui)} { - tk_messageBox -title "Nagelfar Error" -type ok -icon error \ - -message $msg - } else { - puts stderr $msg - } -} - -# Add html quiting on a string -proc Text2Html {data} { - string map {\& \& \< \< \> \> \" \"} $data -} - -# Standard error message. -# severity : How severe a message is E/W/N for Error/Warning/Note -proc errorMsg {severity msg i} { - #echo "$msg" - if {$::Prefs(html)} { - set msg [Text2Html $msg] - if {$msg == "Expr without braces"} { - append msg " (see http://tclhelp.net/unb/194)" - } - } - - if {[info exists ::Nagelfar(currentMessage)] && \ - $::Nagelfar(currentMessage) != ""} { - lappend ::Nagelfar(messages) [list $::Nagelfar(currentMessageLine) \ - $::Nagelfar(currentMessage)] - } - - set ::Nagelfar(currentMessage) "" - switch $severity { - E {} - W { if {$::Prefs(severity) == "E"} return } - N { if {$::Prefs(severity) != "N"} return } - default { - decho "Internal error: Bad severity '$severity' passed to errorMsg" - return - } - } - - set pre "" - if {$::currentFile != ""} { - set pre "$::currentFile: " - } - set line [calcLineNo $i] - - switch $severity { - E { set color "#DD0000"; set severityMsg "ERROR" } - W { set color "#FFAA00"; set severityMsg "WARNING" } - N { set color "#66BB00"; set severityMsg "NOTICE" } - } - set pre "${pre}Line [format %3d $line]: $severity " - if {$::Prefs(html)} { - set pre "Line [format %3d $line]: $severityMsg: " - } - - set ::Nagelfar(indent) [string repeat " " [string length $pre]] - set ::Nagelfar(currentMessage) $pre$msg - set ::Nagelfar(currentMessageLine) $line -} - -# Continued message. Used to give extra info after an error. -proc contMsg {msg {i {}}} { - if {$::Nagelfar(currentMessage) == ""} return - append ::Nagelfar(currentMessage) "\n" $::Nagelfar(indent) - if {$i != ""} { - regsub -all {%L} $msg [calcLineNo $i] msg - } - append ::Nagelfar(currentMessage) $msg -} - -# Initialize message handling. -proc initMsg {} { - set ::Nagelfar(messages) {} - set ::Nagelfar(currentMessage) "" - set ::Nagelfar(commentbrace) {} -} - -# Called after a file has been parsed, to flush messages -proc flushMsg {} { - if {[info exists ::Nagelfar(currentMessage)] && \ - $::Nagelfar(currentMessage) != ""} { - lappend ::Nagelfar(messages) [list $::Nagelfar(currentMessageLine) \ - $::Nagelfar(currentMessage)] - } - - set msgs [lsort -integer -index 0 $::Nagelfar(messages)] - - foreach msg $msgs { - set text [lindex $msg 1] - set print 1 - foreach filter $::Nagelfar(filter) { - if {[string match $filter $text]} { - set print 0 - break - } - } - if {$print} { - incr ::Nagelfar(messageCnt) - echo [lindex $msg 1] message$::Nagelfar(messageCnt) - if {$::Nagelfar(exitstatus) < 2 && [string match "*: E *" $msg]} { - set ::Nagelfar(exitstatus) 2 - } elseif {$::Nagelfar(exitstatus) < 1 && [string match "*: W *" $msg]} { - set ::Nagelfar(exitstatus) 1 - } - } - } -} - -# Report any unbalanced braces in comments that have been noticed -proc reportCommentBrace {fromIx toIx} { - set fromLn [calcLineNo $fromIx] - set toLn [calcLineNo $toIx] - set new {} - foreach {n lineNo} $::Nagelfar(commentbrace) { - if {$fromLn <= $lineNo && $lineNo <= $toLn} { - contMsg "Unbalanced brace in comment in line $lineNo." - } else { - lappend new $n $lineNo - } - } - # Only report it once - set ::Nagelfar(commentbrace) $new -} - -# Trim a string to fit within a length. -proc trimStr {str {len 10}} { - set str [string trim $str] - if {[string length $str] > $len} { - set str [string range $str 0 [expr {$len - 4}]]... - } - return $str -} - -# Test for comments with unmatched braces. -proc checkPossibleComment {str lineNo} { - # Count braces - set n1 [llength [split $str \{]] - set n2 [llength [split $str \}]] - if {$n1 != $n2} { - lappend ::Nagelfar(commentbrace) [expr {$n1 - $n2}] $lineNo - } -} - -# Copy the syntax from one command to another -proc CopyCmdInDatabase {from to {map {}}} { - foreach arrName {::syntax ::return ::subCmd ::option} { - upvar 0 $arrName arr - foreach item [array names arr] { - if {$item eq $from} { - # Handle overwrite? - if {[info exists arr($to)]} { - if {$arrName eq "::subCmd"} { - # Add to a subcommand list - set arr($to) [lsort -unique [concat $arr($to) $arr($item)]] - } else { - # FIXA? - #echo "$::Nagelfar(firstpass) $from $to $arrName $item" - } - } else { - #echo "Copy $from $to $arrName $item" - set arr($to) [string map $map $arr($item)] - } - } else { - set len [expr {[string length $from] + 1}] - if {[string equal -length $len $item "$from "]} { - set to2 "$to [string range $item $len end]" - set arr($to2) [string map $map $arr($item)] - } - } - } - } - lappend ::knownCommands $to -} - -# This is called when a comment is encountered. -# It allows syntax information to be stored in comments -proc checkComment {str index knownVarsName} { - upvar $knownVarsName knownVars - - if {[string match "##nagelfar *" $str]} { - set rest [string range $str 11 end] - if {[catch {llength $rest}]} { - errorMsg N "Bad list in ##nagelfar comment" $index - return - } - if {[llength $rest] == 0} return - set cmd [lindex $rest 0] - set first [lindex $rest 1] - set rest [lrange $rest 2 end] - switch -- $cmd { - syntax { -# decho "Syntax for '$first' : '$rest'" - set ::syntax($first) $rest - lappend ::knownCommands $first - } - implicitvar { - set ::implicitVar($first) $rest - } - return { - set ::return($first) $rest - } - subcmd { - set ::subCmd($first) $rest - } - subcmd+ { - eval [list lappend ::subCmd($first)] $rest - } - option { - set ::option($first) $rest - } - variable { - set type [join $rest] - markVariable $first 1 "" 1 $index knownVars type - } - alias { - set ::knownAliases($first) $rest - } - copy { - #echo "Copy in $::Nagelfar(firstpass) $first [lindex $rest 0]" - CopyCmdInDatabase $first [lindex $rest 0] [lrange $rest 1 end] - } - nocover { - set ::instrumenting(no,$index) 1 - } - cover { - if {$first ne "variable"} { - - } else { - set varname [lindex $rest 0] - set ::instrumenting($index) [list var $varname] - } - } - ignore - - filter { - # FIXA, syntax for several lines - set line [calcLineNo $index] - incr line - switch -- $first { - N { addFilter "*Line *$line: N *[join $rest]*" } - W { addFilter "*Line *$line: \[NW\] *[join $rest]*" } - E { addFilter "*Line *$line:*[join $rest]*" } - default { addFilter "*Line *$line:*$first [join $rest]*" } - } - } - default { - errorMsg N "Bad type in ##nagelfar comment" $index - return - } - } - } elseif {[regexp {\#\s*(FRINK|PRAGMA):\s*nocheck} $str -> keyword]} { - # Support Frink's inline comment - set line [calcLineNo $index] - incr line - addFilter "*Line *$line:*" - } -} - -# Handle a stack of current namespaces. -proc currentNamespace {} { - lindex $::Nagelfar(namespaces) end -} - -proc pushNamespace {ns} { - lappend ::Nagelfar(namespaces) $ns -} - -proc popNamespace {} { - set ::Nagelfar(namespaces) [lrange $::Nagelfar(namespaces) 0 end-1] -} - -# Handle a stack of current procedures. -proc currentProc {} { - lindex $::Nagelfar(procs) end -} - -proc pushProc {p} { - lappend ::Nagelfar(procs) $p -} - -proc popProc {} { - set ::Nagelfar(procs) [lrange $::Nagelfar(procs) 0 end-1] -} - -# Handle a current object. -proc currentObject {} { - return [lindex $::Nagelfar(object) 0] -} - -proc currentObjectOrig {} { - return [lindex $::Nagelfar(object) 1] -} - -proc setCurrentObject {objname name} { - set ::Nagelfar(object) [list $objname $name] -} - -# Return the index of the first non whitespace char following index "i". -proc skipWS {str len i} { - set j [string length [string trimleft [string range $str $i end]]] - return [expr {$len - $j}] -} - -# Scan the string until the end of one word is found. -# When entered, i points to the start of the word. -# Returns the index of the last char of the word. -proc scanWord {str len index i} { - set si1 $i - set si2 $i - set c [string index $str $i] - - if {$c eq "\{" && $::Nagelfar(allowExpand)} { - if {[string range $str $i [expr {$i + 2}]] eq "{*}"} { - set ni [expr {$i + 3}] - set nc [string index $str $ni] - if {![string is space $nc]} { - # Non-space detected, it is expansion - set c $nc - set i $ni - set si2 $i - } else { - errorMsg N "Standalone {*} can be confusing. I recommend \"*\"." $i - } - } - } - - if {[string equal $c "\{"]} { - set closeChar \} - set charType brace - } elseif {[string equal $c "\""]} { - set closeChar \" - set charType quote - } else { - set closeChar "" - } - - if {![string equal $closeChar ""]} { - for {} {$i < $len} {incr i} { - # Search for closeChar - set i [string first $closeChar $str $i] - if {$i == -1} { - # This should never happen since no incomplete lines should - # reach this function. - decho "Internal error: Did not find close char in scanWord.\ - Line [calcLineNo $index]." - return $len - } - set word [string range $str $si2 $i] - if {[info complete $word]} { - # Check for following whitespace - set j [expr {$i + 1}] - set nextchar [string index $str $j] - if {$j == $len || [string is space $nextchar]} { - return $i - } - errorMsg E "Extra chars after closing $charType." \ - [expr {$index + $i}] - contMsg "Opening $charType of above was on line %L." \ - [expr {$index + $si2}] - # Extra info for this particular case - if {$charType eq "brace" && $nextchar eq "\{"} { - contMsg "It might be a missing space between \} and \{" - } - # Switch over to scanning for whitespace - incr i - break - } - } - } - - for {} {$i < $len} {incr i} { - # Search for unescaped whitespace - if {[regexp -start $i -indices {(^|[^\\])(\\\\)*\s} $str match]} { - set i [lindex $match 1] - } else { - set i $len - } - if {[info complete [string range $str $si2 $i]]} { - return [expr {$i - 1}] - } - } - - # Theoretically, no incomplete string should come to this function, - # but some precaution is never bad. - if {![info complete [string range $str $si2 end]]} { - decho "Internal error in scanWord: String not complete.\ - Line [calcLineNo [expr {$index + $si1}]]." - decho $str - return -code break - } - return [expr {$i - 1}] -} - -# Split a statement into words. -# Returns a list of the words, and puts a list with the indices -# for each word in indicesName. -proc splitStatement {statement index indicesName} { - upvar $indicesName indices - set indices {} - - set len [string length $statement] - if {$len == 0} { - return {} - } - set words {} - set i 0 - # There should not be any leading whitespace in the string that - # reaches this function. Check just in case. - set i [skipWS $statement $len $i] - if {$i != 0 && $i < $len} { - decho "Internal error:" - decho " Whitespace in splitStatement. [calcLineNo $index]" - } - # Comments should be descarded earlier - if {[string equal [string index $statement $i] "#"]} { - decho "Internal error:" - decho " A comment slipped through to splitStatement. [calcLineNo $index]" - return {} - } - while {$i < $len} { - set si $i - lappend indices [expr {$i + $index}] - set i [scanWord $statement $len $index $i] - lappend words [string range $statement $si $i] - incr i - set i [skipWS $statement $len $i] - } - return $words -} - -# FIXA Options may be non constant. - -# Look for options in a command's arguments. -# Check them against the list in the option database, if any. -# Returns a syntax string corresponding to the number of arguments "used". -# If 'pair' is set, all options should take a value. -proc checkOptions {cmd argv wordstatus indices {startI 0} {max 0} {pair 0}} { - global option - ##nagelfar cover variable max - - # Special case: the first option is "--" - if {[lindex $argv $startI] == "--"} { - # Allowed? - set ix [lsearch -exact $option($cmd) --] - if {$ix >= 0} { - return [list x] - } - } - - # How many is the limit imposed by the number of arguments? - set maxa [expr {[llength $argv] - $startI}] - - # Pairs swallow an even number of args. - if {$pair && ($maxa % 2) == 1} { - # If the odd one is "--", it may continue - if {[lindex $argv [expr {$startI + $maxa - 1}]] == "--" && \ - [lsearch -exact $option($cmd) --] >= 0} { - # Nothing - } else { - incr maxa -1 - } - } - - if {$max == 0 || $maxa < $max} { - set max $maxa - } - if {$maxa == 0} { - return {} - } - set check [info exists option($cmd)] - if {!$check && $::Nagelfar(dbpicky)} { - errorMsg N "DB: Missing options for command \"$cmd\"" 0 - } - set i 0 - set used 0 - set skip 0 - set skipSyn x - set replaceSyn {} - # Since in most cases startI is 0, I believe foreach is faster. - foreach arg $argv ws $wordstatus index $indices { - if {$i < $startI} { - incr i - continue - } - if {$skip} { - set skip 0 - lappend replaceSyn $skipSyn - set skipSyn x - incr used - continue - } - if {$max != 0 && $used >= $max} { - break - } - if {[string match "-*" $arg]} { - incr used - lappend replaceSyn x - set skip $pair - if {($ws & 1) && $check} { # Constant - set ix [lsearch -exact $option($cmd) $arg] - if {$ix == -1} { - # Check ambiguity. - if {![regexp {[][?*]} $arg]} { - # Only try globbing if $arg is free from glob chars. - set match [lsearch -all -inline -glob $option($cmd) $arg*] - } else { - set match {} - } - if {[llength $match] == 0} { - errorMsg E "Bad option $arg to \"$cmd\"" $index - set item "" - } elseif {[llength $match] > 1} { - errorMsg E "Ambigous option for \"$cmd\",\ - $arg -> [join $match /]" $index - set item "" - } else { - errorMsg W "Shortened option for \"$cmd\",\ - $arg -> [lindex $match 0]" $index - - set item "$cmd [lindex $match 0]" - } - } else { - set item "$cmd [lindex $option($cmd) $ix]" - } - if {$item ne ""} { - if {[info exists option($item)]} { - set skip 1 - if {[regexp {^[lnvc]$} $option($item)]} { - set skipSyn $option($item) - } - } - } - } - if {[string equal $arg "--"]} { - set skip 0 - break - } - } else { # If not -* - break - } - } - if {$skip} { - errorMsg E "Missing value for last option." $index - } - #decho "options to $cmd : $replaceSyn" - return $replaceSyn -} - -# Make a list of a string. This is easy, just treat it as a list. -# But we must keep track of indices, so our own parsing is needed too. -proc splitList {str index iName} { - upvar $iName indices - - # Make a copy to perform list operations on - set lstr [string range $str 0 end] - - set indices {} - if {[catch {set n [llength $lstr]}]} { - errorMsg E "Bad list" $index - return {} - } - # Parse the string to get indices for each element - set escape 0 - set level 0 - set len [string length $str] - set state whsp - - for {set i 0} {$i < $len} {incr i} { - set c [string index $str $i] - switch -- $state { - whsp { # Whitespace - if {[string is space $c]} continue - # End of whitespace, i.e. a new element - if {[string equal $c "\{"]} { - set level 1 - set state brace - lappend indices [expr {$index + $i + 1}] - } elseif {[string equal $c "\""]} { - set state quote - lappend indices [expr {$index + $i + 1}] - } else { - if {[string equal $c "\\"]} { - set escape 1 - } - set state word - lappend indices [expr {$index + $i}] - } - } - word { - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } else { - if {!$escape} { - if {[string is space $c]} { - set state whsp - continue - } - } else { - set escape 0 - } - } - } - quote { - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } else { - if {!$escape} { - if {[string equal $c "\""]} { - set state whsp - continue - } - } else { - set escape 0 - } - } - } - brace { - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } else { - if {!$escape} { - if {[string equal $c "\{"]} { - incr level - } elseif {[string equal $c "\}"]} { - incr level -1 - if {$level <= 0} { - set state whsp - } - } - } else { - set escape 0 - } - } - } - } - } - - if {[llength $indices] != $n} { - # This should never happen. - decho "Internal error: Length mismatch in splitList.\ - Line [calcLineNo $index]." - decho "nindices: [llength $indices] nwords: $n" -# decho :$str: - foreach l $lstr ix $indices { - decho :$ix:[string range $l 0 10]: - } - } - return $lstr -} - -# Parse a variable name, check for existance -# This is called when a $ is encountered -# "i" points to the first char after $ -# Returns the type of the variable -proc parseVar {str len index iName knownVarsName} { - upvar $iName i $knownVarsName knownVars - set si $i - set c [string index $str $si] - - if {[string equal $c "\{"]} { - # A variable ref starting with a brace always ends with next brace, - # no exceptions that I know of - incr si - set ei [string first "\}" $str $si] - if {$ei == -1} { - # This should not happen. - errorMsg E "Could not find closing brace in variable reference." \ - $index - } - set i $ei - incr ei -1 - set var [string range $str $si $ei] - set vararr 0 - # check for an array - if {[string equal [string index $str $ei] ")"]} { - set pi [string first "(" $str $si] - if {$pi != -1 && $pi < $ei} { - incr pi -1 - set var [string range $str $si $pi] - incr pi 2 - incr ei -1 - set varindex [string range $str $pi $ei] - set vararr 1 - set varindexconst 1 - } - } - } else { - for {set ei $si} {$ei < $len} {incr ei} { - set c [string index $str $ei] - if {[string is wordchar $c]} continue - # :: is ok. - if {[string equal $c ":"]} { - set c [string index $str [expr {$ei + 1}]] - if {[string equal $c ":"]} { - incr ei - continue - } - } - break - } - if {[string equal [string index $str $ei] "("]} { - # Locate the end of the array index - set pi $ei - set apa [expr {$si - 1}] - while {[set ei [string first ")" $str $ei]] != -1} { - if {[info complete [string range $str $apa $ei]]} { - break - } - incr ei - } - if {$ei == -1} { - # This should not happen. - errorMsg E "Could not find closing parenthesis in variable\ - reference." $index - return - } - set i $ei - incr pi -1 - set var [string range $str $si $pi] - incr pi 2 - incr ei -1 - set varindex [string range $str $pi $ei] - set vararr 1 - set varindexconst [parseSubst $varindex \ - [expr {$index + $pi}] type knownVars] - } else { - incr ei -1 - set i $ei - set var [string range $str $si $ei] - set vararr 0 - } - } - - # By now: - # var is the variable name - # vararr is 1 if it is an array - # varindex is the array index - # varindexconst is 1 if the array index is a constant - - if {$var == ""} { - return "" - } - - if {[string match ::* $var]} { - # Skip qualified names until we handle namespace better. FIXA - # Handle types for constant names - if {!$vararr} { - set full $var - } elseif {$varindexconst} { - set full ${var}($varindex) - } else { - set full "" - } - if {$full ne "" && [info exists knownVars(type,$full)]} { - return $knownVars(type,$full) - } - return "" - } - # FIXA: Use markVariable - if {![info exists knownVars(known,$var)] && !$::Prefs(noVar)} { - if {[string match "*::*" $var]} { - set tail [namespace tail $var] - set ns [namespace qualifiers $var] - #decho "'$var' '$ns' '$tail'" - #parray knownVars *$tail - if {![info exists knownVars(known,$tail)] || \ - ![info exists knownVars(namespace,$tail)] || \ - ($knownVars(namespace,$tail) ne $ns && \ - $knownVars(namespace,$tail) ne "::$ns")} { - errorMsg E "Unknown variable \"$var\"" $index - } - } else { - errorMsg E "Unknown variable \"$var\"" $index - } - } - if {![info exists knownVars(set,$var)]} { - set knownVars(read,$var) 1 - # Why was this here?? FIXA - #if {[info exists knownVars(local,$var)]} { - # errorMsg E "Unknown variable \"$var\"" $index - #} - } - if {$vararr && [info exists knownVars(type,$var\($varindex\))]} { - return [set knownVars(type,$var\($varindex\))] - } - if {[info exists knownVars(type,$var)]} { - return $knownVars(type,$var) - } - return "" - # Make use of markVariable. FIXA - # If it's a constant array index, maybe it should be checked? FIXA -} - -# Check for substitutions in a word -# Check any variables referenced, and parse any commands within brackets. -# Returns 1 if the string is constant, i.e. no substitutions -# Returns 0 if any substitutions are present -proc parseSubst {str index typeName knownVarsName} { - upvar $typeName type $knownVarsName knownVars - - set type "" - - # First do a quick check for $ or [ - # If the word ends in "]" and there is no "[" it is considered - # suspicious and we continue checking. - if {[string first \$ $str] == -1 && [string first \[ $str] == -1 && \ - [string index $str end] ne "\]" && \ - [string index $str end] ne "\""} { - return 1 - } - - set result 1 - set len [string length $str] - set escape 0 - set notype 0 - set types {} - for {set i 0} {$i < $len} {incr i} { - set c [string index $str $i] - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - set notype 1 - } elseif {!$escape} { - if {[string equal $c "\$"]} { - incr i - lappend types [parseVar $str $len $index i knownVars] - set result 0 - } elseif {[string equal $c "\["]} { - set si $i - for {} {$i < $len} {incr i} { - # FIXA: error => complete - if {[info complete [string range $str $si $i]]} { - break - } - } - if {$i == $len} { - decho "Internal error: Did not find close bracket in parseSubst.\ - Line [calcLineNo $index]" - } - incr si - incr i -1 - lappend types [parseBody [string range $str $si $i] \ - [expr {$index + $si}] knownVars 1] - incr i - set result 0 - } else { - set notype 1 - if {[string equal $c "\]"] && $i == ($len - 1)} { - # Note unescaped bracket at end of word since it's - # likely to mean it should not be there. - errorMsg N "Unescaped end bracket" [expr {$index + $i}] - } elseif {[string equal $c "\""] && $i == ($len - 1)} { - # Note unescaped quote at end of word since it's - # likely to mean it should not be there. - errorMsg N "Unescaped quote" [expr {$index + $i}] - } - } - } else { - set escape 0 - set notype 1 - } - } - if {!$notype && [llength $types] == 1} { - set type [lindex $types 0] - } - return $result -} - -# Parse an expression -proc parseExpr {str index knownVarsName} { - upvar $knownVarsName knownVars - - # First do a quick check for $ or [ - if {[string first "\$" $str] == -1 && [string first "\[" $str] == -1} { - set exp $str - } else { - # This is similar to parseSubst, just that it also check for braces - set exp "" - set result 1 - set len [string length $str] - set escape 0 - set brace 0 - for {set i 0} {$i < $len} {incr i} { - set c [string index $str $i] - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } elseif {!$escape} { - if {[string equal $c "\{"]} { - incr brace - } elseif {[string equal $c "\}"]} { - if {$brace > 0} { - incr brace -1 - } - } elseif {$brace == 0} { - if {[string equal $c "\$"]} { - incr i - parseVar $str $len $index i knownVars - append exp {${dummy}} - continue - } elseif {[string equal $c "\["]} { - set si $i - for {} {$i < $len} {incr i} { - if {[info complete [string range $str $si $i]]} { - break - } - } - if {$i == $len} { - errorMsg E "Missing close bracket at end of expression" $index - } - incr si - incr i -1 - # Warn if the called command is expr - set body [string range $str $si $i] - if {[string match "expr*" $body]} { - errorMsg N "Expr called in expression" \ - [expr {$index + $si}] - } - parseBody $body [expr {$index + $si}] knownVars 1 - incr i - append exp {${dummy}} - continue - } - } - } else { - set escape 0 - } - append exp $c - } - } - - # The above have replaced any variable substitution or command - # substitution in the expression by "$dummy" - set dummy 1 - - # This uses [expr] to do the checking which means that the checking - # can't recognise anything that differs from the Tcl version Nagelfar - # is run with. For example, the new operators in 8.4 "eq" and "ne" - # will be accepted even if the database was generated using an older - # Tcl version. A small problem and hard to fix, so I'm ignoring it. - - if {[catch [list expr $exp] msg]} { - regsub {syntax error in expression.*:\s+} $msg {} msg - if {[string match "*divide by zero*" $msg]} return - errorMsg E "Bad expression: $msg" $index - } -} - -# This is to detect bad comments in constant lists. -# This will cause messages if there are comments in blocks -# that are not recognised as code. -proc checkForComment {word index} { - # Check for "#" - set si 0 - while {[set si [string first \# $word $si]] >= 0} { - # Is it first in a line? - if {[string index $word [expr {$si - 1}]] eq "\n"} { - errorMsg N "Suspicious \# char. Possibly a bad comment." \ - [expr {$index + $si}] - break - } - incr si - } -} - -# List version of checkForComment -proc checkForCommentL {words wordstatus indices} { - foreach word $words ws $wordstatus i $indices { - if {$ws & 2} { # Braced - checkForComment $word $i - } - } -} - -# A "macro" for checkCommand to print common error message -# It should not be called from anywhere else. -proc WA {{debug {}}} { - upvar "cmd" cmd "index" index "argc" argc "argv" argv "indices" indices - errorMsg E "Wrong number of arguments ($argc) to \"$cmd\"$debug" $index - - set t 1 - set line [calcLineNo $index] - foreach ix $indices { - set aline [calcLineNo $ix] - if {$aline != $line} { - contMsg "Argument $t at line $aline" - } - incr t - } -} - -proc SplitToken {token tokName tokCountName modName} { - upvar 1 $tokName tok $tokCountName tokCount $modName mod - set mod "" - set tokCount "" - set tok _baad_ - # Type in parenthesis - if {[regexp {^(\w+)\(.*\)$} $token -> tok]} return - # Normal format - if {[regexp {^(\w+?)(\d*)(\W.*)?$} $token -> tok tokCount mod]} return - #echo "Unsupported token $token in syntax for $cmd" - return -} - -# Check a command that have a syntax defined in the database -# 'firsti' says at which index in argv et.al. the arguments begin. -# Returns the return type of the command -proc checkCommand {cmd index argv wordstatus wordtype indices {firsti 0}} { - upvar "constantsDontCheck" constantsDontCheck "knownVars" knownVars - - set argc [llength $argv] - set syn $::syntax($cmd) - set type "" - if {[info exists ::return($cmd)]} { - set type $::return($cmd) - #puts T:$cmd:$type - } -#miffo puts "Checking $cmd ([lindex $argv]) against syntax $syn" - - # Check if the syntax definition has multiple entries - if {[string index [lindex $syn 0] end] == ":"} { - set na [expr {$argc - $firsti}] - set newsyn {} - set state search - foreach tok $syn { - if {$state == "search"} { - if {$tok == ":" || $tok == "${na}:"} { - set state copy - } - } elseif {$state == "copy"} { - if {[string index $tok end] == ":"} { - break - } - lappend newsyn $tok - } - } - if {[llength $newsyn] == 0} { - echo "Can't parse syntax definition for \"$cmd\": \"$syn\"" - return $type - } - set syn $newsyn - } - - # An integer token directly specifies number of arguments - if {[string is integer -strict $syn]} { - if {($argc - $firsti) != $syn} { - WA - } - checkForCommentL $argv $wordstatus $indices - return $type - } elseif {[string equal [lindex $syn 0] "r"]} { - # A range of number of arguments - if {($argc - $firsti) < [lindex $syn 1]} { - WA - } elseif {[llength $syn] >= 3 && ($argc - $firsti) > [lindex $syn 2]} { - WA - } - checkForCommentL $argv $wordstatus $indices - return $type - } - - # Calculate the minimum number of arguments needed by non-optional - # tokens. If this is the same number as the actual arguments, we - # know that no optional tokens may consume anything. - # This prevents e.g. options checking on arguments that cannot be - # options due to their placement. - - if {![info exists ::cacheMinArgs($syn)]} { - set minargs 0 - set i 0 - set last [llength $syn] - foreach token $syn { - incr i - if {[string length $token] <= 1} { - incr minargs - } else { - set last $i - } - } - set ::cacheEndArgs($syn) [expr {[llength $syn] - $last}] - set ::cacheMinArgs($syn) $minargs - } - set anyOptional [expr {($argc - $firsti) > $::cacheMinArgs($syn)}] - set lastOptional [expr {$argc - $::cacheEndArgs($syn)}] - - # Treat syn as a stack. That way a token can replace itself without - # increasing i and thus hand over checking to another token. - - set i $firsti - while {[llength $syn] > 0} { - # Pop first token from stack - set token [lindex $syn 0] - set syn [lrange $syn 1 end] - - SplitToken $token tok tokCount mod - # Basic checks for modifiers - switch -- $mod { - "" { # No modifier, and out of arguments, is an error - if {$i >= $argc} { - set i -1 - break - } - } - "*" - "." { # No more arguments is ok. - if {$i >= $argc} { - set i $argc - break - } - } - } - # Is it optional and there can't be any optional? - if {$mod ne "" && !$anyOptional} { - continue - } - switch -- $tok { - x - xComm { - # x* matches anything up to the end. - if {[string equal $mod "*"]} { - checkForCommentL [lrange $argv $i end] \ - [lrange $wordstatus $i end] \ - [lrange $indices $i end] - set i $argc - break - } - if {![string equal $mod "?"] || $i < $argc} { - # Check braced for comments - if {([lindex $wordstatus $i] & 2) && $tok != "xComm"} { - checkForComment [lindex $argv $i] [lindex $indices $i] - } - incr i - } - } - di { # Define inheritance - if {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - # Superclass - set superclass [lindex $argv $i] - set superObjCmd _obj,[namespace tail $superclass] - set objcmd [currentObject] - set copymap [list $objcmd $superObjCmd] - #puts "DI: '$superObjCmd' to '$objcmd' map '$copymap'" - set ::superclass($objcmd) [list $superclass $superObjCmd] - CopyCmdInDatabase $superObjCmd $objcmd $copymap - incr i - } - dc - do { # Define with copy / define object - # dc defines a command that is a copy. Typically used for an - # instance which is a copy of the class's object command. - # do defines both a command to instantiate objects and a - # corresponding object command - #decho "$tok $tokCount $mod" - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - errorMsg N "Non constant definition \"[lindex $argv $i]\".\ - Skipping." [lindex $indices $i] - } else { - set copyFrom [string range $mod 1 end] - set name [lindex $argv $i] - #decho "Defining '$name', from '$copyFrom'" - if {$name eq "%AUTO%"} { - # No defition should be made - } else { - if {[string match "::*" $name]} { - set name [string range $name 2 end] - } - if {$tok eq "do"} { # Define object - set objname _obj,[namespace tail $name] - #echo "Defining object $name" - setCurrentObject $objname $name - - # Special case when defining an object in tcloo - # Add an alias to make "my" an object - if {[string match oo::* $cmd]} { - set ::knownAliases(${cmd}::${name}::my) $objname - } - - if {![info exists ::syntax($objname)]} { - set ::syntax($objname) "s x*" - } - set copymap [list _obj,$copyFrom $objname] - if {$copyFrom ne ""} { - CopyCmdInDatabase $copyFrom $name $copymap - CopyCmdInDatabase $copyFrom $objname $copymap - } else { - lappend ::knownCommands $objname - } - } else { - if {$copyFrom ne ""} { - CopyCmdInDatabase $copyFrom $name - } else { - lappend ::knownCommands $name - } - } - if {$tok eq "do" && ![info exists ::syntax($name)]} { - set ::syntax($name) "s x*" - } - } - } - incr i - } - dk - - dp - - dm - - dmp { # Define proc and/or method - if {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {$tok eq "dk"} { # Two args - if {$i > ($argc - 2)} { - break - } - set iplus2 [expr {$i + 1}] - } else { - if {$i > ($argc - 3)} { - break - } - set iplus2 [expr {$i + 2}] - } - # Skip the proc if any part of it is not constant - # FIXA: Maybe accept substitutions as part of namespace? - foreach ws [lrange $wordstatus $i $iplus2] { - if {($ws & 1) == 0} { - errorMsg N "Non constant argument to proc \"[lindex $argv $i]\".\ - Skipping." $index - return - } - } - if {$::Nagelfar(gui)} {progressUpdate [calcLineNo $index]} - # Do not check proc/method name against variables - lappend constantsDontCheck $i - set isProc [expr {$tok eq "dp" || $tok eq "dmp"}] - set isMethod [expr {$tok eq "dm" || $tok eq "dmp"}] - if {$tok eq "dk"} { # Two args - set procArgV [lrange $argv $i $iplus2] - set indicesV [lrange $indices $i $iplus2] - set constructorCmd "[currentObjectOrig] new" - # Suppress redefinition warnings - unset -nocomplain ::syntax($constructorCmd) - set procArgV [linsert $procArgV 0 ::$constructorCmd] - set indicesV [linsert $indicesV 0 [lindex $indices $i]] - #puts "DK: $procArgV" - incr i 2 - set synConstr [parseProc $procArgV $indicesV 0 0 $cmd] - set ::syntax($constructorCmd) $synConstr - } else { - set procArgV [lrange $argv $i $iplus2] - set indicesV [lrange $indices $i $iplus2] - incr i 3 - parseProc $procArgV $indicesV \ - $isProc $isMethod $cmd - } - } - E - - e { # An expression - if {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - if {$tok == "E"} { - errorMsg W "No braces around expression in\ - $cmd statement." [lindex $indices $i] - } elseif {$::Prefs(warnBraceExpr)} { - # Allow pure command substitution if warnBraceExpr == 1 - if {$::Prefs(warnBraceExpr) == 2 || \ - [string index [lindex $argv $i] 0] != "\[" || \ - [string index [lindex $argv $i] end] != "\]" } { - errorMsg W "No braces around expression in\ - $cmd statement." [lindex $indices $i] - } - } - } elseif {[lindex $wordstatus $i] & 2} { # Braced - # FIXA: This is not a good check in e.g. a catch. - #checkForComment [lindex $argv $i] [lindex $indices $i] - } - parseExpr [lindex $argv $i] [lindex $indices $i] knownVars - incr i - } - c - cg - cl - cn { # A code block - if {[string equal $mod "?"]} { - if {$i >= $argc} { - set i $argc - break - } - } elseif {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - # No braces around non constant code. - # Special case: [list ...] - set arg [lindex $argv $i] - if {[string match {\[list*} $arg]} { - # FIXA: Check the code - #echo "(List code)" - } else { - if {$tok eq "c"} { - errorMsg W "No braces around code in $cmd\ - statement." [lindex $indices $i] - } - } - } else { - set body [lindex $argv $i] - if {$tokCount ne ""} { - append body [string repeat " x" $tokCount] - } - # Special fix to support bind's "+". - if {$tok eq "cg" && [string match "+*" $body] && \ - $cmd eq "bind"} { - set body [string range $body 1 end] - } - # A virtual namespace should not be instrumented. - if {$tok ne "cn"} { - set ::instrumenting([lindex $indices $i]) 1 - } - if {$tok eq "cg"} { - # Check in global context - pushNamespace {} - array unset dummyVars - array set dummyVars {} - parseBody $body [lindex $indices $i] dummyVars - popNamespace - } elseif {$tok eq "cn"} { - # Check in virtual namespace context - set vNs ${cmd}::[join [lrange $argv $firsti [expr {$i-1}]] ::] - #puts "cmd '$cmd' vNs '$vNs'" - pushNamespace $vNs - array unset dummyVars - array set dummyVars {} - parseBody $body [lindex $indices $i] dummyVars - popNamespace - } elseif {$tok eq "cl"} { - #puts "Checking '$body' in local context" - # Check in local context - array unset dummyVars - array set dummyVars {} - addImplicitVariables $cmd [lindex $indices $i] dummyVars - parseBody $body [lindex $indices $i] dummyVars - } else { - parseBody $body [lindex $indices $i] knownVars - } - } - incr i - } - cv { # A code block with a variable definition and local context - if {[string equal $mod "?"]} { - if {$i >= $argc} { - set i $argc - break - } - } elseif {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {$i > ($argc - 2)} { - break - } - array unset dummyVars - array set dummyVars {} - if {([lindex $wordstatus $i] & 1) != 0} { - # Constant var list, parse it to get all vars - parseArgs [lindex $argv $i] [lindex $indices $i] "" \ - dummyVars - } else { - # Non constant var list, what to do? FIXA - } - addImplicitVariables $cmd [lindex $indices $i] dummyVars - # Handle Code part - incr i - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - # No braces around non constant code. - # Special case: [list ...] - set arg [lindex $argv $i] - if {[string match {\[list*} $arg]} { - # FIXA: Check the code - #echo "(List code)" - } else { - errorMsg W "No braces around code in $cmd\ - statement." [lindex $indices $i] - } - } else { - set body [lindex $argv $i] - if {$tokCount ne ""} { - append body [string repeat " x" $tokCount] - } - set ::instrumenting([lindex $indices $i]) 1 - - # Check in local context - #puts "Cmd '$cmd' NS '[currentNamespace]'" - parseBody $body [lindex $indices $i] dummyVars - } - incr i - } - s { # A subcommand - if {![string equal $mod ""] && ![string equal $mod "."]} { - echo "Modifier \"$mod\" is not supported for \"s\" in\ - syntax for $cmd." - } - lappend constantsDontCheck $i - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - errorMsg N "Non static subcommand to \"$cmd\"" \ - [lindex $indices $i] - } else { - set arg [lindex $argv $i] - if {[info exists ::subCmd($cmd)]} { - if {[lsearch $::subCmd($cmd) $arg] == -1} { - set ix [lsearch -glob $::subCmd($cmd) $arg*] - if {$ix == -1} { - errorMsg E "Unknown subcommand \"$arg\" to \"$cmd\""\ - [lindex $indices $i] - } else { - # Check ambiguity. - set match [lsearch -all -inline -glob \ - $::subCmd($cmd) $arg*] - if {[llength $match] > 1} { - errorMsg E "Ambigous subcommand for\ - \"$cmd\", $arg ->\ - [join $match /]" \ - [lindex $indices $i] - } elseif {$::Prefs(warnShortSub)} { - # Report shortened subcmd? - errorMsg W "Shortened subcommand for\ - \"$cmd\", $arg ->\ - [lindex $match 0]" \ - [lindex $indices $i] - } - set arg [lindex $::subCmd($cmd) $ix] - } - } - } elseif {$::Nagelfar(dbpicky)} { - errorMsg N "DB: Missing subcommands for \"$cmd\"" 0 - } - # Are there any syntax definition for this subcommand? - set sub "$cmd $arg" - if {[info exists ::syntax($sub)]} { - set stype [checkCommand $sub $index $argv $wordstatus \ - $wordtype \ - $indices [expr {$i + 1}]] - if {$stype != ""} { - set type $stype - } - set i $argc - break - } elseif {$::Nagelfar(dbpicky)} { - errorMsg N "DB: Missing syntax for subcommand $sub" 0 - } - } - incr i - } - l - - v - - n { # A call by name - if {[string equal $mod "?"]} { - if {$i >= $argc} { - set i $argc - break - } - } - set ei [expr {$i + 1}] - if {[string equal $mod "*"]} { - set ei $lastOptional - } - while {$i < $ei} { - if {[string equal $tok "v"]} { - # Check the variable - if {[string match ::* [lindex $argv $i]]} { - # Skip qualified names until we handle - # namespace better. FIXA - } elseif {[markVariable [lindex $argv $i] \ - [lindex $wordstatus $i] [lindex $wordtype $i] \ - 2 [lindex $indices $i]\ - knownVars vtype]} { - if {!$::Prefs(noVar)} { - errorMsg E "Unknown variable \"[lindex $argv $i]\""\ - [lindex $indices $i] - } - } - } elseif {[string equal $tok "n"]} { - markVariable [lindex $argv $i] \ - [lindex $wordstatus $i] [lindex $wordtype $i] 1 \ - [lindex $indices $i] knownVars "" - } else { - markVariable [lindex $argv $i] \ - [lindex $wordstatus $i] [lindex $wordtype $i] 0 \ - [lindex $indices $i] knownVars "" - } - - lappend constantsDontCheck $i - incr i - } - } - o { - set max [expr {$lastOptional - $i}] - if {![string equal $mod "*"]} { - set max 1 - } - set oSyn [checkOptions $cmd $argv $wordstatus $indices $i $max] - set used [llength $oSyn] - if {$used == 0 && ($mod == "" || $mod == ".")} { - errorMsg E "Expected an option as argument $i to \"$cmd\"" \ - [lindex $indices $i] - return $type - } - - if {[lsearch -not $oSyn "x"] >= 0} { - # Feed the syntax back into the check loop - set syn [concat $oSyn $syn] - } else { - incr i $used - } - } - p { - set max [expr {$lastOptional - $i}] - if {![string equal $mod "*"]} { - set max 2 - } - set oSyn [checkOptions $cmd $argv $wordstatus $indices $i \ - $max 1] - set used [llength $oSyn] - if {$used == 0 && ($mod == "" || $mod == ".")} { - errorMsg E "Expected an option as argument $i to \"$cmd\"" \ - [lindex $indices $i] - return $type - } - if {[lsearch -not $oSyn "x"] >= 0} { - # Feed the syntax back into the check loop - set syn [concat $oSyn $syn] - } else { - incr i $used - } - } - default { - echo "Unsupported token \"$token\" in syntax for \"$cmd\"" - } - } - } - # Have we used up all arguments? - if {$i != $argc && !$::Nagelfar(firstpass)} { - WA - } - return $type -} - -# Central function to handle known variable names. -# If check is 2, check if it is known, return 1 if unknown -# If check is 1, mark the variable as known and set -# If check is 0, mark the variable as known -proc markVariable {var ws wordtype check index knownVarsName typeName} { - upvar $knownVarsName knownVars - if {$typeName ne ""} { - upvar $typeName type - } else { - set type "" - } - - set varBase $var - set varArray 0 - set varIndex "" - set varBaseWs $ws - set varIndexWs $ws - - # is it an array? - set i [string first "(" $var] - if {$i != -1} { - incr i -1 - set varBase [string range $var 0 $i] - incr i 2 - set varIndex [string range $var $i end-1] - # Check if the base is free from substitutions - if {($varBaseWs & 1) == 0 && [regexp {^(::)?(\w+(::)?)+$} $varBase]} { - set varBaseWs 1 - } - set varArray 1 - } - - # If the base contains substitutions it can't be checked. - if {($varBaseWs & 1) == 0} { - # Experimental foreach check FIXA - if {[string match {$*} $var]} { - set name [string range $var 1 end] - if {[info exists ::foreachVar($name)]} { - # Mark them as known instead - foreach name $::foreachVar($name) { - markVariable $name 1 "" $check $index knownVars "" - } - #return 1 - } - } - if {$wordtype ne "varName"} { - errorMsg N "Suspicious variable name \"$var\"" $index - } - return 0 - } - - if {$check == 2} { - set type "" - if {![info exists knownVars(known,$varBase)]} { - return 1 - } - if {$varArray && ($varIndexWs & 1) && \ - [info exists knownVars(local,$varBase)]} { - if {![info exists knownVars(known,$var)]} { - return 1 - } - } - if {[info exists knownVars(type,$var)]} { - set type $knownVars(type,$var) - } else { - set type $knownVars(type,$varBase) - } - return 0 - } else { - if {![info exists knownVars(known,$varBase)]} { - if {[currentProc] ne ""} { - set knownVars(known,$varBase) 1 - set knownVars(local,$varBase) 1 - set knownVars(type,$varBase) $type - } else { - set knownVars(known,$varBase) 1 - set knownVars(namespace,$varBase) [currentNamespace] - set knownVars(type,$varBase) $type - } - } - if {1 || $type ne ""} { - # Warn if changed?? FIXA - set knownVars(type,$varBase) $type - } - if {$check == 1} { - set knownVars(set,$varBase) 1 - } - # If the array index is constant, mark the whole name - if {$varArray && ($varIndexWs & 1)} { - if {![info exists knownVars(known,$var)]} { - set knownVars(known,$var) 1 - set knownVars(type,$var) $type - if {[info exists knownVars(local,$varBase)]} { - set knownVars(local,$var) 1 - } - } - if {$check == 1} { - set knownVars(set,$var) 1 - } - } - } -} - -# This is called when an unknown command is encountered. -# If not encountered it is stored to be checked last. -# Returns a list with a partial command where the first element -# is the resolved name with qualifier. -proc lookForCommand {cmd ns index} { - # Get both the namespace and global possibility - set cmds {} - if {[string match "::*" $cmd]} { - set cmds [list [string range $cmd 2 end]] - } elseif {$ns ne "__unknown__" } { - # Look through all levels of namespaces - set nsPrefix $ns - while {$nsPrefix ne ""} { - set cmd1 "${nsPrefix}::$cmd" - if {[string match "::*" $cmd1]} { - set cmd1 [string range $cmd1 2 end] - } - lappend cmds $cmd1 - set nsPrefix [namespace qualifiers $nsPrefix] - } - lappend cmds $cmd - } else { - set cmds [list $cmd] - } - - #puts "MOO cmd '$cmd' ns '$ns' '$cmds'" - foreach cmdCandidate $cmds { - if {[info exists ::knownAliases($cmdCandidate)]} { - return $::knownAliases($cmdCandidate) - } - if {[info exists ::syntax($cmdCandidate)]} { - return [list $cmdCandidate] - } - if {[lsearch $::knownCommands $cmdCandidate] >= 0} { - return [list $cmdCandidate] - } - } - if {[lsearch $::knownCommands $cmd] >= 0} { - return [list $cmd] - } - - if {$index >= 0 && !$::Nagelfar(firstpass)} { - lappend ::unknownCommands [list $cmd $cmds $index] - } - return "" -} - -# Parse one statement and check the syntax of the command -# Returns the return type of the statement -proc parseStatement {statement index knownVarsName} { - upvar $knownVarsName knownVars - set words [splitStatement $statement $index indices] - if {[llength $words] == 0} {return} - - if {$::Nagelfar(firstpass)} { - if {[lindex $words 0] eq "proc"} { - # OK - } elseif {[lindex $words 0] eq "namespace" && \ - [lindex $words 1] eq "eval" && \ - [llength $words] == 4 && \ - ![regexp {[][$\\]} [lindex $words 2]] && \ - ![regexp {^[{"]?\s*["}]?$} [lindex $words 3]]} { - # OK - } elseif {[lindex $words 0] eq "oo::class"} { - # OK - } else { - set cmd [lindex $words 0] - set ns [currentNamespace] - set syn "" - if {$ns eq "" && [info exists ::syntax($cmd)]} { - set syn $::syntax($cmd) - } else { - set rescmd [lookForCommand $cmd $ns $index] - if {[llength $rescmd] > 0 && \ - [info exists ::syntax([lindex $rescmd 0])]} { - set cmd [lindex $rescmd 0] - set syn $::syntax($cmd) - } - } - if {[lsearch -glob $syn d*] >= 0} { - #echo "Firstpass '[lindex $words 0]'" - # OK - } else { - #echo "Firstpass block1 '[lindex $words 0]'" - return "" - } - } - } - - set type "" - set words2 {} - set wordstatus {} - set wordtype {} - set indices2 {} - foreach word $words index $indices { - set ws 0 - set wtype "" - if {[string length $word] > 3 && [string match "{\\*}*" $word]} { - set ws 8 - set word [string range $word 3 end] - } - set char [string index $word 0] - if {[string equal $char "\{"]} { - incr ws 3 ;# Braced & constant - set word [string range $word 1 end-1] - incr index - } else { - if {[string equal $char "\""]} { - set word [string range $word 1 end-1] - incr index - incr ws 4 - } - if {[parseSubst $word $index wtype knownVars]} { - # A constant - incr ws 1 - } - } - if {($ws & 9) == 9} { - # An expanded constant, unlikely but we can just as well handle it - if {[catch {llength $word}]} { - errorMsg E "Expanded word is not a valid list." $index - } else { - foreach apa $word { - lappend words2 $apa - lappend wordstatus 1 - lappend wordtype "" - # For now I don't bother to track correct indices - lappend indices2 $index - } - } - } else { - lappend words2 $word - lappend wordstatus $ws - lappend wordtype $wtype - lappend indices2 $index - } - } - - set cmd [lindex $words2 0] - set index [lindex $indices2 0] - set cmdtype [lindex $wordtype 0] - set cmdws [lindex $wordstatus 0] - - # Expanded command, nothing to check... - if {($cmdws & 8)} { - return - } - - # If the command contains substitutions we can not determine - # which command it is, so we skip it, unless the type is known - # to be an object. - - if {($cmdws & 1) == 0} { - if {[string match "_obj,*" $cmdtype]} { - set cmd $cmdtype - } else { - # Detect missing space after command - if {[regexp {^[\w:]+\{} $cmd]} { - errorMsg W "Suspicious command \"$cmd\"" $index - } - # Detect bracketed command - if {[llength $words2] == 1 && [string index $cmd 0] eq "\["} { - errorMsg N "Suspicious brackets around command" $index - } - return - } - } - - set argv [lrange $words2 1 end] - set wordtype [lrange $wordtype 1 end] - set wordstatus [lrange $wordstatus 1 end] - set indices [lrange $indices2 1 end] - set argc [llength $argv] - - # FIXA: handle {*} better - foreach ws $wordstatus { - if {$ws & 8} { - return - } - } - - # The parsing below can pass information to the constants checker - # This list primarily consists of args that are supposed to be variable - # names without a $ in front. - set noConstantCheck 0 - set constantsDontCheck {} - - # Any command that can't be described in the syntax database - # have their own special check implemented here. - # Any command that can be checked by checkCommand should - # be in the syntax database. - - set thisCmdHasBeenHandled 1 - - switch -glob -- $cmd { - .* { # FIXA, check code in any -command. - # Even widget commands should be checked. - # Maybe in checkOptions ? - return - } - global { - foreach var $argv ws $wordstatus { - if {$ws & 1} { - set knownVars(known,$var) 1 - set knownVars(namespace,$var) "" - set knownVars(type,$var) "" - } else { - errorMsg N "Non constant argument to $cmd: $var" $index - } - } - set noConstantCheck 1 - } - variable { - set currNs [currentNamespace] - # Special case in oo::class create - if {[string match "oo::class create*" $currNs]} { - #echo "Var: in $currNs" - foreach var $argv ws $wordstatus { - lappend ::implicitVar($currNs) $var - } - } else { - set i 0 - foreach {var val} $argv {ws1 ws2} $wordstatus { - set ns [currentNamespace] - if {[regexp {^(.*)::([^:]+)$} $var -> root var]} { - set ns $root - if {[string match "::*" $ns]} { - set ns [string range $ns 2 end] - } - } - if {$ns ne "__unknown__"} { - if {$ws1 & 1} { - set knownVars(namespace,$var) $ns - } - if {($ws1 & 1) || [string is wordchar $var]} { - set knownVars(known,$var) 1 - set knownVars(type,$var) "" - if {$i < $argc - 1} { - set knownVars(set,$var) 1 - } - lappend constantsDontCheck $i - } else { - errorMsg N "Non constant argument to $cmd: $var" \ - $index - } - } - incr i 2 - } - } - } - upvar { - if {$argc < 2} { - WA - return - } - set level [lindex $argv 0] - set oddA [expr {$argc % 2 == 1}] - set hasLevel 0 - if {[lindex $wordstatus 0] & 1} { - # Is it a level ? - if {[regexp {^[\\\#0-9]} $level]} { - if {!$oddA} { - WA - return - } - set hasLevel 1 - } else { - if {$oddA} { - WA - return - } - set level 1 - } - } else { - # Assume it is not a level unless odd number of args. - if {$oddA} { - # Warn here? FIXA - errorMsg N "Non constant level to $cmd: \"$level\"" $index - set hasLevel 1 - set level "" - } else { - set level 1 - } - } - if {$hasLevel} { - set tmp [lrange $argv 1 end] - set tmpWS [lrange $wordstatus 1 end] - set i 2 - } else { - set tmp $argv - set tmpWS $wordstatus - set i 1 - } - - foreach {other var} $tmp {wsO wsV} $tmpWS { - if {($wsV & 1) == 0} { - # The variable name contains substitutions - errorMsg N "Suspicious upvar variable \"$var\"" $index - } else { - set knownVars(known,$var) 1 - set knownVars(type,$var) "" - lappend constantsDontCheck $i - if {$other eq $var} { # Allow "upvar xx xx" construct - lappend constantsDontCheck [expr {$i - 1}] - } - if {($wsO & 1) == 0} { - # Is the other name a simple var subst? - if {[regexp {^\$([\w()]+)$} $other -> other] || \ - [regexp {^\${([^{}]*)}$} $other -> other]} { - if {[info exists knownVars(known,$other)]} { - if {$level == 1} { - set knownVars(upvar,$other) $var - } elseif {$level eq "#0"} { - # FIXA: level #0 for global - set knownVars(upvar,$other) $var - set knownVars(set,$var) 1 ;# FIXA? - } - } - } - } - } - incr i 2 - } - } - set { - # Set gets a different syntax string depending on the - # number of arguments. - if {$argc == 1} { - # Check the variable - if {[string match ::* [lindex $argv 0]]} { - # Skip qualified names until we handle - # namespace better. FIXA - } elseif {[markVariable [lindex $argv 0] \ - [lindex $wordstatus 0] [lindex $wordtype 0] \ - 2 [lindex $indices 0] knownVars wtype]} { - if {!$::Prefs(noVar)} { - errorMsg E "Unknown variable \"[lindex $argv 0]\""\ - [lindex $indices 0] - } - } - } elseif {$argc == 2} { - set wtype [lindex $wordtype 1] - markVariable [lindex $argv 0] \ - [lindex $wordstatus 0] [lindex $wordtype 0] \ - 1 [lindex $indices 0] \ - knownVars wtype - } else { - WA - set wtype "" - } - lappend constantsDontCheck 0 - set type $wtype - } - foreach { - if {$argc < 3 || ($argc % 2) == 0} { - WA - return - } - for {set i 0} {$i < $argc - 1} {incr i 2} { - if {[lindex $wordstatus $i] == 0} { - errorMsg W "Non constant variable list to foreach\ - statement." [lindex $indices $i] - # FIXA, maybe abort here? - } - lappend constantsDontCheck $i - foreach var [lindex $argv $i] { - markVariable $var 1 "" 1 $index knownVars "" - } - } - # FIXA: Experimental foreach check... - # A special case for looping over constant lists - set varsAdded {} - foreach {varList valList} [lrange $argv 0 end-1] \ - {varWS valWS} [lrange $wordstatus 0 end-1] { - if {($varWS & 1) && ($valWS & 1)} { - set fVars {} - foreach fVar $varList { - set ::foreachVar($fVar) {} - lappend fVars apaV($fVar) - lappend varsAdded $fVar - } - foreach $fVars $valList { - foreach fVar $varList { - ##nagelfar variable apaV - lappend ::foreachVar($fVar) $apaV($fVar) - } - } - } - } - - if {([lindex $wordstatus end] & 1) == 0} { - errorMsg W "No braces around body in foreach\ - statement." $index - } - set ::instrumenting([lindex $indices end]) 1 - set type [parseBody [lindex $argv end] [lindex $indices end] \ - knownVars] - # Clean up - foreach fVar $varsAdded { - catch {unset ::foreachVar($fVar)} - } - } - if { - if {$argc < 2} { - WA - return - } - # Build a syntax string that fits this if statement - set state expr - set ifsyntax {} - foreach arg $argv ws $wordstatus index $indices { - switch -- $state { - skip { - # This will behave bad with "if 0 then then"... - lappend ifsyntax xComm - if {![string equal $arg then]} { - set state else - } - continue - } - then { - set state body - if {[string equal $arg then]} { - lappend ifsyntax x - continue - } - } - else { - if {[string equal $arg elseif]} { - set state expr - lappend ifsyntax x - continue - } - set state lastbody - if {[string equal $arg else]} { - lappend ifsyntax x - continue - } - if {$::Prefs(forceElse)} { - errorMsg E "Badly formed if statement" $index - contMsg "Found argument '[trimStr $arg]' where\ - else/elseif was expected." - return - } - } - } - switch -- $state { - expr { - # Handle if 0 { ... } as a comment - if {[string is integer $arg] && $arg == 0} { - lappend ifsyntax x - set state skip - } else { - lappend ifsyntax e - set state then - } - } - lastbody { - lappend ifsyntax c - set state illegal - } - body { - lappend ifsyntax c - set state else - } - illegal { - errorMsg E "Badly formed if statement" $index - contMsg "Found argument '[trimStr $arg]' after\ - supposed last body." - return - } - } - } - # State should be "else" if there was no else clause or - # "illegal" if there was one. - if {$state ne "else" && $state ne "illegal"} { - errorMsg E "Badly formed if statement" $index - contMsg "Missing one body." - return - } elseif {$state eq "else"} { - # Mark the missing else for instrumenting - set ::instrumenting([expr {$index + [string length $arg]}]) 2 - } -# decho "if syntax \"$ifsyntax\"" - set ::syntax(if) $ifsyntax - checkCommand $cmd $index $argv $wordstatus $wordtype $indices - } - switch { - if {$argc < 2} { - WA - return - } - # FIXA: As of 8.5.1, two args are not checked for options, - # does this imply anything - set i 0 - if {$argc > 2} { - set max [expr {$argc - 2}] - set i [llength [checkOptions $cmd $argv $wordstatus $indices\ - 0 $max]] - } - if {[lindex $wordstatus $i] & 1 == 1} { - # First argument to switch is constant, suspiscious - errorMsg N "String argument to switch is constant" \ - [lindex $indices $i] - } - incr i - set left [expr {$argc - $i}] - - if {$left == 1} { - # One block. Split it into a list. - # FIXA. Changing argv messes up the constant check. - - set arg [lindex $argv $i] - set ws [lindex $wordstatus $i] - set ix [lindex $indices $i] - - if {($ws & 1) == 1} { - set swargv [splitList $arg $ix swindices] - if {[llength $swargv] % 2 == 1} { - errorMsg E "Odd number of elements in last argument to\ - switch." $ix - return - } - if {[llength $swargv] == 0} { - errorMsg W "Empty last argument to switch." $ix - return - } - set swwordst {} - foreach word $swargv { - lappend swwordst 1 - } - } else { - set swwordst {} - set swargv {} - set swindices {} - } - } elseif {$left % 2 == 1} { - WA - return - } else { - set swargv [lrange $argv $i end] - set swwordst [lrange $wordstatus $i end] - set swindices [lrange $indices $i end] - } - foreach {pat body} $swargv {ws1 ws2} $swwordst {i1 i2} $swindices { - if {[string equal [string index $pat 0] "#"]} { - errorMsg W "Switch pattern starting with #.\ - This could be a bad comment." $i1 - } - if {[string equal $body -]} { - continue - } - if {($ws2 & 1) == 0} { - errorMsg W "No braces around code in switch\ - statement." $i2 - } - set ::instrumenting($i2) 1 - parseBody $body $i2 knownVars - } - } - expr { # FIXA - # Take care of the standard case of a brace enclosed expr. - if {$argc == 1 && ([lindex $wordstatus 0] & 1)} { - parseExpr [lindex $argv 0] [lindex $indices 0] knownVars - } else { - if {$::Prefs(warnBraceExpr)} { - errorMsg W "Expr without braces" [lindex $indices 0] - } - } - } - eval { # FIXA - set noConstantCheck 1 - } - interp { - if {$argc < 1} { - WA - return - } - # Special handling of interp alias - if {([lindex $wordstatus 0] & 1) && \ - [string equal "alias" [lindex $argv 0]]} { - if {$argc < 3} { - WA - return - } - # This should define a source in the current interpreter - # with a known name. - if {$argc >= 5 && \ - ([lindex $wordstatus 1] & 1) && \ - "" eq [lindex $argv 1] && \ - ([lindex $wordstatus 2] & 1)} { - set newAlias [lindex $argv 2] - set aliasCmd {} - for {set t 4} {$t < $argc} {incr t} { - if {[lindex $wordstatus 1] & 1} { - lappend aliasCmd [lindex $argv $t] - } else { - lappend aliasCmd {} - } - } - set ::knownAliases($newAlias) $aliasCmd - } - } - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - set noConstantCheck 1 - } - package { # FIXA, take care of require - set type [checkCommand $cmd $index $argv $wordstatus $wordtype \ - $indices] - } - namespace { - if {$argc < 1} { - WA - return - } - # Special handling of namespace eval - if {([lindex $wordstatus 0] & 1) && \ - [string match "ev*" [lindex $argv 0]]} { - if {$argc < 3} { - if {!$::Nagelfar(firstpass)} { # Messages in second pass - WA - } - return - } - set arg1const [expr {[lindex $wordstatus 1] & 1}] - set arg2const [expr {[lindex $wordstatus 2] & 1}] - # Look for unknown parts - if {[string is space [lindex $argv 2]]} { - # Empty body, do nothing - } elseif {$arg2const && $argc == 3} { - if {$arg1const} { - set ns [lindex $argv 1] - if {![string match "::*" $ns]} { - set root [currentNamespace] - if {$root ne "__unknown__"} { - set ns ${root}::$ns - } - } - } else { - set ns __unknown__ - } - - pushNamespace $ns - parseBody [lindex $argv 2] [lindex $indices 2] knownVars - popNamespace - } else { - if {!$::Nagelfar(firstpass)} { # Messages in second pass - errorMsg N "Only braced namespace evals are checked." \ - [lindex $indices 0] - } - } - } elseif {([lindex $wordstatus 0] & 1) && \ - [string match "im*" [lindex $argv 0]]} { - # Handle namespace import - if {$argc < 2} { - WA - return - } - set ns [currentNamespace] - if {[lindex $argv 1] eq "-force"} { - set t 2 - } else { - set t 1 - } - for {} {$t < [llength $argv]} {incr t} { - if {([lindex $wordstatus $t] & 1) == 0} { - continue - } - set other [lookForCommand [lindex $argv $t] $ns -1] - set other [lindex $other 0] - set tail [namespace tail $other] - if {$ns eq ""} { - set me $tail - } else { - set me ${ns}::$tail - if {[string match "::*" $me]} { - set me [string range $me 2 end] - } - } - #puts "ME: $me : OTHER: $other" - # Copy the command info - if {[lsearch -exact $::knownCommands $me] < 0} { - lappend ::knownCommands $me - } - if {![info exists ::syntax($me)] && \ - [info exists ::syntax($other)]} { - set ::syntax($me) $::syntax($other) - } - } - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } else { - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } - } - next { - # Figure out the superclass of the caller to be able to check - set currObj [currentObject] - if {[info exists ::superclass($currObj)]} { - foreach {superCmd superObj} $::superclass($currObj) break - set methodName [namespace tail [currentProc]] - #puts "next: super '$superObj' meth '$methodName'" - if {[string match "* new" $methodName]} { - # This is a constructor - set subCmd "$superCmd new" - } else { - set subCmd "$superObj $methodName" - } - if {[info exists ::syntax($subCmd)]} { - #puts "Syntax for '$subCmd' '$::syntax($subCmd)'" - set type [checkCommand $subCmd $index $argv $wordstatus \ - $wordtype $indices] - } - } else { - errorMsg N "No superclass found for 'next'" $index - } - } - tailcall { - if {$argc < 1} { - WA - return - } - set newStatement [join $argv] - set newIndex [lindex $indices 0] - set type [parseStatement $newStatement $newIndex knownVars] - set noConstantCheck 1 - } - uplevel { # FIXA - set noConstantCheck 1 - } - default { - set thisCmdHasBeenHandled 0 - } - } - - # Fallthrough - if {!$thisCmdHasBeenHandled} { - set ns [currentNamespace] - if {$ns eq "" && [info exists ::syntax($cmd)]} { -# decho "Checking '$cmd' in '$ns' res" - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } else { - # Resolve commands in namespace - set rescmd [lookForCommand $cmd $ns $index] - if {$ns ne ""} { - #decho "Checking '$cmd' in '$ns' resolved '$rescmd'" - } - if {[llength $rescmd] > 0 && \ - [info exists ::syntax([lindex $rescmd 0])]} { - set cmd [lindex $rescmd 0] - # If lookForCommand returns a partial command, fill in - # all lists accordingly. - if {[llength $rescmd] > 1} { - set preargv {} - set prews {} - set prewt {} - set preindices {} - foreach arg [lrange $rescmd 1 end] { - lappend preargv $arg - lappend prews 1 - lappend prewt "" - lappend preindices $index - } - set argv [concat $preargv $argv] - set wordstatus [concat $prews $wordstatus] - set wordtype [concat $prewt $wordtype] - set indices [concat $preindices $indices] - } - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } elseif {$::Nagelfar(dbpicky)} { - errorMsg N "DB: Missing syntax for command \"$cmd\"" 0 - } - } - } - - if {$::Prefs(noVar)} { - return $type - } - - if {!$noConstantCheck} { - # Check unmarked constants against known variables to detect missing $. - # The constant is considered ok if within quotes. - set i 0 - foreach ws $wordstatus var $argv { - if {[info exists knownVars(known,$var)]} { - if {($ws & 7) == 1 && [lsearch $constantsDontCheck $i] == -1} { - errorMsg W "Found constant \"$var\" which is also a\ - variable." [lindex $indices $i] - } - } - incr i - } - } - return $type -} - -# Split a script into individual statements -proc splitScript {script index statementsName indicesName knownVarsName} { - upvar $statementsName statements $indicesName indices - upvar $knownVarsName knownVars - - set statements {} - set indices {} - - set tryline "" - set newstatement 1 - set firstline "" - string length $tryline - - set bracelevel 0 - - foreach line [split $script \n] { - # Here we must remember that "line" misses the \n that split ate. - # When line is used below we add \n. - # The extra \n generated on the last line does not matter. - - if {$bracelevel > 0} { - # Manual brace parsing is entered when we know we are in - # a braced block. Return to ordinary parsing as soon - # as a balanced brace is found. - - # Extract relevant characters - foreach char [regexp -all -inline {\\.|{|}} $line] { - if {$char eq "\{"} { - incr bracelevel - } elseif {$char eq "\}"} { - incr bracelevel -1 - if {$bracelevel <= 0} break - } - } - if {$bracelevel > 0} { - # We are still in a braced block so go on to the next line - append tryline $line\n - set line "" - continue - } - } - - # An empty line can never cause completion, since at this stage - # any backslash-newline has been removed. - if {[string is space $line]} { - if {$tryline eq ""} { - incr index [string length $line] - incr index - } else { - append tryline $line\n - } - continue - } - - append line \n - - while {$line ne ""} { - - # Some extra checking on close braces to help finding - # brace mismatches - set closeBrace -1 - if {[string equal "\}" [string trim $line]]} { - set closeBraceIx [expr {[string length $tryline] + $index}] - if {$newstatement} { - errorMsg E "Unbalanced close brace found" $closeBraceIx - reportCommentBrace 0 $closeBraceIx - } - set closeBrace [wasIndented $closeBraceIx] - } - - # Move everything up to the next semicolon, newline or eof - # to tryline - - set i [string first ";" $line] - if {$i != -1} { - append tryline [string range $line 0 $i] - if {$newstatement} { - set newstatement 0 - set firstline [string range $line 0 $i] - } - incr i - set line [string range $line $i end] - set splitSemi 1 - } else { - append tryline $line - if {$newstatement} { - set newstatement 0 - set firstline $line - } - set line "" - set splitSemi 0 - } - # If we split at a ; we must check that it really may be an end - if {$splitSemi} { - # Comment lines don't end with ; - #if {[regexp {^\s*#} $tryline]} {continue} - if {[string equal [string index [string trimleft $tryline] 0]\ - "#"]} continue - - # Look for \'s before the ; - # If there is an odd number of \, the ; is ignored - if {[string equal [string index $tryline end-1] "\\"]} { - set i [expr {[string length $tryline] - 2}] - set t $i - while {[string equal [string index $tryline $t] "\\"]} { - incr t -1 - } - if {($i - $t) % 2 == 1} {continue} - } - } - # Check if it's a complete line - if {[info complete $tryline]} { - # Remove leading space, keep track of index. - # Most lines will have no leading whitespace since - # buildLineDb removes most of it. This takes care - # of all remaining. - if {[string is space -failindex i $tryline]} { - # Only space, discard the line - incr index [string length $tryline] - set tryline "" - set newstatement 1 - continue - } else { - if {$i != 0} { - set tryline [string range $tryline $i end] - incr index $i - } - } - if {[string equal [string index $tryline 0] "#"]} { - # Check and discard comments - checkComment $tryline $index knownVars - } else { - if {$splitSemi} { - # Remove the semicolon from the statement - lappend statements [string range $tryline 0 end-1] - } else { - lappend statements $tryline - } - lappend indices $index - } - if {$closeBrace != -1} { - set tmp [wasIndented $index] - if {$tmp != $closeBrace} { - # Only do this if there is a free open brace - if {[regexp "\{\n" $tryline]} { - errorMsg N "Close brace not aligned with line\ - [calcLineNo $index] ($tmp $closeBrace)" \ - $closeBraceIx - } - } - } - incr index [string length $tryline] - set tryline "" - set newstatement 1 - } elseif {$closeBrace == 0 && \ - ![string match "namespace eval*" $tryline] && \ - ![string match "if *" $tryline] && \ - ![string match "*tcl_platform*" $tryline]} { - # A close brace that is not indented is typically the end of - # a global statement, like "proc". - # If it does not end the statement, there is probably a - # brace mismatch. - # When inside a namespace eval block, this is probably ok. - errorMsg N "Found non indented close brace that did not end\ - statement." $closeBraceIx - contMsg "This may indicate a brace mismatch." - } - } - - # If the line is complete except for a trailing open brace - # we can switch to just scanning braces. - # This could be made more general but since this is the far most - # common case it's probably not worth complicating it. - if {[string range $tryline end-2 end] eq " \{\n" && \ - [info complete [string range $tryline 0 end-2]]} { - set bracelevel 1 - } - } - # If tryline is non empty, it did not become complete - if {[string length $tryline] != 0} { - errorMsg E "Could not complete statement." $index - - # Experiment a little to give more info. - if {[info complete $firstline\}]} { - contMsg "One close brace would complete the first line" - reportCommentBrace $index $index - } elseif {[info complete $firstline\}\}]} { - contMsg "Two close braces would complete the first line" - reportCommentBrace $index $index - } - if {[info complete $firstline\"]} { - contMsg "One double quote would complete the first line" - } - if {[info complete $firstline\]]} { - contMsg "One close bracket would complete the first line" - } - - set endIx [expr {$index + [string length $tryline] - 1}] - set txt "the script body at line [calcLineNo $endIx]." - if {[info complete $tryline\}]} { - contMsg "One close brace would complete $txt" - contMsg "Assuming completeness for further processing." - reportCommentBrace $index $endIx - lappend statements $tryline\} - lappend indices $index - } elseif {[info complete $tryline\}\}]} { - contMsg "Two close braces would complete $txt" - contMsg "Assuming completeness for further processing." - reportCommentBrace $index $endIx - lappend statements $tryline\}\} - lappend indices $index - } - if {[info complete $tryline\"]} { - contMsg "One double quote would complete $txt" - } - if {[info complete $tryline\]]} { - contMsg "One close bracket would complete $txt" - } - } -} - -# Returns the return type of the script -proc parseBody {body index knownVarsName {warnCommandSubst 0}} { - upvar $knownVarsName knownVars - - #set ::instrumenting($index) 1 - - # Cache the splitScript result to optimise 2-pass checking. - if {[info exists ::Nagelfar(cacheBody)] && \ - [info exists ::Nagelfar(cacheBody,$body)]} { - set statements $::Nagelfar(cacheStatements,$body) - set indices $::Nagelfar(cacheIndices,$body) - } else { - splitScript $body $index statements indices knownVars - } - # Unescaped newline in command substitution body is probably wrong - if {$warnCommandSubst && [llength $statements] > 1} { - foreach statement [lrange $statements 0 end-1] \ - stmtIndex [lrange $indices 0 end-1] { - if {[string index $statement end] eq "\n"} { - errorMsg N "Newline in command substitution" $stmtIndex - break - } - } - } - -#miffo puts "Parsing a body with [llength $statements] stmts" - set type "" - foreach statement $statements index $indices { - set type [parseStatement $statement $index knownVars] - } - if {$::Nagelfar(firstpass)} { - set ::Nagelfar(cacheBody) 1 - set ::Nagelfar(cacheBody,$body) 1 - set ::Nagelfar(cacheStatements,$body) $statements - set ::Nagelfar(cacheIndices,$body) $indices - } else { - # FIXA: Why is this here? Tests pass without it - unset -nocomplain ::Nagelfar(cacheBody) - } - return $type -} - -# This is called when a definition command is encountered -# Add arguments to variable scope -proc parseArgs {procArgs indexArgs syn knownVarsName} { - upvar $knownVarsName knownVars - - if {[catch {llength $procArgs}]} { - if {!$::Nagelfar(firstpass)} { - errorMsg E "Argument list is not a valid list" $indexArgs - } - set procArgs {} - } - # Do not loop $syn in the foreach command since it can be shorter - set seenDefault 0 - set i -1 - foreach a $procArgs { - incr i - set var [lindex $a 0] - if {[llength $a] > 1} { - set seenDefault 1 - } elseif {$seenDefault && !$::Nagelfar(firstpass) && $var ne "args"} { - errorMsg N "Non-default arg after default arg" $indexArgs - # Reset to avoid further messages - set seenDefault 0 - } - set knownVars(known,$var) 1 - set knownVars(local,$var) 1 - set knownVars(set,$var) 1 - if {[regexp {\((.*)\)} [lindex $syn $i] -> type]} { - set knownVars(type,$var) $type - } else { - set knownVars(type,$var) "" - } - } - - # Sanity check of argument names - if {!$::Nagelfar(firstpass)} { - # Check for non-last "args" - set i [lsearch $procArgs "args"] - if {$i >= 0 && $i != [llength $procArgs] - 1} { - errorMsg N "Argument 'args' used before last, which can be confusing" \ - $indexArgs - } - # Check for duplicates - set l1 [lsort $procArgs] - set l2 [lsort -unique $procArgs] - if {$l1 ne $l2} { - errorMsg N "Duplicate proc arguments" $indexArgs - } - } -} - -# Create a syntax definition from args list, and given the info -# about variables in the body. -proc parseArgsToSyn {name procArgs indexArgs syn knownVarsName} { - upvar $knownVarsName knownVars - - if {[catch {llength $procArgs}]} { - # This is reported elsewhere - set procArgs {} - } - - # Build a syntax description for the procedure. - # Parse the arguments. - set upvar 0 - set unlim 0 - set min 0 - set newsyntax {} - foreach a $procArgs { - set var [lindex $a 0] - set type x - - # Check for any upvar in the proc - if {[info exists knownVars(upvar,$var)]} { - set other $knownVars(upvar,$var) - if {[info exists knownVars(read,$other)]} { - set type v - } elseif {[info exists knownVars(set,$other)]} { - set type n - } else { - set type l - } - set upvar 1 - } - if {[string equal $var "args"]} { - set unlim 1 - set type x* - } elseif {[llength $a] == 2} { - append type . - } else { - incr min - } - lappend newsyntax $type - } - - if {!$upvar} { - if {$unlim} { - set newsyntax [list r $min] - } elseif {$min == [llength $procArgs]} { - set newsyntax $min - } else { - set newsyntax [list r $min [llength $procArgs]] - } - } - - if {$syn ne ""} { - # Check if it matches previously defined syntax - set prevmin 0 - set prevmax 0 - set prevunlim 0 - if {[string is integer $syn]} { - set prevmin $syn - set prevmax $syn - } elseif {[string match "r*" $syn]} { - set prevmin [lindex $syn 1] - set prevmax [lindex $syn 2] - if {$prevmax == ""} { - set prevmax $prevmin - set prevunlim 1 - } - } else { - foreach token $syn { - SplitToken $token tok tokCount mod - set n [expr {$tok == "p" ? 2 : 1}] - if {$mod == ""} { - incr prevmin $n - incr prevmax $n - } elseif {$mod == "?"} { - incr prevmax $n - } elseif {$mod == "*"} { - set prevunlim 1 - } elseif {$mod == "."} { - incr prevmax $n - } - } - } - if {$prevunlim != $unlim || \ - ($prevunlim == 0 && $prevmax != [llength $procArgs]) \ - || $prevmin != $min} { - if {!$::Nagelfar(firstpass)} { # Messages in second pass - errorMsg W "Procedure \"$name\" does not match previous definition" \ - $indexArgs - contMsg "Previous '$syn' New '$newsyntax'" - } - set newsyntax $syn - } else { - # It matched. Does the new one seem better? - if {[regexp {^(?:r )?\d+(?: \d+)?$} $syn]} { - #if {$syntax($name) != $newsyntax} { - # decho "$name : Prev: '$syntax($name)' New: '$newsyntax'" - #} - # decho "Syntax for '$name' : '$newsyntax'" - #set syntax($name) $newsyntax - } else { - set newsyntax $syn - } - } - } else { - # decho "Syntax for '$name' : '$newsyntax'" - #set syntax($name) $newsyntax - } - return $newsyntax -} - -# Look for implicit variables -proc addImplicitVariables {cmd index knownVarsName} { - upvar $knownVarsName knownVars - set cNs [currentNamespace] - set cNsC ${cNs}::[namespace tail $cmd] - set impVar {} - if {[info exists ::implicitVar($cNsC)]} { - set impVar $::implicitVar($cNsC) - } elseif {[info exists ::implicitVar($cNs)]} { - set impVar $::implicitVar($cNs) - } else { - #decho "Looking for implicit in '$cNsC' '$cNs'" - #parray ::implicitVar - } - #echo "addImplicitVariables $cmd $impVar" - foreach var $impVar { - set varName [lindex $var 0] - set type [lindex $var 1] - markVariable $varName 1 "" 1 \ - $index knownVars type - } -} - -# This is called when a proc command is encountered. -# It is assumed that argv and indices has three elements. -proc parseProc {argv indices isProc isMethod definingCmd} { - global knownGlobals syntax - - foreach {name argList body} $argv break - - set nameMethod "" - if {$isMethod} { - set currentObj [currentObject] - if {$currentObj eq ""} { - errorMsg N "Method definition without a current object" \ - [lindex $indices 0] - set isMethod 0 - } else { - lappend ::subCmd($currentObj) $name - #echo "Adding $::Nagelfar(firstpass) '$name' to '$currentObj' -> '$::subCmd($currentObj)'" - set nameMethod "$currentObj $name" - } - } - - # Take care of namespace - set cns [currentNamespace] - set ns [namespace qualifiers $name] - set tail [namespace tail $name] - set storeIt $isProc - if {![string match "::*" $ns]} { - if {$cns eq "__unknown__"} { - set ns $cns - set storeIt 0 - } elseif {$ns != ""} { - set ns ${cns}::$ns - } else { - set ns $cns - } - } - set fullname ${ns}::$tail - #decho "proc $name -> $fullname ($cns) ($ns) ($tail)" - # Do not include the first :: in the name - if {[string match ::* $fullname]} { - set fullname [string range $fullname 2 end] - } - set name $fullname - - # Parse the arguments. - # Initialise a knownVars array with the arguments. - array set knownVars {} - - # Scan the syntax definition in parallel to look for types - if {$isProc && [info exists syntax($name)]} { - set syn $syntax($name) - } elseif {$isMethod && [info exists syntax($nameMethod)]} { - set syn $syntax($nameMethod) - } else { - set syn "" - } - - parseArgs $argList [lindex $indices 1] $syn knownVars - - if {$storeIt} { - lappend ::knownCommands $name - } - addImplicitVariables $definingCmd [lindex $indices 0] knownVars - -# decho "Note: parsing procedure $name" - if {!$::Nagelfar(firstpass)} { - if {$isProc} { - pushNamespace $ns - } - pushProc $name - parseBody $body [lindex $indices 2] knownVars - popProc - if {$isProc} { - popNamespace - } - } - set ::instrumenting([lindex $indices 2]) 1 - - #foreach item [array names knownVars upvar,*] { - # puts "upvar '$item' '$knownVars($item)'" - #} - - set newSyn [parseArgsToSyn $name $argList [lindex $indices 1] \ - $syn knownVars] - if {$storeIt} { - set syntax($name) $newSyn - } - if {$isMethod} { - if {[info exists syntax($nameMethod)]} { - #echo "Overwriting $nameMethod from '$syn' with '$newSyn'" - } else { - #echo "Writing $nameMethod from '$syn' with '$newSyn'" - } - set syntax($nameMethod) $newSyn - } - - # Update known globals with those that were set in the proc. - # I.e. anyone with set == 1 and namespace == "" should be - # added to known globals. - foreach item [array names knownVars namespace,*] { - if {$knownVars($item) != ""} continue - set var [string range $item 10 end] - if {[info exists knownVars(set,$var)]} { -# decho "Set global $var in proc $name." - if {[lsearch $knownGlobals $var] == -1} { - lappend knownGlobals $var - } - } - } - return $newSyn -} - -# Given an index in the original string, calculate its line number. -proc calcLineNo {ix} { - global newlineIx - - # Shortcut for exact match, which happens when the index is first - # in a line. This is common when called from wasIndented. - set i [lsearch -integer -sorted $newlineIx $ix] - if {$i >= 0} { - return [expr {$i + 2}] - } - - # Binary search - if {$ix < [lindex $newlineIx 0]} {return 1} - set first 0 - set last [expr {[llength $newlineIx] - 1}] - - while {$first < ($last - 1)} { - set n [expr {($first + $last) / 2}] - set ni [lindex $newlineIx $n] - if {$ni < $ix} { - set first $n - } elseif {$ni > $ix} { - set last $n - } else { - # Equality should have been caught in the lsearch above. - decho "Internal error: Equal element slipped through in calcLineNo" - return [expr {$n + 2}] - } - } - return [expr {$last + 1}] -} - -# Given an index in the original string, tell if that line was indented -# This should preferably be called with the index to the first char of -# the line since that case is much more efficient in calcLineNo. -proc wasIndented {i} { - lindex $::indentInfo [calcLineNo $i] -} - -# Length of initial whitespace -proc countIndent {str} { - # Get whitespace - set str [string range $str 0 end-[string length [string trimleft $str]]] - # Any tabs? - if {[string first \t $str] != -1} { - # Only tabs in beginning? - if {[regexp {^\t+[^\t]*$} $str]} { - set str [string map $::Nagelfar(tabMap) $str] - } else { - regsub -all $::Nagelfar(tabReg) $str $::Nagelfar(tabSub) str - } - } - return [string length $str] -} - -# Build a database of newlines to be able to calculate line numbers. -# Also replace all escaped newlines with a space, and remove all -# whitespace from the start of lines. Later processing is greatly -# simplified if it does not need to bother with those. -# Returns the simplified script. -proc buildLineDb {str} { - global newlineIx indentInfo - - set result "" - set lines [split $str \n] - if {[lindex $lines end] eq ""} { - set lines [lrange $lines 0 end-1] - } - set newlineIx {} - # Dummy element to get 1.. indexing - set indentInfo [list {}] - - # Detect a header. Backslash-newline is not substituted in the header, - # and the index after the header is kept. This is to preserve the header - # in code coverage mode. - # The first non-empty non-comment line ends the header. - set ::instrumenting(header) 0 - set ::instrumenting(already) 0 - set headerLines 1 - set previousWasEscaped 0 - - # This is a trick to get "sp" and "nl" to get an internal string rep. - # This also makes sure it will not be a shared object, which can mess up - # the internal rep. - # Append works a lot better that way. - set sp [string range " " 0 0] - set nl [string range \n 0 0] - set lineNo 0 - - foreach line $lines { - incr lineNo - # Count indent spaces and remove them - set indent [countIndent $line] - set line [string trimleft $line] - # Check for comments. - if {[string equal [string index $line 0] "#"]} { - checkPossibleComment $line $lineNo - } elseif {$headerLines && $line ne "" && !$previousWasEscaped} { - set headerLines 0 - set ::instrumenting(header) [string length $result] - if {$line eq "namespace eval ::_instrument_ {}"} { - set ::instrumenting(already) 1 - } - } - - # Count backslashes to determine if it's escaped - set previousWasEscaped 0 - if {[string equal [string index $line end] "\\"]} { - set len [string length $line] - set si [expr {$len - 2}] - while {[string equal [string index $line $si] "\\"]} {incr si -1} - if {($len - $si) % 2 == 0} { - # An escaped newline - set previousWasEscaped 1 - if {!$headerLines} { - append result [string range $line 0 end-1] $sp - lappend newlineIx [string length $result] - lappend indentInfo $indent - continue - } - } - } - # Unescaped newline - # It's important for performance that all elements in append - # has an internal string rep. String index takes care of $line - append result $line $nl - lappend newlineIx [string length $result] - lappend indentInfo $indent - } - if {$::Nagelfar(gui)} {progressMax $lineNo} - return $result -} - -# Parse a global script -proc parseScript {script} { - global knownGlobals unknownCommands knownCommands syntax - - catch {unset unknownCommands} - set unknownCommands {} - array set knownVars {} - array set ::knownAliases {} - foreach g $knownGlobals { - set knownVars(known,$g) 1 - set knownVars(set,$g) 1 - set knownVars(namespace,$g) "" - set knownVars(type,$g) "" - } - set script [buildLineDb $script] - set ::instrumenting(script) $script - - pushNamespace {} - set ::Nagelfar(firstpass) 0 - if {$::Nagelfar(2pass)} { - # First do one round with proc checking - set ::Nagelfar(firstpass) 1 - parseBody $script 0 knownVars - #echo "Second pass" - set ::Nagelfar(firstpass) 0 - } - parseBody $script 0 knownVars - popNamespace - - # Check commands that where unknown when encountered - # FIXA: aliases - foreach apa $unknownCommands { - foreach {cmd cmds index} $apa break - set found 0 - foreach cmdCandidate $cmds { - if {[info exists syntax($cmdCandidate)] || \ - [lsearch $knownCommands $cmdCandidate] >= 0} { - set found 1 - break - } - } - if {!$found} { - # Close brace is reported elsewhere - if {$cmd ne "\}"} { - # Different messages depending on name - if {[regexp {^(?:(?:[\w',:.]+)|(?:%W))$} $cmd]} { - errorMsg W "Unknown command \"$cmd\"" $index - } else { - errorMsg E "Strange command \"$cmd\"" $index - } - } - } - } - # Update known globals. - foreach item [array names knownVars namespace,*] { - if {$knownVars($item) != ""} continue - set var [string range $item 10 end] - # Check if it has been set. - if {[info exists knownVars(set,$var)]} { - if {[lsearch $knownGlobals $var] == -1} { - lappend knownGlobals $var - } - } - } -} - -# Parse a file -proc parseFile {filename} { - set ch [open $filename] - if {[info exists ::Nagelfar(encoding)] && \ - $::Nagelfar(encoding) ne "system"} { - fconfigure $ch -encoding $::Nagelfar(encoding) - } - set script [read $ch] - close $ch - - # Check for Ctrl-Z - set i [string first \u001a $script] - if {$i >= 0} { - # Cut off the script as source would do - set script [string range $script 0 [expr {$i - 1}]] - } - - array unset ::instrumenting - - initMsg - parseScript $script - if {$i >= 0} { - # Add a note about the Ctrl-Z - errorMsg N "Aborted script due to end-of-file marker" \ - [expr {[string length $::instrumenting(script)] - 1}] - } - flushMsg - - if {$::Nagelfar(instrument) && \ - [file extension $filename] ne ".syntax"} { - # Experimental instrumenting - dumpInstrumenting $filename - } -} - -# Find an element that is less than or equal, in a decreasing sorted list -proc binSearch {sortedList ix} { - # Shortcut for exact match - set i [lsearch -decreasing -integer -sorted $sortedList $ix] - if {$i >= 0} { - return $i - } - - # Binary search - if {$ix > [lindex $sortedList 0]} {return 0} - set first 0 - set last [expr {[llength $sortedList] - 1}] - if {$ix < [lindex $sortedList end]} {return -1} - - while {$first < ($last - 1)} { - set n [expr {($first + $last) / 2}] - set ni [lindex $sortedList $n] - if {$ni > $ix} { - set first $n - } elseif {$ni < $ix} { - set last $n - } else { - # Equality should have been caught in the lsearch above. - decho "Internal error: Equal element slipped through in binSearch" - return [expr {$n + 1}] - } - } - return $last -} - -# Write source instrumented for code coverage -proc dumpInstrumenting {filename} { - - set tail [file tail $filename] - if {$::instrumenting(already)} { - echo "Warning: Instrumenting already instrumented file $tail" - } - set ifile ${filename}_i - echo "Writing file $ifile" 1 - set iscript $::instrumenting(script) - set indices {} - foreach item [array names ::instrumenting] { - if {[string is digit $item]} { - lappend indices $item - } - } - set indices [lsort -decreasing -integer $indices] - # Look for lines marked with nocover - foreach item [array names ::instrumenting no,*] { - set index [lindex [split $item ","] end] - set i [binSearch $indices $index] - if {$i >= 0} { - set indices [lreplace $indices $i $i] - } - } - set init [list [list set current $tail]] - set headerIndex $::instrumenting(header) - foreach ix $indices { - if {$ix <= $headerIndex} break - set line [calcLineNo $ix] - set item "$tail,$line" - set i 2 - while {[info exists done($item)]} { - set item "$tail,$line,$i" - incr i - } - set done($item) 1 - set default 0 - - if {[llength $::instrumenting($ix)] > 1} { - foreach {type varname} $::instrumenting($ix) break - set endix [string first \n $iscript $ix] - set pre [string range $iscript 0 [expr {$ix - 1}]] - set post [string range $iscript $endix end] - append item ",var" - set insert "[list lappend ::_instrument_::log($item)] \$[list $varname]" - set default {} - } elseif {$::instrumenting($ix) == 2} { - # Missing else clause - if {[string index $iscript $ix] eq "\}"} { - incr ix - } - set insert [list incr ::_instrument_::log($item)] - set insert " [list else $insert]" - set pre [string range $iscript 0 [expr {$ix - 1}]] - set post [string range $iscript $ix end] - } else { - # Normal - set insert [list incr ::_instrument_::log($item)]\; - set pre [string range $iscript 0 [expr {$ix - 1}]] - set post [string range $iscript $ix end] - - set c [string index $pre end] - if {$c ne "\[" && $c ne "\{" && $c ne "\""} { - if {[regexp {^(\s*\w+)(\s.*)$} $post -> word rest]} { - append pre "\{" - set post "$word\}$rest" - } else { - echo "Not instrumenting line: $line\ - [string range $pre end-5 end]<>[string range $post 0 5]" - continue - } - } - } - set iscript $pre$insert$post - - lappend init [list set log($item) $default] - } - set ch [open $ifile w] - if {[info exists ::Nagelfar(encoding)] && \ - $::Nagelfar(encoding) ne "system"} { - fconfigure $ch -encoding $::Nagelfar(encoding) - } - # Start with a copy of the original's header - if {$headerIndex > 0} { - puts $ch [string range $iscript 0 [expr {$headerIndex - 1}]] - set iscript [string range $iscript $headerIndex end] - } - # Create a prolog equal in all instrumented files - puts $ch {\ - namespace eval ::_instrument_ {} - if {[info commands ::_instrument_::source] == ""} { - rename ::source ::_instrument_::source - proc ::source {args} { - set fileName [lindex $args end] - set args [lrange $args 0 end-1] - set newFileName $fileName - set altFileName ${fileName}_i - if {[file exists $altFileName]} { - set newFileName $altFileName - } - set args [linsert $args 0 ::_instrument_::source] - lappend args $newFileName - uplevel 1 $args - } - rename ::exit ::_instrument_::exit - proc ::exit {args} { - ::_instrument_::cleanup - uplevel 1 [linsert $args 0 ::_instrument_::exit] - } - proc ::_instrument_::cleanup {} { - variable log - variable all - variable dumpList - foreach {src logFile} $dumpList { - set ch [open $logFile w] - puts $ch [list array unset ::_instrument_::log $src,*] - foreach item [lsort -dictionary [array names log $src,*]] { - puts $ch [list set ::_instrument_::log($item) \ - $::_instrument_::log($item)] - } - close $ch - } - } - } - } - # Insert file specific info - puts $ch "# Initialise list of lines" - puts $ch "namespace eval ::_instrument_ \{" - puts $ch [join $init \n] - puts $ch "\}" - # More common prolog - puts $ch { - # Check if there is a stored log - namespace eval ::_instrument_ { - set thisScript [file normalize [file join [pwd] [info script]]] - if {[string match "*_i" $thisScript]} { - set thisScript [string range $thisScript 0 end-2] - } - set logFile ${thisScript}_log - if {[file exists $logFile]} { - ::_instrument_::source $logFile - } - - lappend dumpList $current $logFile - } - - #instrumented source goes here - } - - puts $ch $iscript - close $ch - - # Copy permissions to instrumented file. - catch {file attributes $ifile -permissions \ - [file attributes $filename -permissions]} -} - -# Add Code Coverage markup to a file according to measured coverage -proc instrumentMarkup {filename} { - set tail [file tail $filename] - set logfile ${filename}_log - set mfile ${filename}_m - - namespace eval ::_instrument_ {} - source $logfile - set covered 0 - set noncovered 0 - foreach item [array names ::_instrument_::log $tail,*] { - if {[string match "*,var" $item]} { - set values [lsort -dictionary -unique $::_instrument_::log($item)] - # FIXA: Maybe support expected values check - if {[regexp {,(\d+),\d+,var$} $item -> line]} { - set lines($line) ";# $values" - } elseif {[regexp {,(\d+),var$} $item -> line]} { - set lines($line) ";# $values" - } - continue - } - if {$::_instrument_::log($item) != 0} { - incr covered - continue - } - incr noncovered - if {[regexp {,(\d+),\d+$} $item -> line]} { - set lines($line) " ;# Not covered" - } elseif {[regexp {,(\d+)$} $item -> line]} { - set lines($line) " ;# Not covered" - } - } - set total [expr {$covered + $noncovered}] - set coverage [expr {100.0 * $covered / $total}] - set stats [format "(%d/%d %4.1f%%)" \ - $covered $total $coverage] - echo "Writing file $mfile $stats" 1 - if {[array size lines] == 0} { - echo "All lines covered in $tail" - file copy -force $filename $mfile - return - } - - set chi [open $filename r] - set cho [open $mfile w] - if {[info exists ::Nagelfar(encoding)] && \ - $::Nagelfar(encoding) ne "system"} { - fconfigure $chi -encoding $::Nagelfar(encoding) - fconfigure $cho -encoding $::Nagelfar(encoding) - } - set lineNo 1 - while {[gets $chi line] >= 0} { - if {$line eq " namespace eval ::_instrument_ {}"} { - echo "File $filename is instrumented, aborting markup" - close $chi - close $cho - file delete $mfile - return - } - if {[info exists lines($lineNo)]} { - append line $lines($lineNo) - } - puts $cho $line - incr lineNo - } - close $chi - close $cho -} - -# Add a message filter -proc addFilter {pat {reapply 0}} { - if {[lsearch -exact $::Nagelfar(filter) $pat] < 0} { - lappend ::Nagelfar(filter) $pat - } - if {$reapply} { - set w $::Nagelfar(resultWin) - $w configure -state normal - set ln 1 - while {1} { - set tags [$w tag names $ln.0] - set tag [lsearch -glob -inline $tags "message*"] - if {$tag == ""} { - set range [list $ln.0 $ln.end+1c] - set line [$w get $ln.0 $ln.end] - } else { - set range [$w tag nextrange $tag $ln.0] - if {$range == ""} { - incr ln - if {[$w index end] <= $ln} { - break - } - continue - } - set line [eval \$w get $range] - } - if {[string match $pat $line]} { - eval \$w delete $range - } else { - incr ln - } - if {[$w index end] <= $ln} break - } - $w configure -state disabled - } -} - -# Clear out all filters -proc resetFilters {} { - set ::Nagelfar(filter) {} -} - -# FIXA: Move safe reading to package -##nagelfar syntax _ipsource x -##nagelfar syntax _ipexists l -##nagelfar syntax _ipset 1: v : n x -##nagelfar syntax _iparray s v -##nagelfar subcmd _iparray exists get - -# Load syntax database using safe interpreter -proc loadDatabases {} { - if {[interp exists loadinterp]} { - interp delete loadinterp - } - interp create -safe loadinterp - interp expose loadinterp source - interp alias {} _ipsource loadinterp source - interp alias {} _ipexists loadinterp info exists - interp alias {} _ipset loadinterp set - interp alias {} _iparray loadinterp array - - foreach f $::Nagelfar(db) { - # FIXA: catch? - _ipsource $f - - # Support inline comments in db file - set ch [open $f r] - set data [read $ch] - close $ch - if {[string first "##nagelfar" $data] < 0} continue - set lines [split $data \n] - set commentlines [lsearch -all $lines "*##nagelfar*"] - foreach commentline $commentlines { - set comment [lindex $lines $commentline] - set str [string trim $comment] - if {![string match "##nagelfar *" $str]} continue - - # Increase to make a line number from the index - incr commentline - set rest [string range $str 11 end] - if {[catch {llength $rest}]} { - echo "Bad list in ##nagelfar comment in db $f line $commentline" - continue - } - if {[llength $rest] == 0} continue - set cmd [lindex $rest 0] - set first [lindex $rest 1] - set rest [lrange $rest 2 end] - switch -- $cmd { - syntax { - _ipset ::syntax($first) $rest - } - implicitvar { - _ipset ::implictVar($first) $rest - } - return { - _ipset ::return($first) $rest - } - subcmd { - _ipset ::subCmd($first) $rest - } - option { - _ipset ::option($first) $rest - } - alias { - _ipset ::knownAliases($first) $rest - } - default { - echo "Bad type in ##nagelfar comment in db $f line $commentline" - continue - } - } - } - } - - if {[_ipexists ::knownGlobals]} { - set ::knownGlobals [_ipset ::knownGlobals] - } else { - set ::knownGlobals {} - } - if {[_ipexists ::knownCommands]} { - set ::knownCommands [_ipset ::knownCommands] - } else { - set ::knownCommands {} - } - if {[_ipexists ::dbInfo]} { - set ::Nagelfar(dbInfo) [join [_ipset ::dbInfo] \n] - } else { - set ::Nagelfar(dbInfo) {} - } - if {[_ipexists ::dbTclVersion]} { - set ::Nagelfar(dbTclVersion) [_ipset ::dbTclVersion] - } else { - set ::Nagelfar(dbTclVersion) [package present Tcl] - } - # {*} expansion requires that Nagelfar is run in 8.5 since the checks - # for it does not work otherwise. - # It also naturally requires an 8.5 database to indicate that it is - # checking 8.5 scripts - set ::Nagelfar(allowExpand) 0 - if {[package vcompare $::Nagelfar(dbTclVersion) 8.5] >= 0 && \ - [package vcompare $::tcl_version 8.5] >= 0} { - ##nagelfar ignore - if {![catch {list {*}{hej}}]} { - set ::Nagelfar(allowExpand) 1 - } - } - - catch {unset ::syntax} - catch {unset ::implicitVar} - catch {unset ::return} - catch {unset ::subCmd} - catch {unset ::option} - catch {unset ::knownAliases} - if {[_iparray exists ::syntax]} { - array set ::syntax [_iparray get ::syntax] - } - if {[_iparray exists ::implicitVar]} { - array set ::implicitVar [_iparray get ::implicitVar] - } - if {[_iparray exists ::return]} { - array set ::return [_iparray get ::return] - } - if {[_iparray exists ::subCmd]} { - array set ::subCmd [_iparray get ::subCmd] - } - if {[_iparray exists ::option]} { - array set ::option [_iparray get ::option] - } - if {[_iparray exists ::knownAliases]} { - array set ::knownAliases [_iparray get ::knownAliases] - } - - interp delete loadinterp - - if {$::Prefs(strictAppend)} { - set ::syntax(lappend) [string map {n v} $::syntax(lappend)] - set ::syntax(append) [string map {n v} $::syntax(append)] - } -} - -# Execute the checks -proc doCheck {} { - if {[llength $::Nagelfar(db)] == 0} { - if {$::Nagelfar(gui)} { - tk_messageBox -title "Nagelfar Error" -type ok -icon error \ - -message "No syntax database file selected" - return - } else { - puts stderr "No syntax database file found" - exit 3 - } - } - - set int [info exists ::Nagelfar(checkEdit)] - - if {!$int && [llength $::Nagelfar(files)] == 0} { - errEcho "No files to check" - return - } - - if {$::Nagelfar(gui)} { - allowStop - busyCursor - } - - if {!$int} { - set ::Nagelfar(editFile) "" - } - if {[info exists ::Nagelfar(resultWin)]} { - $::Nagelfar(resultWin) configure -state normal - $::Nagelfar(resultWin) delete 1.0 end - } - set ::Nagelfar(messageCnt) 0 - - # Load syntax databases - loadDatabases - - # In header generation, store info before reading - if {$::Nagelfar(header) ne ""} { - set h_oldsyntax [array names ::syntax] - set h_oldsubCmd [array names ::subCmd] - set h_oldoption [array names ::option] - set h_oldreturn [array names ::return] - set h_oldimplicitvar [array names ::implicitVar] - set h_oldaliases [array names ::knownAliases] - } - - # Initialise variables - set ::Nagelfar(namespaces) {} - set ::Nagelfar(procs) {} - set ::Nagelfar(object) "" - - # Do the checking - - set ::currentFile "" - set ::Nagelfar(exitstatus) 0 - if {$int} { - initMsg - parseScript $::Nagelfar(checkEdit) - flushMsg - } else { - foreach f $::Nagelfar(files) { - if {$::Nagelfar(stop)} break - if {$::Nagelfar(gui) || [llength $::Nagelfar(files)] > 1} { - set ::currentFile $f - } - set syntaxfile [file rootname $f].syntax - if {[file exists $syntaxfile]} { - if {!$::Nagelfar(quiet)} { - echo "Parsing file $syntaxfile" 1 - } - parseFile $syntaxfile - } - if {$f == $syntaxfile} continue - if {[file isfile $f] && [file readable $f]} { - if {!$::Nagelfar(quiet)} { - echo "Checking file $f" 1 - } - parseFile $f - } else { - errEcho "Could not find file '$f'" - } - } - } - # Generate header - if {$::Nagelfar(header) ne ""} { - foreach item $h_oldsyntax { unset ::syntax($item) } - # FIXA: With subcmd+, maybe additions need to be detected? - foreach item $h_oldsubCmd { unset ::subCmd($item) } - foreach item $h_oldoption { unset ::option($item) } - foreach item $h_oldreturn { unset ::return($item) } - foreach item $h_oldimplicitvar { unset ::implicitVar($item) } - foreach item $h_oldaliases { unset ::knownAliases($item) } - - if {[catch {set ch [open $::Nagelfar(header) w]}]} { - puts stderr "Could not create file \"$::Nagelfar(header)\"" - } else { - echo "Writing \"$::Nagelfar(header)\"" 1 - foreach item [lsort -dictionary [array names ::syntax]] { - puts $ch "\#\#nagelfar [list syntax $item] $::syntax($item)" - } - foreach item [lsort -dictionary [array names ::subCmd]] { - puts $ch "\#\#nagelfar [list subcmd $item] $::subCmd($item)" - } - foreach item [lsort -dictionary [array names ::option]] { - puts $ch "\#\#nagelfar [list option $item] $::option($item)" - } - foreach item [lsort -dictionary [array names ::return]] { - puts $ch "\#\#nagelfar [list return $item] $::return($item)" - } - foreach item [lsort -dictionary [array names ::implicitVar]] { - puts $ch "\#\#nagelfar [list implicitvar $item] $::implicitVar($item)" - } - foreach item [lsort -dictionary [array names ::knownAliases]] { - puts $ch "\#\#nagelfar [list alias $item] $::knownAliases($item)" - } - close $ch - } - } - if {$::Nagelfar(gui)} { - if {[info exists ::Nagelfar(resultWin)]} { - set result [$::Nagelfar(resultWin) get 1.0 end-1c] - set n [regsub -all {Line\s+\d+: N } $result "" ->] - set w [regsub -all {Line\s+\d+: W } $result "" ->] - set e [regsub -all {Line\s+\d+: E } $result "" ->] - # show statistics depending on severity level - switch $::Prefs(severity) { - N {echo "Done (E/W/N: $e/$w/$n)" 1} - W {echo "Done (E/W: $e/$w)" 1} - E {echo "Done (E: $e)" 1} - } - } else { - echo "Done" 1 - } - normalCursor - progressUpdate -1 - } -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2007, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# gui.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -proc busyCursor {} { - if {![info exists ::oldcursor]} { - set ::oldcursor [. cget -cursor] - set ::oldcursor2 [$::Nagelfar(resultWin) cget -cursor] - } - - . config -cursor watch - $::Nagelfar(resultWin) config -cursor watch -} - -proc normalCursor {} { - . config -cursor $::oldcursor - $::Nagelfar(resultWin) config -cursor $::oldcursor2 -} - -proc exitApp {} { - exit -} - -# Browse for and add a syntax database file -proc addDbFile {} { - if {[info exists ::Nagelfar(lastdbdir)]} { - set initdir $::Nagelfar(lastdbdir) - } elseif {[info exists ::Nagelfar(lastdir)]} { - set initdir $::Nagelfar(lastdir) - } else { - set initdir [pwd] - } - set apa [tk_getOpenFile -title "Select db file" \ - -initialdir $initdir] - if {$apa == ""} return - - lappend ::Nagelfar(db) $apa - lappend ::Nagelfar(allDb) $apa - lappend ::Nagelfar(allDbView) $apa - updateDbSelection 1 - set ::Nagelfar(lastdbdir) [file dirname $apa] -} - -# File drop using TkDnd -proc fileDropDb {files} { - foreach file $files { - set file [fileRelative [pwd] $file] - lappend ::Nagelfar(db) $file - lappend ::Nagelfar(allDb) $file - lappend ::Nagelfar(allDbView) $file - } - updateDbSelection 1 -} - -# Remove a file from the database list -proc removeDbFile {} { - set ixs [lsort -decreasing -integer [$::Nagelfar(dbWin) curselection]] - foreach ix $ixs { - set ::Nagelfar(allDb) [lreplace $::Nagelfar(allDb) $ix $ix] - set ::Nagelfar(allDbView) [lreplace $::Nagelfar(allDbView) $ix $ix] - } - updateDbSelection - updateDbSelection 1 -} - -# Browse for and add a file to check. -proc addFile {} { - if {[info exists ::Nagelfar(lastdir)]} { - set initdir $::Nagelfar(lastdir) - } elseif {[info exists ::Nagelfar(lastdbdir)]} { - set initdir $::Nagelfar(lastdbdir) - } else { - set initdir [pwd] - } - - set filetypes [list {{Tcl Files} {.tcl}} \ - [list {All Tcl Files} $::Prefs(extensions)] \ - {{All Files} {.*}}] - set apa [tk_getOpenFile -title "Select file(s) to check" \ - -initialdir $initdir \ - -defaultextension .tcl -multiple 1 \ - -filetypes $filetypes] - if {[llength $apa] == 0} return - - set newpwd [file dirname [lindex $apa 0]] - if {[llength $::Nagelfar(files)] == 0 && $newpwd ne [pwd]} { - set res [tk_messageBox -title "Nagelfar" -icon question -type yesno \ - -message \ - "Change current directory to [file nativename $newpwd] ?"] - if {$res eq "yes"} { - cd $newpwd - } - } - set skipped {} - foreach file $apa { - set relfile [fileRelative [pwd] $file] - if {[lsearch -exact $::Nagelfar(files) $relfile] >= 0} { - lappend skipped $relfile - continue - } - lappend ::Nagelfar(files) $relfile - set ::Nagelfar(lastdir) [file dirname $file] - } - if {[llength $skipped] > 0} { - tk_messageBox -title "Nagelfar" -icon info -type ok -message \ - "Skipped duplicate file" - } -} - -# Remove a file from the list to check -proc removeFile {} { - set ixs [lsort -decreasing -integer [$::Nagelfar(fileWin) curselection]] - foreach ix $ixs { - set ::Nagelfar(files) [lreplace $::Nagelfar(files) $ix $ix] - } -} - -# Move a file up/down file list -proc moveFile {dir} { - # FIXA: Allow this line on a global level or in .syntax file - ##nagelfar variable ::Nagelfar(fileWin) _obj,listbox - set ix [lindex [$::Nagelfar(fileWin) curselection] 0] - if {$ix eq ""} return - set len [llength $::Nagelfar(files)] - set nix [expr {$ix + $dir}] - if {$nix < 0 || $nix >= $len} return - set item [lindex $::Nagelfar(files) $ix] - set ::Nagelfar(files) [lreplace $::Nagelfar(files) $ix $ix] - set ::Nagelfar(files) [linsert $::Nagelfar(files) $nix $item] - $::Nagelfar(fileWin) see $nix - $::Nagelfar(fileWin) selection clear 0 end - $::Nagelfar(fileWin) selection set $nix - $::Nagelfar(fileWin) selection anchor $nix - $::Nagelfar(fileWin) activate $nix -} - -# File drop using TkDnd -proc fileDropFile {files} { - foreach file $files { - lappend ::Nagelfar(files) [fileRelative [pwd] $file] - } -} -# This shows the file and the line from an error in the result window. -proc showError {{lineNo {}}} { - set w $::Nagelfar(resultWin) - if {$lineNo == ""} { - set lineNo [lindex [split [$w index current] .] 0] - } - - $w tag remove hl 1.0 end - $w tag add hl $lineNo.0 $lineNo.end - $w mark set insert $lineNo.0 - set line [$w get $lineNo.0 $lineNo.end] - - if {[regexp {^(.*): Line\s+(\d+):} $line -> fileName fileLine]} { - editFile $fileName $fileLine - } elseif {[regexp {^Line\s+(\d+):} $line -> fileLine]} { - editFile "" $fileLine - } -} - -# Scroll a text window to view a certain line, and possibly some -# lines before and after. -proc seeText {w si} { - $w see $si - $w see $si-3lines - $w see $si+3lines - if {[llength [$w bbox $si]] == 0} { - $w yview $si-3lines - } - if {[llength [$w bbox $si]] == 0} { - $w yview $si - } -} - -# Make next "E" error visible -proc seeNextError {} { - set w $::Nagelfar(resultWin) - set lineNo [lindex [split [$w index insert] .] 0] - - set index [$w search -exact ": E " $lineNo.end] - if {$index eq ""} { - $w see end - return - } - seeText $w $index - set lineNo [lindex [split $index .] 0] - $w tag remove hl 1.0 end - $w tag add hl $lineNo.0 $lineNo.end - $w mark set insert $lineNo.0 -} - -proc resultPopup {x y X Y} { - set w $::Nagelfar(resultWin) - - set index [$w index @$x,$y] - set tags [$w tag names $index] - set tag [lsearch -glob -inline $tags "message*"] - if {$tag == ""} { - set lineNo [lindex [split $index .] 0] - set line [$w get $lineNo.0 $lineNo.end] - } else { - set range [$w tag nextrange $tag 1.0] - set line [lindex [split [eval \$w get $range] \n] 0] - } - - destroy .popup - menu .popup - - if {[regexp {^(.*): Line\s+(\d+):} $line -> fileName fileLine]} { - .popup add command -label "Show File" \ - -command [list editFile $fileName $fileLine] - } - if {[regexp {^(.*): Line\s+\d+:\s*(.*)$} $line -> pre post]} { - .popup add command -label "Filter this message" \ - -command [list addFilter "*$pre*$post*" 1] - .popup add command -label "Filter this message in all files" \ - -command [list addFilter "*$post*" 1] - regsub {".+?"} $post {"*"} post2 - regsub -all {\d+} $post2 {*} post2 - if {$post2 ne $post} { - .popup add command -label "Filter this generic message" \ - -command [list addFilter "*$post2*" 1] - } - } - # FIXA: This should be handled abit better. - .popup add command -label "Reset all filters" -command resetFilters - - if {[$::Nagelfar(resultWin) get 1.0 1.end] ne ""} { - .popup add command -label "Save Result" -command saveResult - } - - tk_popup .popup $X $Y -} - -# Save result as file -proc saveResult {} { - # set initial filename to 1st file in list - set iniFile [file rootname [lindex $::Nagelfar(files) 0]] - if {$iniFile == ""} { - set iniFile "noname" - } - append iniFile ".nfr" - set iniDir [file dirname $iniFile] - set types { - {"Nagelfar Result" {.nfr}} - {"All Files" {*}} - } - set file [tk_getSaveFile -initialdir $iniDir -initialfile $iniFile \ - -filetypes $types -title "Save File"] - if {$file != ""} { - set ret [catch {open $file w} msg] - if {!$ret} { - set fid $msg - fconfigure $fid -translation {auto lf} - set ret [catch {puts $fid [$::Nagelfar(resultWin) get 1.0 end-1c]} msg] - } - catch {close $fid} - if {!$ret} { - tk_messageBox -title "Nagelfar" -icon info -type ok \ - -message "Result saved as [file nativename $file]" - } else { - tk_messageBox -title "Nagelfar Error" -type ok -icon error \ - -message "Cannot write [file nativename $file]:\n$msg" - } - } -} - -# Update the selection in the db listbox to or from the db list. -proc updateDbSelection {{fromVar 0}} { - if {$fromVar} { - $::Nagelfar(dbWin) selection clear 0 end - # Try to keep one selected - if {[llength $::Nagelfar(db)] == 0} { - set ::Nagelfar(db) [lrange $::Nagelfar(allDb) 0 0] - } - foreach f $::Nagelfar(db) { - set i [lsearch $::Nagelfar(allDb) $f] - if {$i >= 0} { - $::Nagelfar(dbWin) selection set $i - } - } - return - } - - set ::Nagelfar(db) {} - foreach ix [$::Nagelfar(dbWin) curselection] { - lappend ::Nagelfar(db) [lindex $::Nagelfar(allDb) $ix] - } -} - -# Unused experiment to make scrolling snidget -if {[catch {package require snit}]} { - namespace eval snit { - proc widget {args} {} - } -} -::snit::widget ScrollX { - option -direction both - option -auto 0 - - delegate method * to child - delegate option * to child - - constructor {class args} { - set child [$class $win.s] - $self configurelist $args - grid $win.s -row 0 -column 0 -sticky news - grid columnconfigure $win 0 -weight 1 - grid rowconfigure $win 0 -weight 1 - - # Move border properties to frame - set bw [$win.s cget -borderwidth] - set relief [$win.s cget -relief] - $win configure -relief $relief -borderwidth $bw - $win.s configure -borderwidth 0 - } - - method child {} { - return $child - } - - method SetScrollbar {sb from to} { - $sb set $from $to - if {$options(-auto) && $from == 0.0 && $top == 1.0} { - grid remove $sb - } else { - grid $sb - } - } - - onconfigure -direction {value} { - switch -- $value { - both { - set scrollx 1 - set scrolly 1 - } - x { - set scrollx 1 - set scrolly 0 - } - y { - set scrollx 0 - set scrolly 1 - } - default { - return -code error "Bad -direction \"$value\"" - } - } - set options(-direction) $value - destroy $win.sbx $win.sby - if {$scrollx} { - $win.s configure -xscrollcommand [mymethod SetScrollbar $win.sbx] - scrollbar $win.sbx -orient horizontal -command [list $win.s xview] - grid $win.sbx -row 1 -sticky we - } else { - $win.s configure -xscrollcommand {} - } - if {$scrolly} { - $win.s configure -yscrollcommand [mymethod SetScrollbar $win.sby] - scrollbar $win.sby -orient vertical -command [list $win.s yview] - grid $win.sby -row 0 -column 1 -sticky ns - } else { - $win.s configure -yscrollcommand {} - } - } -} - -# A little helper to make a scrolled window -# It returns the name of the scrolled window -proc Scroll {dir class w args} { - switch -- $dir { - both { - set scrollx 1 - set scrolly 1 - } - x { - set scrollx 1 - set scrolly 0 - } - y { - set scrollx 0 - set scrolly 1 - } - default { - return -code error "Bad scrolldirection \"$dir\"" - } - } - - frame $w - eval [list $class $w.s] $args - - # Move border properties to frame - set bw [$w.s cget -borderwidth] - set relief [$w.s cget -relief] - $w configure -relief $relief -borderwidth $bw - $w.s configure -borderwidth 0 - - grid $w.s -sticky news - - if {$scrollx} { - $w.s configure -xscrollcommand [list $w.sbx set] - scrollbar $w.sbx -orient horizontal -command [list $w.s xview] - grid $w.sbx -row 1 -sticky we - } - if {$scrolly} { - $w.s configure -yscrollcommand [list $w.sby set] - scrollbar $w.sby -orient vertical -command [list $w.s yview] - grid $w.sby -row 0 -column 1 -sticky ns - } - grid columnconfigure $w 0 -weight 1 - grid rowconfigure $w 0 -weight 1 - - return $w.s -} - -# Set the progress -proc progressUpdate {n} { - if {$n < 0} { - $::Nagelfar(progressWin) configure -relief flat - } else { - $::Nagelfar(progressWin) configure -relief solid - } - if {$n <= 0} { - place $::Nagelfar(progressWin).f -x -100 -relx 0 -y 0 -rely 0 \ - -relheight 1.0 -relwidth 0.0 - } else { - set frac [expr {double($n) / $::Nagelfar(progressMax)}] - - place $::Nagelfar(progressWin).f -x 0 -relx 0 -y 0 -rely 0 \ - -relheight 1.0 -relwidth $frac - } - update idletasks -} - -# Set the 100 % level of the progress bar -proc progressMax {n} { - set ::Nagelfar(progressMax) $n - progressUpdate 0 -} - -# Create a simple progress bar -proc progressBar {w} { - set ::Nagelfar(progressWin) $w - - frame $w -bd 1 -relief solid -padx 2 -pady 2 -width 100 -height 20 - frame $w.f -background blue - - progressMax 100 - progressUpdate -1 -} - -# A thing to easily get to debug mode -proc backDoor {a} { - append ::Nagelfar(backdoor) $a - set ::Nagelfar(backdoor) [string range $::Nagelfar(backdoor) end-9 end] - if {$::Nagelfar(backdoor) eq "PeterDebug"} { - # Second time it redraw window, thus giving debug menu - if {$::debug == 1} { - makeWin - } - set ::debug 1 - catch {console show} - set ::Nagelfar(backdoor) "" - } -} - -# Flag that the current run should be stopped -proc stopCheck {} { - set ::Nagelfar(stop) 1 - $::Nagelfar(stopWin) configure -state disabled -} - -# Allow the stop button to be pressed -proc allowStop {} { - set ::Nagelfar(stop) 0 - $::Nagelfar(stopWin) configure -state normal -} - -# Create main window -proc makeWin {} { - defaultGuiOptions - - catch {font create ResultFont -family courier \ - -size [lindex $::Prefs(resultFont) 1]} - - eval destroy [winfo children .] - wm protocol . WM_DELETE_WINDOW exitApp - wm title . "Nagelfar: Tcl Syntax Checker" - tk appname Nagelfar - wm withdraw . - - # Syntax database section - - frame .fs - label .fs.l -text "Syntax database files" - button .fs.bd -text "Del" -width 10 -command removeDbFile - button .fs.b -text "Add" -width 10 -command addDbFile - set lb [Scroll y listbox .fs.lb \ - -listvariable ::Nagelfar(allDbView) \ - -height 4 -width 40 -selectmode single] - set ::Nagelfar(dbWin) $lb - - bind $lb "removeDbFile" - bind $lb <> updateDbSelection - bind $lb [list focus $lb] - updateDbSelection 1 - - grid .fs.l .fs.bd .fs.b -sticky w -padx 2 -pady 2 - grid .fs.lb - - -sticky news - grid columnconfigure .fs 0 -weight 1 - grid rowconfigure .fs 1 -weight 1 - - - # File section - - frame .ff - label .ff.l -text "Tcl files to check" - button .ff.bd -text "Del" -width 10 -command removeFile - button .ff.b -text "Add" -width 10 -command addFile - set lb [Scroll y listbox .ff.lb \ - -listvariable ::Nagelfar(files) \ - -height 4 -width 40] - set ::Nagelfar(fileWin) $lb - - bind $lb "removeFile" - bind $lb [list focus $lb] - bind $lb {moveFile -1} - bind $lb {moveFile 1} - - grid .ff.l .ff.bd .ff.b -sticky w -padx 2 -pady 2 - grid .ff.lb - - -sticky news - grid columnconfigure .ff 0 -weight 1 - grid rowconfigure .ff 1 -weight 1 - - # Set up file dropping in listboxes if TkDnd is available - if {![catch {package require tkdnd}]} { - dnd bindtarget . text/uri-list {fileDropFile %D} - #dnd bindtarget $::Nagelfar(fileWin) text/uri-list {fileDropFile %D} - dnd bindtarget $::Nagelfar(dbWin) text/uri-list {fileDropDb %D} - } - - # Result section - - frame .fr - progressBar .fr.pr - button .fr.b -text "Check" -underline 0 -width 10 -command "doCheck" - bind . doCheck - bind . doCheck - button .fr.bb -text "Stop" -underline 0 -width 10 -command "stopCheck" - bind . stopCheck - bind . stopCheck - set ::Nagelfar(stopWin) .fr.bb - button .fr.bn -text "Next E" -underline 0 -width 10 -command "seeNextError" - bind . seeNextError - bind . seeNextError - if {$::debug == 0} { - bind . "backDoor %A" - } - - set ::Nagelfar(resultWin) [Scroll both \ - text .fr.t -width 100 -height 25 -wrap none -font ResultFont] - - grid .fr.b .fr.bb .fr.bn .fr.pr -sticky w -padx 2 -pady {0 2} - grid .fr.t - - - -sticky news - grid columnconfigure .fr 2 -weight 1 - grid rowconfigure .fr 1 -weight 1 - - $::Nagelfar(resultWin) tag configure info -foreground #707070 - $::Nagelfar(resultWin) tag configure error -foreground red - $::Nagelfar(resultWin) tag configure hl -background yellow - bind $::Nagelfar(resultWin) "showError ; break" - bind $::Nagelfar(resultWin) "resultPopup %x %y %X %Y ; break" - - # Use the panedwindow in 8.4 - panedwindow .pw -orient vertical - lower .pw - frame .pw.f - grid .fs x .ff -in .pw.f -sticky news - grid columnconfigure .pw.f {0 2} -weight 1 -uniform a - grid columnconfigure .pw.f 1 -minsize 4 - grid rowconfigure .pw.f 0 -weight 1 - - # Make sure the frames have calculated their size before - # adding them to the pane - # This update can be excluded in 8.4.4+ - update idletasks - .pw add .pw.f -sticky news - .pw add .fr -sticky news - pack .pw -fill both -expand 1 - - - # Menus - - menu .m - . configure -menu .m - - # File menu - - .m add cascade -label "File" -underline 0 -menu .m.mf - menu .m.mf - .m.mf add command -label "Exit" -underline 1 -command exitApp - - # Options menu - addOptionsMenu .m - - # Tools menu - - .m add cascade -label "Tools" -underline 0 -menu .m.mt - menu .m.mt - .m.mt add command -label "Edit Window" -underline 0 \ - -command {editFile "" 0} - .m.mt add command -label "Browse Database" -underline 0 \ - -command makeDbBrowserWin - addRegistryToMenu .m.mt - - # Debug menu - - if {$::debug == 1} { - .m add cascade -label "Debug" -underline 0 -menu .m.md - menu .m.md - if {$::tcl_platform(platform) == "windows"} { - .m.md add checkbutton -label Console -variable consolestate \ - -onvalue show -offvalue hide \ - -command {console $consolestate} - .m.md add separator - } - .m.md add command -label "Reread Source" -command {source $thisScript} - .m.md add separator - .m.md add command -label "Redraw Window" -command {makeWin} - #.m.md add separator - #.m.md add command -label "Normal Cursor" -command {normalCursor} - } - - # Help menu is last - - .m add cascade -label "Help" -underline 0 -menu .m.help - menu .m.help - foreach label {README Messages {Syntax Databases} {Inline Comments} {Call By Name} {Syntax Tokens} {Code Coverage}} \ - file {README.txt messages.txt syntaxdatabases.txt inlinecomments.txt call-by-name.txt syntaxtokens.txt codecoverage.txt} { - .m.help add command -label $label -command [list makeDocWin $file] - } - .m.help add separator - .m.help add command -label About -command makeAboutWin - - wm deiconify . -} - -############################# -# A simple file viewer/editor -############################# - -# Try to locate emacs, if not done before -proc locateEmacs {} { - if {[info exists ::Nagelfar(emacs)]} return - - # Look for standard names in the path - set path [auto_execok emacs] - if {$path != ""} { - set ::Nagelfar(emacs) [list $path -f server-start] - } else { - set path [auto_execok runemacs.exe] - if {$path != ""} { - set ::Nagelfar(emacs) [list $path] - } - } - - if {![info exists ::Nagelfar(emacs)]} { - # Try the places where I usually have emacs on Windows - foreach dir [lsort -decreasing -dictionary \ - [glob -nocomplain c:/apps/emacs*]] { - set em [file join $dir bin runemacs.exe] - set em [file normalize $em] - if {[file exists $em]} { - set ::Nagelfar(emacs) [list $em] - break - } - } - } - # Look for emacsclient - foreach name {emacsclient} { - set path [auto_execok $name] - if {$path != ""} { - set ::Nagelfar(emacsclient) $path - break - } - } -} - -# Try to show a file using emacs -proc tryEmacs {filename lineNo} { - locateEmacs - # First try with emacsclient - if {[catch {exec $::Nagelfar(emacsclient) -n +$lineNo $filename}]} { - # Start a new emacs - if {[catch {eval exec $::Nagelfar(emacs) [list +$lineNo \ - $filename] &}]} { - # Failed - return 0 - } - } - return 1 -} - -# Try to show a file using vim -proc tryVim {filename lineNo} { - if {[catch {exec gvim +$lineNo $filename &}]} { - if {[catch {exec xterm -exec vi +$lineNo $filename &}]} { - return 0 - } - } - return 1 -} - -# Try to show a file using pfe -proc tryPfe {filename lineNo} { - if {$lineNo > 0} { - if {[catch {exec [auto_execok pfe32] /g $lineNo $filename &}]} { - return 0 - } - } elseif {[catch {exec [auto_execok pfe32] &}]} { - return 0 - } - return 1 -} - -# Edit a file using internal or external editor. -proc editFile {filename lineNo} { - if {$::Prefs(editor) eq "emacs" && [tryEmacs $filename $lineNo]} return - if {$::Prefs(editor) eq "vim" && [tryVim $filename $lineNo]} return - if {$::Prefs(editor) eq "pfe" && [tryPfe $filename $lineNo]} return - - if {[winfo exists .fv]} { - wm deiconify .fv - raise .fv - set w $::Nagelfar(editWin) - } else { - toplevel .fv - wm title .fv "Nagelfar Editor" - - if {$::Nagelfar(withCtext)} { - set w [Scroll both ctext .fv.t -linemap 0 \ - -width 80 -height 25 -font $::Prefs(editFileFont)] - ctext::setHighlightTcl $w - } else { - set w [Scroll both text .fv.t \ - -width 80 -height 25 -font $::Prefs(editFileFont)] - } - set ::Nagelfar(editWin) $w - # Set up a tag for incremental search bindings - if {[info procs textSearch::enableSearch] != ""} { - textSearch::enableSearch $w -label ::Nagelfar(iSearch) - } - - frame .fv.f - grid .fv.t -sticky news - grid .fv.f -sticky we - grid columnconfigure .fv 0 -weight 1 - grid rowconfigure .fv 0 -weight 1 - - menu .fv.m - .fv configure -menu .fv.m - .fv.m add cascade -label "File" -underline 0 -menu .fv.m.mf - menu .fv.m.mf - .fv.m.mf add command -label "Save" -underline 0 -command "saveFile" - .fv.m.mf add separator - .fv.m.mf add command -label "Close" -underline 0 -command "closeFile" - - .fv.m add cascade -label "Edit" -underline 0 -menu .fv.m.me - menu .fv.m.me - .fv.m.me add command -label "Clear/Paste" -underline 6 \ - -command "clearAndPaste" - .fv.m.me add command -label "Check" -underline 0 \ - -command "checkEditWin" - - .fv.m add cascade -label "Search" -underline 0 -menu .fv.m.ms - menu .fv.m.ms - if {[info procs textSearch::searchMenu] != ""} { - textSearch::searchMenu .fv.m.ms - } else { - .fv.m.ms add command -label "Text search not available" \ - -state disabled - } - - .fv.m add cascade -label "Options" -underline 0 -menu .fv.m.mo - menu .fv.m.mo - .fv.m.mo add checkbutton -label "Backup" -underline 0 \ - -variable ::Prefs(editFileBackup) - - .fv.m.mo add cascade -label "Font" -underline 0 -menu .fv.m.mo.mf - menu .fv.m.mo.mf - set cmd "[list $w] configure -font \$::Prefs(editFileFont)" - foreach lab {Small Medium Large} size {8 10 14} { - .fv.m.mo.mf add radiobutton -label $lab -underline 0 \ - -variable ::Prefs(editFileFont) \ - -value [list Courier $size] \ - -command $cmd - } - - label .fv.f.ln -width 5 -anchor e -textvariable ::Nagelfar(lineNo) - label .fv.f.li -width 1 -pady 0 -padx 0 \ - -textvariable ::Nagelfar(iSearch) - pack .fv.f.ln .fv.f.li -side right -padx 3 - - bind $w { - after idle { - set ::Nagelfar(lineNo) \ - [lindex [split [$::Nagelfar(editWin) index insert] .] 0] - } - } - bind $w [bind $w ] - - wm protocol .fv WM_DELETE_WINDOW closeFile - $w tag configure hl -background yellow - if {[info exists ::Nagelfar(editFileGeom)]} { - wm geometry .fv $::Nagelfar(editFileGeom) - } else { - after idle {after 1 { - set ::Nagelfar(editFileOrigGeom) [wm geometry .fv] - }} - } - } - - if {$filename != "" && \ - (![info exists ::Nagelfar(editFile)] || \ - $filename != $::Nagelfar(editFile))} { - $w delete 1.0 end - set ::Nagelfar(editFile) $filename - wm title .fv [file tail $filename] - - # Try to figure out eol style - set ch [open $filename r] - fconfigure $ch -translation binary - set data [read $ch 400] - close $ch - - set crCnt [expr {[llength [split $data \r]] - 1}] - set lfCnt [expr {[llength [split $data \n]] - 1}] - if {$crCnt == 0 && $lfCnt > 0} { - set ::Nagelfar(editFileTranslation) lf - } elseif {$crCnt > 0 && $crCnt == $lfCnt} { - set ::Nagelfar(editFileTranslation) crlf - } elseif {$lfCnt == 0 && $crCnt > 0} { - set ::Nagelfar(editFileTranslation) cr - } else { - set ::Nagelfar(editFileTranslation) auto - } - - #puts "EOL $::Nagelfar(editFileTranslation)" - - set ch [open $filename r] - set data [read $ch] - close $ch - if {$::Nagelfar(withCtext)} { - $w fastinsert end $data - } else { - $w insert end $data - } - } - - $w tag remove hl 1.0 end - $w tag add hl $lineNo.0 $lineNo.end - $w mark set insert $lineNo.0 - focus $w - set ::Nagelfar(lineNo) $lineNo - update - $w see insert - #after 1 {after idle {$::Nagelfar(editWin) see insert}} - if {$::Nagelfar(withCtext)} { - after idle [list $w highlight 1.0 end] - } -} - -proc saveFile {} { - if {[tk_messageBox -parent .fv -title "Save File" -type okcancel \ - -icon question \ - -message "Save file\n$::Nagelfar(editFile)"] != "ok"} { - return - } - if {$::Prefs(editFileBackup)} { - file copy -force -- $::Nagelfar(editFile) $::Nagelfar(editFile)~ - } - set ch [open $::Nagelfar(editFile) w] - fconfigure $ch -translation $::Nagelfar(editFileTranslation) - puts -nonewline $ch [$::Nagelfar(editWin) get 1.0 end-1char] - close $ch -} - -proc closeFile {} { - if {[info exists ::Nagelfar(editFileGeom)] || \ - ([info exists ::Nagelfar(editFileOrigGeom)] && \ - $::Nagelfar(editFileOrigGeom) != [wm geometry .fv])} { - set ::Nagelfar(editFileGeom) [wm geometry .fv] - } - - destroy .fv - set ::Nagelfar(editFile) "" -} - -proc clearAndPaste {} { - set w $::Nagelfar(editWin) - $w delete 1.0 end - focus $w - - if {$::tcl_platform(platform) == "windows"} { - event generate $w <> - } else { - $w insert 1.0 [selection get] - } -} - -proc checkEditWin {} { - set w $::Nagelfar(editWin) - - set script [$w get 1.0 end] - set ::Nagelfar(checkEdit) $script - doCheck - unset ::Nagelfar(checkEdit) -} - -###### -# Help -###### - -proc helpWin {w title} { - destroy $w - - toplevel $w - wm title $w $title - bind $w "destroy $w" - bind $w "destroy $w" - frame $w.f - button $w.b -text "Close" -command "destroy $w" -width 10 \ - -default active - pack $w.b -side bottom -pady 3 - pack $w.f -side top -expand y -fill both - focus $w - return $w.f -} - -proc makeAboutWin {} { - global version - - set w [helpWin .ab "About Nagelfar"] - - - text $w.t -width 45 -height 7 -wrap none -relief flat \ - -bg [$w cget -bg] - pack $w.t -side top -expand y -fill both - - $w.t insert end "A syntax checker for Tcl\n\n" - $w.t insert end "$version\n\n" - $w.t insert end "Made by Peter Spjuth\n" - $w.t insert end "E-Mail: peter.spjuth@gmail.com\n" - $w.t insert end "\nURL: http://nagelfar.berlios.de\n" - $w.t insert end "\nTcl version: [info patchlevel]" - set d [package provide tkdnd] - if {$d != ""} { - $w.t insert end "\nTkDnd version: $d" - } - catch {loadDatabases} - if {[info exists ::Nagelfar(dbInfo)] && $::Nagelfar(dbInfo) != ""} { - $w.t insert end "\nSyntax database: $::Nagelfar(dbInfo)" - } - set last [lindex [split [$w.t index end] "."] 0] - $w.t configure -height $last - $w.t configure -state disabled -} - -# Partial backslash-subst -proc mySubst {str} { - subst -nocommands -novariables [string map {\\\n \\\\\n} $str] -} - -# Insert a text file into a text widget. -# Any XML-style tags in the file are used as tags in the text window. -proc insertTaggedText {w file} { - set ch [open $file r] - set data [read $ch] - close $ch - - set tags {} - while {$data != ""} { - if {[regexp {^([^<]*)<(/?)([^>]+)>(.*)$} $data -> pre sl tag post]} { - $w insert end [mySubst $pre] $tags - set i [lsearch $tags $tag] - if {$sl != ""} { - # Remove tag - if {$i >= 0} { - set tags [lreplace $tags $i $i] - } - } else { - # Add tag - lappend tags $tag - } - set data $post - } else { - $w insert end [mySubst $data] $tags - set data "" - } - } -} - -proc makeDocWin {fileName} { - set w [helpWin .doc "Nagelfar Help"] - set t [Scroll both \ - text $w.t -width 80 -height 25 -wrap none -font ResultFont] - pack $w.t -side top -expand 1 -fill both - - # Set up tags - $t tag configure ul -underline 1 - - if {![file exists $::thisDir/doc/$fileName]} { - $t insert end "ERROR: Could not find doc file " - $t insert end \"$fileName\" - return - } - insertTaggedText $t $::thisDir/doc/$fileName - - #focus $t - $t configure -state disabled -} - -# Generate a file path relative to a dir -proc fileRelative {dir file} { - set dirpath [file split $dir] - set filepath [file split $file] - set newpath {} - - set dl [llength $dirpath] - set fl [llength $filepath] - for {set t 0} {$t < $dl && $t < $fl} {incr t} { - set f [lindex $filepath $t] - set d [lindex $dirpath $t] - if {![string equal $f $d]} break - } - # Return file if too unequal - if {$t <= 2 || ($dl - $t) > 3} { - return $file - } - for {set u $t} {$u < $dl} {incr u} { - lappend newpath ".." - } - return [eval file join $newpath [lrange $filepath $t end]] -} - -proc defaultGuiOptions {} { - catch {package require griffin} - - option add *Menu.tearOff 0 - if {[tk windowingsystem]=="x11"} { - option add *Menu.activeBorderWidth 1 - option add *Menu.borderWidth 1 - - option add *Listbox.exportSelection 0 - option add *Listbox.borderWidth 1 - option add *Listbox.highlightThickness 1 - option add *Font "Helvetica -12" - } - - if {$::tcl_platform(platform) == "windows"} { - option add *Panedwindow.sashRelief flat - option add *Panedwindow.sashWidth 4 - option add *Panedwindow.sashPad 0 - } -} -#---------------------------------------------------------------------- -# dbbrowser.tcl, Database browser -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -proc makeDbBrowserWin {} { - if {[winfo exists .db]} { - wm deiconify .db - raise .db - set w $::Nagelfar(dbBrowserWin) - } else { - toplevel .db - wm title .db "Nagelfar Database" - - set w [Scroll y text .db.t -wrap word \ - -width 80 -height 15 -font $::Prefs(editFileFont)] - set ::Nagelfar(dbBrowserWin) $w - $w tag configure all -lmargin2 2c - set f [frame .db.f -padx 3 -pady 3] - grid .db.f -sticky we - grid .db.t -sticky news - grid columnconfigure .db 0 -weight 1 - grid rowconfigure .db 1 -weight 1 - - label $f.l -text "Command" - entry $f.e -textvariable ::Nagelfar(dbBrowserCommand) -width 15 - button $f.b -text "Search" -command dbBrowserSearch -default active - - grid $f.l $f.e $f.b -sticky ew -padx 3 - grid columnconfigure $f 1 -weight 1 - - bind .db dbBrowserSearch - } -} - -proc dbBrowserSearch {} { - set cmd $::Nagelfar(dbBrowserCommand) - set w $::Nagelfar(dbBrowserWin) - - loadDatabases - $w delete 1.0 end - - # Must be at least one word char in the pattern - set pat $cmd* - if {![regexp {\w} $pat]} { - set pat "" - } - - foreach item [lsort -dictionary [array names ::syntax $pat]] { - $w insert end "\#\#nagelfar syntax [list $item]" - $w insert end " " - $w insert end $::syntax($item)\n - } - foreach item [lsort -dictionary [array names ::subCmd $pat]] { - $w insert end "\#\#nagelfar subcmd [list $item]" - $w insert end " " - $w insert end $::subCmd($item)\n - } - foreach item [lsort -dictionary [array names ::option $pat]] { - $w insert end "\#\#nagelfar option [list $item]" - $w insert end " " - $w insert end $::option($item)\n - } - foreach item [lsort -dictionary [array names ::return $pat]] { - $w insert end "\#\#nagelfar return [list $item]" - $w insert end " " - $w insert end $::return($item)\n - } - - if {[$w index end] eq "2.0"} { - $w insert end "No match!" - } - $w tag add all 1.0 end -} -#---------------------------------------------------------------------- -# registry.tcl, Support for Windows Registry -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -# Make a labelframe for one registry item -proc makeRegistryFrame {w label key newvalue} { - - set old {} - catch {set old [registry get $key {}]} - - set l [labelframe $w -text $label -padx 4 -pady 4] - - label $l.key1 -text "Key:" - label $l.key2 -text $key - label $l.old1 -text "Old value:" - label $l.old2 -text $old - label $l.new1 -text "New value:" - label $l.new2 -text $newvalue - - button $l.change -text "Change" -width 10 -command \ - "[list registry set $key {} $newvalue] ; \ - [list $l.change configure -state disabled]" - button $l.delete -text "Delete" -width 10 -command \ - "[list registry delete $key] ; \ - [list $l.delete configure -state disabled]" - if {[string equal $newvalue $old]} { - $l.change configure -state disabled - } - if {[string equal "" $old]} { - $l.delete configure -state disabled - } - grid $l.key1 $l.key2 - -sticky "w" -padx 4 -pady 4 - grid $l.old1 $l.old2 - -sticky "w" -padx 4 -pady 4 - grid $l.new1 $l.new2 - -sticky "w" -padx 4 -pady 4 - grid $l.delete - $l.change -sticky "w" -padx 4 -pady 4 - grid $l.change -sticky "e" - grid columnconfigure $l 2 -weight 1 -} - -# Registry dialog -proc makeRegistryWin {} { - global thisScript - - # Locate executable for this program - set exe [info nameofexecutable] - if {[regexp {^(.*wish)\d+\.exe$} $exe -> pre]} { - set alt $pre.exe - if {[file exists $alt]} { - set a [tk_messageBox -title "Nagelfar" -icon question \ - -title "Which Wish" -message \ - "Would you prefer to use the executable\n\ - \"$alt\"\ninstead of\n\ - \"$exe\"\nin the registry settings?" -type yesno] - if {$a eq "yes"} { - set exe $alt - } - } - } - - set top .reg - destroy $top - toplevel $top - wm title $top "Register Nagelfar" - - # Registry keys - - set key {HKEY_CLASSES_ROOT\.tcl\shell\Check\command} - set old {} - catch {set old [registry get {HKEY_CLASSES_ROOT\.tcl} {}]} - if {$old != ""} { - set key "HKEY_CLASSES_ROOT\\$old\\shell\\Check\\command" - } - - # Are we in a starkit? - if {[info exists ::starkit::topdir]} { - # In a starpack ? - set exe [file normalize $exe] - if {[string equal [file normalize $::starkit::topdir] $exe]} { - set myexe [list $exe] - } else { - set myexe [list $exe $::starkit::topdir] - } - } else { - if {[regexp {wish\d+\.exe} $exe]} { - set exe [file join [file dirname $exe] wish.exe] - if {[file exists $exe]} { - set myexe [list $exe] - } - } - set myexe [list $exe $thisScript] - } - - set valbase {} - foreach item $myexe { - lappend valbase \"[file nativename $item]\" - } - set valbase [join $valbase] - - set new "$valbase -gui \"%1\"" - makeRegistryFrame $top.d "Check" $key $new - - pack $top.d -side "top" -fill x -padx 4 -pady 4 - - button $top.close -text "Close" -width 10 -command [list destroy $top] \ - -default active - pack $top.close -side bottom -pady 4 - bind $top [list destroy $top] - bind $top [list destroy $top] -} - -# Add a registry item to a menu, if supported. -proc addRegistryToMenu {m} { - if {$::tcl_platform(platform) eq "windows"} { - if {![catch {package require registry}]} { - $m add separator - $m add command -label "Setup Registry" -underline 6 \ - -command makeRegistryWin - } - } -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2005, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# preferences.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -# Save default options -proc saveOptions {} { - if {[catch {set ch [open "~/.nagelfarrc" w]}]} { - errEcho "Could not create options file." - return - } - - foreach i [array names ::Prefs] { - puts $ch [list set ::Prefs($i) $::Prefs($i)] - } - close $ch -} - -# Fill in default options and load user's saved file -proc getOptions {} { - array set ::Prefs { - warnBraceExpr 2 - warnShortSub 1 - strictAppend 0 - forceElse 1 - noVar 0 - severity N - editFileBackup 1 - editFileFont {Courier 10} - resultFont {Courier 10} - editor internal - extensions {.tcl .test .adp .tk} - exitcode 0 - html 0 - htmlprefix "" - } - - # Do not load anything during test - if {[info exists ::_nagelfar_test]} return - - foreach candidate {.nagelfarrc ~/.nagelfarrc} { - if {[file exists $candidate]} { - interp create -safe loadinterp - interp expose loadinterp source - interp eval loadinterp source $candidate - array set ::Prefs [interp eval loadinterp array get ::Prefs] - interp delete loadinterp - break - } - } -} - -# Add an "Options" cascade to a menu -proc addOptionsMenu {m} { - $m add cascade -label "Options" -underline 0 -menu $m.mo - menu $m.mo - - $m.mo add cascade -label "Result Window Font" -menu $m.mo.mo - menu $m.mo.mo - $m.mo.mo add radiobutton -label "Small" \ - -variable ::Prefs(resultFont) -value "Courier 8" \ - -command {font configure ResultFont -size 8} - $m.mo.mo add radiobutton -label "Medium" \ - -variable ::Prefs(resultFont) -value "Courier 10" \ - -command {font configure ResultFont -size 10} - $m.mo.mo add radiobutton -label "Large" \ - -variable ::Prefs(resultFont) -value "Courier 14" \ - -command {font configure ResultFont -size 14} - - $m.mo add cascade -label "Editor" -menu $m.mo.med - menu $m.mo.med - $m.mo.med add radiobutton -label "Internal" \ - -variable ::Prefs(editor) -value internal - $m.mo.med add radiobutton -label "Emacs" \ - -variable ::Prefs(editor) -value emacs - $m.mo.med add radiobutton -label "Vim" \ - -variable ::Prefs(editor) -value vim - - if {$::tcl_platform(platform) == "windows"} { - $m.mo.med add radiobutton -label "Pfe" \ - -variable ::Prefs(editor) -value pfe - } - - $m.mo add separator - - $m.mo add cascade -label "Severity level" -menu $m.mo.ms - menu $m.mo.ms - $m.mo.ms add radiobutton -label "Show All (E/W/N)" \ - -variable ::Prefs(severity) -value N - $m.mo.ms add radiobutton -label {Show Warnings (E/W)} \ - -variable ::Prefs(severity) -value W - $m.mo.ms add radiobutton -label {Show Errors (E)} \ - -variable ::Prefs(severity) -value E - - $m.mo add checkbutton -label "Warn about shortened subcommands" \ - -variable ::Prefs(warnShortSub) - $m.mo add cascade -label "Braced expressions" -menu $m.mo.mb - menu $m.mo.mb - $m.mo.mb add radiobutton -label "Allow unbraced" \ - -variable ::Prefs(warnBraceExpr) -value 0 - $m.mo.mb add radiobutton -label {Allow 'if [cmd] {xxx}'} \ - -variable ::Prefs(warnBraceExpr) -value 1 - $m.mo.mb add radiobutton -label "Warn on any unbraced" \ - -variable ::Prefs(warnBraceExpr) -value 2 - $m.mo add checkbutton -label "Enforce else keyword" \ - -variable ::Prefs(forceElse) - $m.mo add checkbutton -label "Strict (l)append" \ - -variable ::Prefs(strictAppend) - $m.mo add checkbutton -label "Disable variable checking" \ - -variable ::Prefs(noVar) - - $m.mo add cascade -label "Script encoding" -menu $m.mo.me - menu $m.mo.me - $m.mo.me add radiobutton -label "Ascii" \ - -variable ::Nagelfar(encoding) -value ascii - $m.mo.me add radiobutton -label "Iso8859-1" \ - -variable ::Nagelfar(encoding) -value iso8859-1 - $m.mo.me add radiobutton -label "System ([encoding system])" \ - -variable ::Nagelfar(encoding) -value system - - - $m.mo add separator - $m.mo add command -label "Save Options" -command saveOptions - -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2005, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# startup.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -# Output usage info and exit -proc usage {} { - puts $::version - puts {Usage: nagelfar [options] scriptfile ... - -help : Show usage. - -gui : Start with GUI even when files are specified. - -s : Include a database file. (More than one is allowed.) - -encoding : Read script with this encoding. - -filter

: Any message that matches the glob pattern is suppressed. - -severity : Set severity level filter to N/W/E (default N). - -html : Generate html-output. - -prefix : Prefix for line anchors (html output) - -novar : Disable variable checking. - -WexprN : Sets expression warning level to N. - 2 (def) = Warn about any unbraced expression. - 1 = Don't warn on single commands. "if [apa] {...}" is ok. - -WsubN : Sets subcommand warning level to N. - 1 (def) = Warn about shortened subcommands. - -WelseN : Enforce else keyword. Default 1. - -strictappend : Enforce having an initialised variable in (l)append. - -tab : Tab size, default is 8. - -header : Create a "header" file with syntax info for scriptfiles. - -instrument : Instrument source file for code coverage. - -markup : Markup source file with code coverage result. - -quiet : Suppress non-syntax output. - -glob : Add matching files to scriptfiles to check. - -exitcode : Return status code 2 for any error or 1 for warning.} - exit -} - -# Initialise global variables with defaults. -proc StartUp {} { - set ::Nagelfar(db) {} - set ::Nagelfar(files) {} - set ::Nagelfar(gui) 0 - set ::Nagelfar(quiet) 0 - set ::Nagelfar(filter) {} - set ::Nagelfar(2pass) 1 - set ::Nagelfar(encoding) system - set ::Nagelfar(dbpicky) 0 - set ::Nagelfar(withCtext) 0 - set ::Nagelfar(instrument) 0 - set ::Nagelfar(header) "" - set ::Nagelfar(tabReg) { {0,7}\t| {8,8}} - set ::Nagelfar(tabSub) [string repeat " " 8] - set ::Nagelfar(tabMap) [list \t $::Nagelfar(tabSub)] - set ::Nagelfar(procs) {} - set ::Nagelfar(stop) 0 - if {![info exists ::Nagelfar(embedded)]} { - set ::Nagelfar(embedded) 0 - } - - getOptions -} - -# Procedure to perform a check when embedded. -proc synCheck {fpath dbPath} { - set ::Nagelfar(files) [list $fpath] - set ::Nagelfar(allDb) {} - set ::Nagelfar(allDbView) {} - set ::Nagelfar(allDb) [list $dbPath] - set ::Nagelfar(allDbView) [list [file tail $dbPath] "(app)"] - set ::Nagelfar(db) [list $dbPath] - set ::Nagelfar(embedded) 1 - set ::Nagelfar(chkResult) "" - doCheck - return $::Nagelfar(chkResult) -} - - -# Global code is only run first time to allow re-sourcing -if {![info exists gurka]} { - set gurka 1 - - StartUp - - if {[info exists _nagelfar_test]} return - # To use Nagelfar embedded, set ::Nagelfar(embedded) 1 - # before sourcing nagelfar.tcl. - if {$::Nagelfar(embedded)} return - - # Locate default syntax database(s) - set ::Nagelfar(allDb) {} - set ::Nagelfar(allDbView) {} - set apa {} - lappend apa [file join [pwd] syntaxdb.tcl] - eval lappend apa [glob -nocomplain [file join [pwd] syntaxdb*.tcl]] - - lappend apa [file join $thisDir syntaxdb.tcl] - eval lappend apa [glob -nocomplain [file join $thisDir syntaxdb*.tcl]] - - foreach file $apa { - if {[file isfile $file] && [file readable $file] && \ - [lsearch $::Nagelfar(allDb) $file] == -1} { - lappend ::Nagelfar(allDb) $file - if {[file dirname $file] == $::thisDir} { - lappend ::Nagelfar(allDbView) "[file tail $file] (app)" - } else { - lappend ::Nagelfar(allDbView) [fileRelative [pwd] $file] - } - } - } - - # Parse command line options - for {set i 0} {$i < $argc} {incr i} { - set arg [lindex $argv $i] - switch -glob -- $arg { - --h* - - -h - -hel* { - usage - } - -s { - incr i - set arg [lindex $argv $i] - if {[file isfile $arg] && [file readable $arg]} { - lappend ::Nagelfar(db) $arg - lappend ::Nagelfar(allDb) $arg - lappend ::Nagelfar(allDbView) $arg - } else { - # Look through allDb for a match - set found 0 - foreach db $::Nagelfar(allDb) { - if {$arg eq $db || $arg eq [file tail $db]} { - lappend ::Nagelfar(db) $db - set found 1 - break - } - } - if {!$found} { - puts stderr "Cannot read \"$arg\"" - } - } - } - -editor { - incr i - set arg [lindex $argv $i] - switch -glob -- $arg { - ema* {set ::Prefs(editor) emacs} - inte* {set ::Prefs(editor) internal} - vi* {set ::Prefs(editor) vim} - default { - puts stderr "Bad -editor option: \"$arg\"" - } - } - } - -encoding { - incr i - set enc [lindex $argv $i] - if {$enc eq ""} {set enc system} - if {[lsearch -exact [encoding names] $enc] < 0} { - puts stderr "Bad encoding name: \"$enc\"" - set enc system - } - set ::Nagelfar(encoding) $enc - } - -exitcode { - set ::Prefs(exitcode) 1 - } - -2pass { - set ::Nagelfar(2pass) 1 - } - -gui { - set ::Nagelfar(gui) 1 - } - -quiet { - set ::Nagelfar(quiet) 1 - } - -header { - incr i - set arg [lindex $argv $i] - set ::Nagelfar(header) $arg - # Put checks down as much as possible - array set ::Prefs { - warnBraceExpr 0 - warnShortSub 0 - strictAppend 0 - forceElse 0 - severity E - } - } - -instrument { - set ::Nagelfar(instrument) 1 - # Put checks down as much as possible - array set ::Prefs { - warnBraceExpr 0 - warnShortSub 0 - strictAppend 0 - forceElse 0 - noVar 1 - severity E - } - } - -markup { - incr i - if {$i < $argc} { - lappend ::Nagelfar(files) [lindex $argv $i] - } - instrumentMarkup [lindex $::Nagelfar(files) 0] - exit - } - -novar { - set ::Prefs(noVar) 1 - } - -dbpicky { # A debug thing to help make a more complete database - set ::Nagelfar(dbpicky) 1 - } - -Wexpr* { - set ::Prefs(warnBraceExpr) [string range $arg 6 end] - } - -Wsub* { - set ::Prefs(warnShortSub) [string range $arg 5 end] - } - -Welse* { - set ::Prefs(forceElse) [string range $arg 6 end] - } - -strictappend { - set ::Prefs(strictAppend) 1 - } - -filter { - incr i - addFilter [lindex $argv $i] - } - -severity { - incr i - set ::Prefs(severity) [lindex $argv $i] - if {![regexp {^[EWN]$} $::Prefs(severity)]} { - puts "Bad severity level '$::Prefs(severity)',\ - should be E/W/N." - exit - } - } - -html { - set ::Prefs(html) 1 - } - -prefix { - incr i - set ::Prefs(htmlprefix) [lindex $argv $i] - } - -tab { - incr i - set arg [lindex $argv $i] - if {![string is integer -strict $arg] || \ - $arg < 2 || $arg > 20} { - puts "Bad tab value '$arg'" - exit - } - set ::Nagelfar(tabReg) " {0,[expr {$arg - 1}]}\t| {$arg,$arg}" - set ::Nagelfar(tabSub) [string repeat " " $arg] - set ::Nagelfar(tabMap) [list \t $::Nagelfar(tabSub)] - } - -glob { - incr i - set files [glob -nocomplain [lindex $argv $i]] - set ::Nagelfar(files) [concat $::Nagelfar(files) $files] - } - -* { - puts "Unknown option $arg" - usage - } - default { - lappend ::Nagelfar(files) $arg - } - } - } - - # Use default database if none were given - if {[llength $::Nagelfar(db)] == 0} { - if {[llength $::Nagelfar(allDb)] != 0} { - lappend ::Nagelfar(db) [lindex $::Nagelfar(allDb) 0] - } - } - - # If we are on Windows and Tk is already loaded it means we run in - # wish, and there is no stdout. Thus non-gui is pointless. - if {!$::Nagelfar(gui) && $::tcl_platform(platform) eq "windows" && - [package provide Tk] ne ""} { - set ::Nagelfar(gui) 1 - } - - # If there is no file specified, try invoking a GUI - if {$::Nagelfar(gui) || [llength $::Nagelfar(files)] == 0} { - if {[catch {package require Tk}]} { - if {$::Nagelfar(gui)} { - puts stderr "Failed to start GUI" - exit 1 - } else { - puts stderr "No files specified" - exit 1 - } - } - # use ctext if available - if {![catch {package require ctext}]} { - if {![catch {package require ctext_tcl}]} { - if {[info procs ctext::setHighlightTcl] ne ""} { - set ::Nagelfar(withCtext) 1 - proc ctext::update {} {::update} - } - } - } - - catch {package require textSearch} - set ::Nagelfar(gui) 1 - makeWin - vwait forever - exit - } - - doCheck - - #_dumplogme - #if {[array size _stats] > 0} { - # array set _apa [array get _stats] - # parray _apa - # set sum 0 - # foreach name [array names _apa] { - # incr sum $_apa($name) - # } - # puts "Total $sum" - #} - exit [expr {$::Prefs(exitcode) ? $::Nagelfar(exitstatus) : 0}] -} diff --git a/etc/soft/nagelfar/nagelfar.syntax b/etc/soft/nagelfar/nagelfar.syntax deleted file mode 100644 index 050ca7d..0000000 --- a/etc/soft/nagelfar/nagelfar.syntax +++ /dev/null @@ -1,40 +0,0 @@ -# This is a supplement to the source file nagelfar.tcl to provide -# extra syntax info for it. -# Whenever .tcl is checked, any .syntax is run through -# the syntax checker first. - -# Comments of the style below can be included in the source file -# or in a file like this if that is not suitable. - -# The syntax tokens (x/v/n etc.) are described in syntaxbuild.tcl -# More info can be found in the doc about inline comments. - - -# This procedure takes four arguments, the third being a call-by-name -# where the variable is set by the proc. The fourth is a call-by-name -# where the variable should exist before. - -##nagelfar syntax parseSubst x x n v - -# This procedure takes three arguments, the third being a -# call-by-name where the variable should exist before. - -##nagelfar syntax parseBody x x v x? - -# Argument 6 and 7 to markVariable is a call-by-name where -# the variable is set by this call and need not exist before. - -##nagelfar syntax markVariable x x x x x n n - -# This application uses TkDnd but since the standard database usually -# do not know about 'dnd', it is included here to avoid false warnings. - -##nagelfar syntax dnd s x* - -# The "s" above denotes a subcommand, and those can be listed like this. - -##nagelfar subcmd dnd bindtarget cleartarget - -# Additional syntax can be defined for a subcommand - -##nagelfar syntax dnd\ bindtarget 4 diff --git a/etc/soft/nagelfar/nagelfar.tcl b/etc/soft/nagelfar/nagelfar.tcl deleted file mode 100755 index b9482a9..0000000 --- a/etc/soft/nagelfar/nagelfar.tcl +++ /dev/null @@ -1,5726 +0,0 @@ -#!/bin/sh -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2010, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# prologue.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- -# the next line restarts using tclsh \ -exec tclsh "$0" "$@" - -set debug 0 -package require Tcl 8.4 - -package provide app-nagelfar 1.0 -set version "Version 1.1.11 2010-10-04" - -set thisScript [file normalize [file join [pwd] [info script]]] -set thisDir [file dirname $thisScript] - -# Follow any link -set tmplink $thisScript -while {[file type $tmplink] == "link"} { - set tmplink [file readlink $tmplink] - set tmplink [file normalize [file join $thisDir $tmplink]] - set thisDir [file dirname $tmplink] -} -unset tmplink - -# Search where the script is to be able to place e.g. ctext there. -if {[info exists ::starkit::topdir]} { - lappend auto_path [file dirname [file normalize $::starkit::topdir]] -} else { - lappend auto_path $thisDir -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2010, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# nagelfar.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -##################### -# Syntax check engine -##################### - -# Arguments to many procedures: -# index : Index of the start of a string or command. -# cmd : Command -# argv : List of arguments -# wordstatus: List of status for the words in argv -# indices : List of indices where every word in argv starts -# knownVars : An array that keeps track of variables known in this scope - -# Interpretation of wordstatus: -# 1 constant -# 2 braced -# 4 quoted -# 8 {*}-expanded - -# Interpretation of knownVars: -# knownVars(known,$var) : Variable is known to exist. -# knownVars(local,$var) : Variable is local in a procedure. -# knownVars(set,$var) : A set of this variable has been seen. -# knownVars(read,$var) : A read of this variable has been seen. -# knownVars(type,$var) : The variable's type if known. -# knownVars(namespace,$var) : Variable belongs to this namespace. -# knownVars(upvar,$var) : Variable is upvared from this variable. - -# Moved out message handling to make it more flexible -proc echo {str {tag {}}} { - if {[info exists ::Nagelfar(resultWin)]} { - if {$tag == 1} { - set tag info - } - $::Nagelfar(resultWin) configure -state normal - $::Nagelfar(resultWin) insert end $str\n $tag - $::Nagelfar(resultWin) configure -state disabled - } elseif {$::Nagelfar(embedded)} { - lappend ::Nagelfar(chkResult) $str - } else { - puts stdout $str - } - update -} - -# Debug output -proc decho {str} { - if {[info exists ::Nagelfar(resultWin)]} { - $::Nagelfar(resultWin) configure -state normal - $::Nagelfar(resultWin) insert end $str\n error - $::Nagelfar(resultWin) configure -state disabled - } else { - puts stderr $str - } - update -} - -# Error message from program, not from syntax check -proc errEcho {msg} { - if {$::Nagelfar(gui)} { - tk_messageBox -title "Nagelfar Error" -type ok -icon error \ - -message $msg - } else { - puts stderr $msg - } -} - -# Add html quiting on a string -proc Text2Html {data} { - string map {\& \& \< \< \> \> \" \"} $data -} - -# Standard error message. -# severity : How severe a message is E/W/N for Error/Warning/Note -proc errorMsg {severity msg i} { - #echo "$msg" - if {$::Prefs(html)} { - set msg [Text2Html $msg] - if {$msg == "Expr without braces"} { - append msg " (see http://tclhelp.net/unb/194)" - } - } - - if {[info exists ::Nagelfar(currentMessage)] && \ - $::Nagelfar(currentMessage) != ""} { - lappend ::Nagelfar(messages) [list $::Nagelfar(currentMessageLine) \ - $::Nagelfar(currentMessage)] - } - - set ::Nagelfar(currentMessage) "" - switch $severity { - E {} - W { if {$::Prefs(severity) == "E"} return } - N { if {$::Prefs(severity) != "N"} return } - default { - decho "Internal error: Bad severity '$severity' passed to errorMsg" - return - } - } - - set pre "" - if {$::currentFile != ""} { - set pre "$::currentFile: " - } - set line [calcLineNo $i] - - switch $severity { - E { set color "#DD0000"; set severityMsg "ERROR" } - W { set color "#FFAA00"; set severityMsg "WARNING" } - N { set color "#66BB00"; set severityMsg "NOTICE" } - } - set pre "${pre}Line $line: $severity " - if {$::Prefs(html)} { - set pre "Line [format %3d $line]: $severityMsg: " - } - - set ::Nagelfar(indent) [string repeat " " [string length $pre]] - set ::Nagelfar(currentMessage) $pre$msg - set ::Nagelfar(currentMessageLine) $line -} - -# Continued message. Used to give extra info after an error. -proc contMsg {msg {i {}}} { - if {$::Nagelfar(currentMessage) == ""} return - append ::Nagelfar(currentMessage) "\n" $::Nagelfar(indent) - if {$i != ""} { - regsub -all {%L} $msg [calcLineNo $i] msg - } - append ::Nagelfar(currentMessage) $msg -} - -# Initialize message handling. -proc initMsg {} { - set ::Nagelfar(messages) {} - set ::Nagelfar(currentMessage) "" - set ::Nagelfar(commentbrace) {} -} - -# Called after a file has been parsed, to flush messages -proc flushMsg {} { - if {[info exists ::Nagelfar(currentMessage)] && \ - $::Nagelfar(currentMessage) != ""} { - lappend ::Nagelfar(messages) [list $::Nagelfar(currentMessageLine) \ - $::Nagelfar(currentMessage)] - } - - set msgs [lsort -integer -index 0 $::Nagelfar(messages)] - - foreach msg $msgs { - set text [lindex $msg 1] - set print 1 - foreach filter $::Nagelfar(filter) { - if {[string match $filter $text]} { - set print 0 - break - } - } - if {$print} { - incr ::Nagelfar(messageCnt) - echo [lindex $msg 1] message$::Nagelfar(messageCnt) - if {$::Nagelfar(exitstatus) < 2 && [string match "*: E *" $msg]} { - set ::Nagelfar(exitstatus) 2 - } elseif {$::Nagelfar(exitstatus) < 1 && [string match "*: W *" $msg]} { - set ::Nagelfar(exitstatus) 1 - } - } - } -} - -# Report any unbalanced braces in comments that have been noticed -proc reportCommentBrace {fromIx toIx} { - set fromLn [calcLineNo $fromIx] - set toLn [calcLineNo $toIx] - set new {} - foreach {n lineNo} $::Nagelfar(commentbrace) { - if {$fromLn <= $lineNo && $lineNo <= $toLn} { - contMsg "Unbalanced brace in comment in line $lineNo." - } else { - lappend new $n $lineNo - } - } - # Only report it once - set ::Nagelfar(commentbrace) $new -} - -# Trim a string to fit within a length. -proc trimStr {str {len 10}} { - set str [string trim $str] - if {[string length $str] > $len} { - set str [string range $str 0 [expr {$len - 4}]]... - } - return $str -} - -# Test for comments with unmatched braces. -proc checkPossibleComment {str lineNo} { - # Count braces - set n1 [llength [split $str \{]] - set n2 [llength [split $str \}]] - if {$n1 != $n2} { - lappend ::Nagelfar(commentbrace) [expr {$n1 - $n2}] $lineNo - } -} - -# Copy the syntax from one command to another -proc CopyCmdInDatabase {from to {map {}}} { - foreach arrName {::syntax ::return ::subCmd ::option} { - upvar 0 $arrName arr - foreach item [array names arr] { - if {$item eq $from} { - # Handle overwrite? - if {[info exists arr($to)]} { - if {$arrName eq "::subCmd"} { - # Add to a subcommand list - set arr($to) [lsort -unique [concat $arr($to) $arr($item)]] - } else { - # FIXA? - #echo "$::Nagelfar(firstpass) $from $to $arrName $item" - } - } else { - #echo "Copy $from $to $arrName $item" - set arr($to) [string map $map $arr($item)] - } - } else { - set len [expr {[string length $from] + 1}] - if {[string equal -length $len $item "$from "]} { - set to2 "$to [string range $item $len end]" - set arr($to2) [string map $map $arr($item)] - } - } - } - } - lappend ::knownCommands $to -} - -# This is called when a comment is encountered. -# It allows syntax information to be stored in comments -proc checkComment {str index knownVarsName} { - upvar $knownVarsName knownVars - - if {[string match "##nagelfar *" $str]} { - set rest [string range $str 11 end] - if {[catch {llength $rest}]} { - errorMsg W "Bad list in ##nagelfar comment" $index - return - } - if {[llength $rest] == 0} return - set cmd [lindex $rest 0] - set first [lindex $rest 1] - set rest [lrange $rest 2 end] - switch -- $cmd { - syntax { -# decho "Syntax for '$first' : '$rest'" - set ::syntax($first) $rest - lappend ::knownCommands $first - } - implicitvar { - set ::implicitVar($first) $rest - } - return { - set ::return($first) $rest - } - subcmd { - set ::subCmd($first) $rest - } - subcmd+ { - eval [list lappend ::subCmd($first)] $rest - } - option { - set ::option($first) $rest - } - variable { - set type [join $rest] - markVariable $first 1 "" 1 $index knownVars type - } - alias { - set ::knownAliases($first) $rest - } - copy { - #echo "Copy in $::Nagelfar(firstpass) $first [lindex $rest 0]" - CopyCmdInDatabase $first [lindex $rest 0] [lrange $rest 1 end] - } - nocover { - set ::instrumenting(no,$index) 1 - } - cover { - if {$first ne "variable"} { - - } else { - set varname [lindex $rest 0] - set ::instrumenting($index) [list var $varname] - } - } - ignore - - filter { - # FIXA, syntax for several lines - set line [calcLineNo $index] - incr line - switch -- $first { - N { addFilter "*Line *$line: N *[join $rest]*" } - W { addFilter "*Line *$line: \[NW\] *[join $rest]*" } - E { addFilter "*Line *$line:*[join $rest]*" } - default { addFilter "*Line *$line:*$first [join $rest]*" } - } - } - default { - errorMsg W "Bad type in ##nagelfar comment" $index - return - } - } - } elseif {[regexp {\#\s*(FRINK|PRAGMA):\s*nocheck} $str -> keyword]} { - # Support Frink's inline comment - set line [calcLineNo $index] - incr line - addFilter "*Line *$line:*" - } -} - -# Handle a stack of current namespaces. -proc currentNamespace {} { - lindex $::Nagelfar(namespaces) end -} - -proc pushNamespace {ns} { - lappend ::Nagelfar(namespaces) $ns -} - -proc popNamespace {} { - set ::Nagelfar(namespaces) [lrange $::Nagelfar(namespaces) 0 end-1] -} - -# Handle a stack of current procedures. -proc currentProc {} { - lindex $::Nagelfar(procs) end -} - -proc pushProc {p} { - lappend ::Nagelfar(procs) $p -} - -proc popProc {} { - set ::Nagelfar(procs) [lrange $::Nagelfar(procs) 0 end-1] -} - -# Handle a current object. -proc currentObject {} { - return [lindex $::Nagelfar(object) 0] -} - -proc currentObjectOrig {} { - return [lindex $::Nagelfar(object) 1] -} - -proc setCurrentObject {objname name} { - set ::Nagelfar(object) [list $objname $name] -} - -# Return the index of the first non whitespace char following index "i". -proc skipWS {str len i} { - set j [string length [string trimleft [string range $str $i end]]] - return [expr {$len - $j}] -} - -# Scan the string until the end of one word is found. -# When entered, i points to the start of the word. -# Returns the index of the last char of the word. -proc scanWord {str len index i} { - set si1 $i - set si2 $i - set c [string index $str $i] - - if {$c eq "\{" && $::Nagelfar(allowExpand)} { - if {[string range $str $i [expr {$i + 2}]] eq "{*}"} { - set ni [expr {$i + 3}] - set nc [string index $str $ni] - if {![string is space $nc]} { - # Non-space detected, it is expansion - set c $nc - set i $ni - set si2 $i - } else { - errorMsg W "Standalone {*} can be confusing. I recommend \"*\"." $i - } - } - } - - if {[string equal $c "\{"]} { - set closeChar \} - set charType brace - } elseif {[string equal $c "\""]} { - set closeChar \" - set charType quote - } else { - set closeChar "" - } - - if {![string equal $closeChar ""]} { - for {} {$i < $len} {incr i} { - # Search for closeChar - set i [string first $closeChar $str $i] - if {$i == -1} { - # This should never happen since no incomplete lines should - # reach this function. - decho "Internal error: Did not find close char in scanWord.\ - Line [calcLineNo $index]." - return $len - } - set word [string range $str $si2 $i] - if {[info complete $word]} { - # Check for following whitespace - set j [expr {$i + 1}] - set nextchar [string index $str $j] - if {$j == $len || [string is space $nextchar]} { - return $i - } - errorMsg E "Extra chars after closing $charType." \ - [expr {$index + $i}] - contMsg "Opening $charType of above was on line %L." \ - [expr {$index + $si2}] - # Extra info for this particular case - if {$charType eq "brace" && $nextchar eq "\{"} { - contMsg "It might be a missing space between \} and \{" - } - # Switch over to scanning for whitespace - incr i - break - } - } - } - - for {} {$i < $len} {incr i} { - # Search for unescaped whitespace - if {[regexp -start $i -indices {(^|[^\\])(\\\\)*\s} $str match]} { - set i [lindex $match 1] - } else { - set i $len - } - if {[info complete [string range $str $si2 $i]]} { - return [expr {$i - 1}] - } - } - - # Theoretically, no incomplete string should come to this function, - # but some precaution is never bad. - if {![info complete [string range $str $si2 end]]} { - decho "Internal error in scanWord: String not complete.\ - Line [calcLineNo [expr {$index + $si1}]]." - decho $str - return -code break - } - return [expr {$i - 1}] -} - -# Split a statement into words. -# Returns a list of the words, and puts a list with the indices -# for each word in indicesName. -proc splitStatement {statement index indicesName} { - upvar $indicesName indices - set indices {} - - set len [string length $statement] - if {$len == 0} { - return {} - } - set words {} - set i 0 - # There should not be any leading whitespace in the string that - # reaches this function. Check just in case. - set i [skipWS $statement $len $i] - if {$i != 0 && $i < $len} { - decho "Internal error:" - decho " Whitespace in splitStatement. [calcLineNo $index]" - } - # Comments should be descarded earlier - if {[string equal [string index $statement $i] "#"]} { - decho "Internal error:" - decho " A comment slipped through to splitStatement. [calcLineNo $index]" - return {} - } - while {$i < $len} { - set si $i - lappend indices [expr {$i + $index}] - set i [scanWord $statement $len $index $i] - lappend words [string range $statement $si $i] - incr i - set i [skipWS $statement $len $i] - } - return $words -} - -# FIXA Options may be non constant. - -# Look for options in a command's arguments. -# Check them against the list in the option database, if any. -# Returns a syntax string corresponding to the number of arguments "used". -# If 'pair' is set, all options should take a value. -proc checkOptions {cmd argv wordstatus indices {startI 0} {max 0} {pair 0}} { - global option - ##nagelfar cover variable max - - # Special case: the first option is "--" - if {[lindex $argv $startI] == "--"} { - # Allowed? - set ix [lsearch -exact $option($cmd) --] - if {$ix >= 0} { - return [list x] - } - } - - # How many is the limit imposed by the number of arguments? - set maxa [expr {[llength $argv] - $startI}] - - # Pairs swallow an even number of args. - if {$pair && ($maxa % 2) == 1} { - # If the odd one is "--", it may continue - if {[lindex $argv [expr {$startI + $maxa - 1}]] == "--" && \ - [lsearch -exact $option($cmd) --] >= 0} { - # Nothing - } else { - incr maxa -1 - } - } - - if {$max == 0 || $maxa < $max} { - set max $maxa - } - if {$maxa == 0} { - return {} - } - set check [info exists option($cmd)] - if {!$check && $::Nagelfar(dbpicky)} { - errorMsg W "DB: Missing options for command \"$cmd\"" 0 - } - set i 0 - set used 0 - set skip 0 - set skipSyn x - set replaceSyn {} - # Since in most cases startI is 0, I believe foreach is faster. - foreach arg $argv ws $wordstatus index $indices { - if {$i < $startI} { - incr i - continue - } - if {$skip} { - set skip 0 - lappend replaceSyn $skipSyn - set skipSyn x - incr used - continue - } - if {$max != 0 && $used >= $max} { - break - } - if {[string match "-*" $arg]} { - incr used - lappend replaceSyn x - set skip $pair - if {($ws & 1) && $check} { # Constant - set ix [lsearch -exact $option($cmd) $arg] - if {$ix == -1} { - # Check ambiguity. - if {![regexp {[][?*]} $arg]} { - # Only try globbing if $arg is free from glob chars. - set match [lsearch -all -inline -glob $option($cmd) $arg*] - } else { - set match {} - } - if {[llength $match] == 0} { - errorMsg E "Bad option $arg to \"$cmd\"" $index - set item "" - } elseif {[llength $match] > 1} { - errorMsg E "Ambigous option for \"$cmd\",\ - $arg -> [join $match /]" $index - set item "" - } else { - errorMsg W "Shortened option for \"$cmd\",\ - $arg -> [lindex $match 0]" $index - - set item "$cmd [lindex $match 0]" - } - } else { - set item "$cmd [lindex $option($cmd) $ix]" - } - if {$item ne ""} { - if {[info exists option($item)]} { - set skip 1 - if {[regexp {^[lnvc]$} $option($item)]} { - set skipSyn $option($item) - } - } - } - } - if {[string equal $arg "--"]} { - set skip 0 - break - } - } else { # If not -* - break - } - } - if {$skip} { - errorMsg E "Missing value for last option." $index - } - #decho "options to $cmd : $replaceSyn" - return $replaceSyn -} - -# Make a list of a string. This is easy, just treat it as a list. -# But we must keep track of indices, so our own parsing is needed too. -proc splitList {str index iName} { - upvar $iName indices - - # Make a copy to perform list operations on - set lstr [string range $str 0 end] - - set indices {} - if {[catch {set n [llength $lstr]}]} { - errorMsg E "Bad list" $index - return {} - } - # Parse the string to get indices for each element - set escape 0 - set level 0 - set len [string length $str] - set state whsp - - for {set i 0} {$i < $len} {incr i} { - set c [string index $str $i] - switch -- $state { - whsp { # Whitespace - if {[string is space $c]} continue - # End of whitespace, i.e. a new element - if {[string equal $c "\{"]} { - set level 1 - set state brace - lappend indices [expr {$index + $i + 1}] - } elseif {[string equal $c "\""]} { - set state quote - lappend indices [expr {$index + $i + 1}] - } else { - if {[string equal $c "\\"]} { - set escape 1 - } - set state word - lappend indices [expr {$index + $i}] - } - } - word { - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } else { - if {!$escape} { - if {[string is space $c]} { - set state whsp - continue - } - } else { - set escape 0 - } - } - } - quote { - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } else { - if {!$escape} { - if {[string equal $c "\""]} { - set state whsp - continue - } - } else { - set escape 0 - } - } - } - brace { - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } else { - if {!$escape} { - if {[string equal $c "\{"]} { - incr level - } elseif {[string equal $c "\}"]} { - incr level -1 - if {$level <= 0} { - set state whsp - } - } - } else { - set escape 0 - } - } - } - } - } - - if {[llength $indices] != $n} { - # This should never happen. - decho "Internal error: Length mismatch in splitList.\ - Line [calcLineNo $index]." - decho "nindices: [llength $indices] nwords: $n" -# decho :$str: - foreach l $lstr ix $indices { - decho :$ix:[string range $l 0 10]: - } - } - return $lstr -} - -# Parse a variable name, check for existance -# This is called when a $ is encountered -# "i" points to the first char after $ -# Returns the type of the variable -proc parseVar {str len index iName knownVarsName} { - upvar $iName i $knownVarsName knownVars - set si $i - set c [string index $str $si] - - if {[string equal $c "\{"]} { - # A variable ref starting with a brace always ends with next brace, - # no exceptions that I know of - incr si - set ei [string first "\}" $str $si] - if {$ei == -1} { - # This should not happen. - errorMsg E "Could not find closing brace in variable reference." \ - $index - } - set i $ei - incr ei -1 - set var [string range $str $si $ei] - set vararr 0 - # check for an array - if {[string equal [string index $str $ei] ")"]} { - set pi [string first "(" $str $si] - if {$pi != -1 && $pi < $ei} { - incr pi -1 - set var [string range $str $si $pi] - incr pi 2 - incr ei -1 - set varindex [string range $str $pi $ei] - set vararr 1 - set varindexconst 1 - } - } - } else { - for {set ei $si} {$ei < $len} {incr ei} { - set c [string index $str $ei] - if {[string is wordchar $c]} continue - # :: is ok. - if {[string equal $c ":"]} { - set c [string index $str [expr {$ei + 1}]] - if {[string equal $c ":"]} { - incr ei - continue - } - } - break - } - if {[string equal [string index $str $ei] "("]} { - # Locate the end of the array index - set pi $ei - set apa [expr {$si - 1}] - while {[set ei [string first ")" $str $ei]] != -1} { - if {[info complete [string range $str $apa $ei]]} { - break - } - incr ei - } - if {$ei == -1} { - # This should not happen. - errorMsg E "Could not find closing parenthesis in variable\ - reference." $index - return - } - set i $ei - incr pi -1 - set var [string range $str $si $pi] - incr pi 2 - incr ei -1 - set varindex [string range $str $pi $ei] - set vararr 1 - set varindexconst [parseSubst $varindex \ - [expr {$index + $pi}] type knownVars] - } else { - incr ei -1 - set i $ei - set var [string range $str $si $ei] - set vararr 0 - } - } - - # By now: - # var is the variable name - # vararr is 1 if it is an array - # varindex is the array index - # varindexconst is 1 if the array index is a constant - - if {$var == ""} { - return "" - } - - if {[string match ::* $var]} { - # Skip qualified names until we handle namespace better. FIXA - # Handle types for constant names - if {!$vararr} { - set full $var - } elseif {$varindexconst} { - set full ${var}($varindex) - } else { - set full "" - } - if {$full ne "" && [info exists knownVars(type,$full)]} { - return $knownVars(type,$full) - } - return "" - } - # FIXA: Use markVariable - if {![info exists knownVars(known,$var)] && !$::Prefs(noVar) && ![regexp {[\w]*::[\w]+} $var]} { - if {[string match "*::*" $var]} { - set tail [namespace tail $var] - set ns [namespace qualifiers $var] - #decho "'$var' '$ns' '$tail'" - #parray knownVars *$tail - if {![info exists knownVars(known,$tail)] || \ - ![info exists knownVars(namespace,$tail)] || \ - ($knownVars(namespace,$tail) ne $ns && \ - $knownVars(namespace,$tail) ne "::$ns")} { - errorMsg E "Unknown variable \"$var\"" $index - } - } else { - errorMsg E "Unknown variable \"$var\"" $index - } - } - if {![info exists knownVars(set,$var)]} { - set knownVars(read,$var) 1 - # Why was this here?? FIXA - #if {[info exists knownVars(local,$var)]} { - # errorMsg E "Unknown variable \"$var\"" $index - #} - } - if {$vararr && [info exists knownVars(type,$var\($varindex\))]} { - return [set knownVars(type,$var\($varindex\))] - } - if {[info exists knownVars(type,$var)]} { - return $knownVars(type,$var) - } - return "" - # Make use of markVariable. FIXA - # If it's a constant array index, maybe it should be checked? FIXA -} - -# Check for substitutions in a word -# Check any variables referenced, and parse any commands within brackets. -# Returns 1 if the string is constant, i.e. no substitutions -# Returns 0 if any substitutions are present -proc parseSubst {str index typeName knownVarsName} { - upvar $typeName type $knownVarsName knownVars - - set type "" - - # First do a quick check for $ or [ - # If the word ends in "]" and there is no "[" it is considered - # suspicious and we continue checking. - if {[string first \$ $str] == -1 && [string first \[ $str] == -1 && \ - [string index $str end] ne "\]" && \ - [string index $str end] ne "\""} { - return 1 - } - - set result 1 - set len [string length $str] - set escape 0 - set notype 0 - set types {} - for {set i 0} {$i < $len} {incr i} { - set c [string index $str $i] - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - set notype 1 - } elseif {!$escape} { - if {[string equal $c "\$"]} { - incr i - lappend types [parseVar $str $len $index i knownVars] - set result 0 - } elseif {[string equal $c "\["]} { - set si $i - for {} {$i < $len} {incr i} { - # FIXA: error => complete - if {[info complete [string range $str $si $i]]} { - break - } - } - if {$i == $len} { - decho "Internal error: Did not find close bracket in parseSubst.\ - Line [calcLineNo $index]" - } - incr si - incr i -1 - lappend types [parseBody [string range $str $si $i] \ - [expr {$index + $si}] knownVars 1] - incr i - set result 0 - } else { - set notype 1 - if {[string equal $c "\]"] && $i == ($len - 1)} { - # Note unescaped bracket at end of word since it's - # likely to mean it should not be there. - errorMsg W "Unescaped end bracket" [expr {$index + $i}] - } elseif {[string equal $c "\""] && $i == ($len - 1)} { - # Note unescaped quote at end of word since it's - # likely to mean it should not be there. - errorMsg W "Unescaped quote" [expr {$index + $i}] - } - } - } else { - set escape 0 - set notype 1 - } - } - if {!$notype && [llength $types] == 1} { - set type [lindex $types 0] - } - return $result -} - -# Parse an expression -proc parseExpr {str index knownVarsName} { - upvar $knownVarsName knownVars - - # First do a quick check for $ or [ - if {[string first "\$" $str] == -1 && [string first "\[" $str] == -1} { - set exp $str - } else { - # This is similar to parseSubst, just that it also check for braces - set exp "" - set result 1 - set len [string length $str] - set escape 0 - set brace 0 - for {set i 0} {$i < $len} {incr i} { - set c [string index $str $i] - if {[string equal $c "\\"]} { - set escape [expr {!$escape}] - } elseif {!$escape} { - if {[string equal $c "\{"]} { - incr brace - } elseif {[string equal $c "\}"]} { - if {$brace > 0} { - incr brace -1 - } - } elseif {$brace == 0} { - if {[string equal $c "\$"]} { - incr i - parseVar $str $len $index i knownVars - append exp {${dummy}} - continue - } elseif {[string equal $c "\["]} { - set si $i - for {} {$i < $len} {incr i} { - if {[info complete [string range $str $si $i]]} { - break - } - } - if {$i == $len} { - errorMsg E "Missing close bracket at end of expression" $index - } - incr si - incr i -1 - # Warn if the called command is expr - set body [string range $str $si $i] - if {[string match "expr*" $body]} { - errorMsg W "Expr called in expression" \ - [expr {$index + $si}] - } - parseBody $body [expr {$index + $si}] knownVars 1 - incr i - append exp {${dummy}} - continue - } - } - } else { - set escape 0 - } - append exp $c - } - } - - # The above have replaced any variable substitution or command - # substitution in the expression by "$dummy" - set dummy 1 - - # This uses [expr] to do the checking which means that the checking - # can't recognise anything that differs from the Tcl version Nagelfar - # is run with. For example, the new operators in 8.4 "eq" and "ne" - # will be accepted even if the database was generated using an older - # Tcl version. A small problem and hard to fix, so I'm ignoring it. - - if {[catch [list expr $exp] msg]} { - regsub {syntax error in expression.*:\s+} $msg {} msg - if {[string match "*divide by zero*" $msg]} return - errorMsg E "Bad expression: $msg" $index - } -} - -# This is to detect bad comments in constant lists. -# This will cause messages if there are comments in blocks -# that are not recognised as code. -proc checkForComment {word index} { - # Check for "#" - set si 0 - while {[set si [string first \# $word $si]] >= 0} { - # Is it first in a line? - if {[string index $word [expr {$si - 1}]] eq "\n"} { - errorMsg W "Suspicious \# char. Possibly a bad comment." \ - [expr {$index + $si}] - break - } - incr si - } -} - -# List version of checkForComment -proc checkForCommentL {words wordstatus indices} { - foreach word $words ws $wordstatus i $indices { - if {$ws & 2} { # Braced - checkForComment $word $i - } - } -} - -# A "macro" for checkCommand to print common error message -# It should not be called from anywhere else. -proc WA {{debug {}}} { - upvar "cmd" cmd "index" index "argc" argc "argv" argv "indices" indices - errorMsg E "Wrong number of arguments ($argc) to \"$cmd\"$debug" $index - - set t 1 - set line [calcLineNo $index] - foreach ix $indices { - set aline [calcLineNo $ix] - if {$aline != $line} { - contMsg "Argument $t at line $aline" - } - incr t - } -} - -proc SplitToken {token tokName tokCountName modName} { - upvar 1 $tokName tok $tokCountName tokCount $modName mod - set mod "" - set tokCount "" - set tok _baad_ - # Type in parenthesis - if {[regexp {^(\w+)\(.*\)$} $token -> tok]} return - # Normal format - if {[regexp {^(\w+?)(\d*)(\W.*)?$} $token -> tok tokCount mod]} return - #echo "Unsupported token $token in syntax for $cmd" - return -} - -# Check a command that have a syntax defined in the database -# 'firsti' says at which index in argv et.al. the arguments begin. -# Returns the return type of the command -proc checkCommand {cmd index argv wordstatus wordtype indices {firsti 0}} { - upvar "constantsDontCheck" constantsDontCheck "knownVars" knownVars - - set argc [llength $argv] - set syn $::syntax($cmd) - set type "" - if {[info exists ::return($cmd)]} { - set type $::return($cmd) - #puts T:$cmd:$type - } -#miffo puts "Checking $cmd ([lindex $argv]) against syntax $syn" - - # Check if the syntax definition has multiple entries - if {[string index [lindex $syn 0] end] == ":"} { - set na [expr {$argc - $firsti}] - set newsyn {} - set state search - foreach tok $syn { - if {$state == "search"} { - if {$tok == ":" || $tok == "${na}:"} { - set state copy - } - } elseif {$state == "copy"} { - if {[string index $tok end] == ":"} { - break - } - lappend newsyn $tok - } - } - if {[llength $newsyn] == 0} { - echo "Can't parse syntax definition for \"$cmd\": \"$syn\"" - return $type - } - set syn $newsyn - } - - # An integer token directly specifies number of arguments - if {[string is integer -strict $syn]} { - if {($argc - $firsti) != $syn} { - WA - } - checkForCommentL $argv $wordstatus $indices - return $type - } elseif {[string equal [lindex $syn 0] "r"]} { - # A range of number of arguments - if {($argc - $firsti) < [lindex $syn 1]} { - WA - } elseif {[llength $syn] >= 3 && ($argc - $firsti) > [lindex $syn 2]} { - WA - } - checkForCommentL $argv $wordstatus $indices - return $type - } - - # Calculate the minimum number of arguments needed by non-optional - # tokens. If this is the same number as the actual arguments, we - # know that no optional tokens may consume anything. - # This prevents e.g. options checking on arguments that cannot be - # options due to their placement. - - if {![info exists ::cacheMinArgs($syn)]} { - set minargs 0 - set i 0 - set last [llength $syn] - foreach token $syn { - incr i - if {[string length $token] <= 1} { - incr minargs - } else { - set last $i - } - } - set ::cacheEndArgs($syn) [expr {[llength $syn] - $last}] - set ::cacheMinArgs($syn) $minargs - } - set anyOptional [expr {($argc - $firsti) > $::cacheMinArgs($syn)}] - set lastOptional [expr {$argc - $::cacheEndArgs($syn)}] - - # Treat syn as a stack. That way a token can replace itself without - # increasing i and thus hand over checking to another token. - - set i $firsti - while {[llength $syn] > 0} { - # Pop first token from stack - set token [lindex $syn 0] - set syn [lrange $syn 1 end] - - SplitToken $token tok tokCount mod - # Basic checks for modifiers - switch -- $mod { - "" { # No modifier, and out of arguments, is an error - if {$i >= $argc} { - set i -1 - break - } - } - "*" - "." { # No more arguments is ok. - if {$i >= $argc} { - set i $argc - break - } - } - } - # Is it optional and there can't be any optional? - if {$mod ne "" && !$anyOptional} { - continue - } - switch -- $tok { - x - xComm { - # x* matches anything up to the end. - if {[string equal $mod "*"]} { - checkForCommentL [lrange $argv $i end] \ - [lrange $wordstatus $i end] \ - [lrange $indices $i end] - set i $argc - break - } - if {![string equal $mod "?"] || $i < $argc} { - # Check braced for comments - if {([lindex $wordstatus $i] & 2) && $tok != "xComm"} { - checkForComment [lindex $argv $i] [lindex $indices $i] - } - incr i - } - } - di { # Define inheritance - if {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - # Superclass - set superclass [lindex $argv $i] - set superObjCmd _obj,[namespace tail $superclass] - set objcmd [currentObject] - set copymap [list $objcmd $superObjCmd] - #puts "DI: '$superObjCmd' to '$objcmd' map '$copymap'" - set ::superclass($objcmd) [list $superclass $superObjCmd] - CopyCmdInDatabase $superObjCmd $objcmd $copymap - incr i - } - dc - do { # Define with copy / define object - # dc defines a command that is a copy. Typically used for an - # instance which is a copy of the class's object command. - # do defines both a command to instantiate objects and a - # corresponding object command - #decho "$tok $tokCount $mod" - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - errorMsg W "Non constant definition \"[lindex $argv $i]\".\ - Skipping." [lindex $indices $i] - } else { - set copyFrom [string range $mod 1 end] - set name [lindex $argv $i] - #decho "Defining '$name', from '$copyFrom'" - if {$name eq "%AUTO%"} { - # No defition should be made - } else { - if {[string match "::*" $name]} { - set name [string range $name 2 end] - } - if {$tok eq "do"} { # Define object - set objname _obj,[namespace tail $name] - #echo "Defining object $name" - setCurrentObject $objname $name - - # Special case when defining an object in tcloo - # Add an alias to make "my" an object - if {[string match oo::* $cmd]} { - set ::knownAliases(${cmd}::${name}::my) $objname - } - - if {![info exists ::syntax($objname)]} { - set ::syntax($objname) "s x*" - } - set copymap [list _obj,$copyFrom $objname] - if {$copyFrom ne ""} { - CopyCmdInDatabase $copyFrom $name $copymap - CopyCmdInDatabase $copyFrom $objname $copymap - } else { - lappend ::knownCommands $objname - } - } else { - if {$copyFrom ne ""} { - CopyCmdInDatabase $copyFrom $name - } else { - lappend ::knownCommands $name - } - } - if {$tok eq "do" && ![info exists ::syntax($name)]} { - set ::syntax($name) "s x*" - } - } - } - incr i - } - dk - - dp - - dm - - dmp { # Define proc and/or method - if {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {$tok eq "dk"} { # Two args - if {$i > ($argc - 2)} { - break - } - set iplus2 [expr {$i + 1}] - } else { - if {$i > ($argc - 3)} { - break - } - set iplus2 [expr {$i + 2}] - } - # Skip the proc if any part of it is not constant - # FIXA: Maybe accept substitutions as part of namespace? - foreach ws [lrange $wordstatus $i $iplus2] { - if {($ws & 1) == 0} { - errorMsg W "Non constant argument to proc \"[lindex $argv $i]\".\ - Skipping." $index - return - } - } - if {$::Nagelfar(gui)} {progressUpdate [calcLineNo $index]} - # Do not check proc/method name against variables - lappend constantsDontCheck $i - set isProc [expr {$tok eq "dp" || $tok eq "dmp"}] - set isMethod [expr {$tok eq "dm" || $tok eq "dmp"}] - if {$tok eq "dk"} { # Two args - set procArgV [lrange $argv $i $iplus2] - set indicesV [lrange $indices $i $iplus2] - set constructorCmd "[currentObjectOrig] new" - # Suppress redefinition warnings - unset -nocomplain ::syntax($constructorCmd) - set procArgV [linsert $procArgV 0 ::$constructorCmd] - set indicesV [linsert $indicesV 0 [lindex $indices $i]] - #puts "DK: $procArgV" - incr i 2 - set synConstr [parseProc $procArgV $indicesV 0 0 $cmd] - set ::syntax($constructorCmd) $synConstr - } else { - set procArgV [lrange $argv $i $iplus2] - set indicesV [lrange $indices $i $iplus2] - incr i 3 - parseProc $procArgV $indicesV \ - $isProc $isMethod $cmd - } - } - E - - e { # An expression - if {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - if {$tok == "E"} { - errorMsg W "No braces around expression in\ - $cmd statement." [lindex $indices $i] - } elseif {$::Prefs(warnBraceExpr)} { - # Allow pure command substitution if warnBraceExpr == 1 - if {$::Prefs(warnBraceExpr) == 2 || \ - [string index [lindex $argv $i] 0] != "\[" || \ - [string index [lindex $argv $i] end] != "\]" } { - errorMsg W "No braces around expression in\ - $cmd statement." [lindex $indices $i] - } - } - } elseif {[lindex $wordstatus $i] & 2} { # Braced - # FIXA: This is not a good check in e.g. a catch. - #checkForComment [lindex $argv $i] [lindex $indices $i] - } - parseExpr [lindex $argv $i] [lindex $indices $i] knownVars - incr i - } - c - cg - cl - cn { # A code block - if {[string equal $mod "?"]} { - if {$i >= $argc} { - set i $argc - break - } - } elseif {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - # No braces around non constant code. - # Special case: [list ...] - set arg [lindex $argv $i] - if {[string match {\[list*} $arg]} { - # FIXA: Check the code - #echo "(List code)" - } else { - if {$tok eq "c"} { - errorMsg W "No braces around code in $cmd\ - statement." [lindex $indices $i] - } - } - } else { - set body [lindex $argv $i] - if {$tokCount ne ""} { - append body [string repeat " x" $tokCount] - } - # Special fix to support bind's "+". - if {$tok eq "cg" && [string match "+*" $body] && \ - $cmd eq "bind"} { - set body [string range $body 1 end] - } - # A virtual namespace should not be instrumented. - if {$tok ne "cn"} { - set ::instrumenting([lindex $indices $i]) 1 - } - if {$tok eq "cg"} { - # Check in global context - pushNamespace {} - array unset dummyVars - array set dummyVars {} - parseBody $body [lindex $indices $i] dummyVars - popNamespace - } elseif {$tok eq "cn"} { - # Check in virtual namespace context - set vNs ${cmd}::[join [lrange $argv $firsti [expr {$i-1}]] ::] - #puts "cmd '$cmd' vNs '$vNs'" - pushNamespace $vNs - array unset dummyVars - array set dummyVars {} - parseBody $body [lindex $indices $i] dummyVars - popNamespace - } elseif {$tok eq "cl"} { - #puts "Checking '$body' in local context" - # Check in local context - array unset dummyVars - array set dummyVars {} - addImplicitVariables $cmd [lindex $indices $i] dummyVars - parseBody $body [lindex $indices $i] dummyVars - } else { - parseBody $body [lindex $indices $i] knownVars - } - } - incr i - } - cv { # A code block with a variable definition and local context - if {[string equal $mod "?"]} { - if {$i >= $argc} { - set i $argc - break - } - } elseif {![string equal $mod ""]} { - echo "Modifier \"$mod\" is not supported for \"$tok\" in\ - syntax for $cmd." - } - if {$i > ($argc - 2)} { - break - } - array unset dummyVars - array set dummyVars {} - if {([lindex $wordstatus $i] & 1) != 0} { - # Constant var list, parse it to get all vars - parseArgs [lindex $argv $i] [lindex $indices $i] "" \ - dummyVars - } else { - # Non constant var list, what to do? FIXA - } - addImplicitVariables $cmd [lindex $indices $i] dummyVars - # Handle Code part - incr i - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - # No braces around non constant code. - # Special case: [list ...] - set arg [lindex $argv $i] - if {[string match {\[list*} $arg]} { - # FIXA: Check the code - #echo "(List code)" - } else { - errorMsg W "No braces around code in $cmd\ - statement." [lindex $indices $i] - } - } else { - set body [lindex $argv $i] - if {$tokCount ne ""} { - append body [string repeat " x" $tokCount] - } - set ::instrumenting([lindex $indices $i]) 1 - - # Check in local context - #puts "Cmd '$cmd' NS '[currentNamespace]'" - parseBody $body [lindex $indices $i] dummyVars - } - incr i - } - s { # A subcommand - if {![string equal $mod ""] && ![string equal $mod "."]} { - echo "Modifier \"$mod\" is not supported for \"s\" in\ - syntax for $cmd." - } - lappend constantsDontCheck $i - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant - errorMsg W "Non static subcommand to \"$cmd\"" \ - [lindex $indices $i] - } else { - set arg [lindex $argv $i] - if {[info exists ::subCmd($cmd)]} { - if {[lsearch $::subCmd($cmd) $arg] == -1} { - set ix [lsearch -glob $::subCmd($cmd) $arg*] - if {$ix == -1} { - errorMsg E "Unknown subcommand \"$arg\" to \"$cmd\""\ - [lindex $indices $i] - } else { - # Check ambiguity. - set match [lsearch -all -inline -glob \ - $::subCmd($cmd) $arg*] - if {[llength $match] > 1} { - errorMsg E "Ambigous subcommand for\ - \"$cmd\", $arg ->\ - [join $match /]" \ - [lindex $indices $i] - } elseif {$::Prefs(warnShortSub)} { - # Report shortened subcmd? - errorMsg W "Shortened subcommand for\ - \"$cmd\", $arg ->\ - [lindex $match 0]" \ - [lindex $indices $i] - } - set arg [lindex $::subCmd($cmd) $ix] - } - } - } elseif {$::Nagelfar(dbpicky)} { - errorMsg W "DB: Missing subcommands for \"$cmd\"" 0 - } - # Are there any syntax definition for this subcommand? - set sub "$cmd $arg" - if {[info exists ::syntax($sub)]} { - set stype [checkCommand $sub $index $argv $wordstatus \ - $wordtype \ - $indices [expr {$i + 1}]] - if {$stype != ""} { - set type $stype - } - set i $argc - break - } elseif {$::Nagelfar(dbpicky)} { - errorMsg W "DB: Missing syntax for subcommand $sub" 0 - } - } - incr i - } - l - - v - - n { # A call by name - if {[string equal $mod "?"]} { - if {$i >= $argc} { - set i $argc - break - } - } - set ei [expr {$i + 1}] - if {[string equal $mod "*"]} { - set ei $lastOptional - } - while {$i < $ei} { - if {[string equal $tok "v"]} { - # Check the variable - if {[string match ::* [lindex $argv $i]]} { - # Skip qualified names until we handle - # namespace better. FIXA - } elseif {[markVariable [lindex $argv $i] \ - [lindex $wordstatus $i] [lindex $wordtype $i] \ - 2 [lindex $indices $i]\ - knownVars vtype]} { - if {!$::Prefs(noVar)} { - errorMsg E "Unknown variable \"[lindex $argv $i]\""\ - [lindex $indices $i] - } - } - } elseif {[string equal $tok "n"]} { - markVariable [lindex $argv $i] \ - [lindex $wordstatus $i] [lindex $wordtype $i] 1 \ - [lindex $indices $i] knownVars "" - } else { - markVariable [lindex $argv $i] \ - [lindex $wordstatus $i] [lindex $wordtype $i] 0 \ - [lindex $indices $i] knownVars "" - } - - lappend constantsDontCheck $i - incr i - } - } - o { - set max [expr {$lastOptional - $i}] - if {![string equal $mod "*"]} { - set max 1 - } - set oSyn [checkOptions $cmd $argv $wordstatus $indices $i $max] - set used [llength $oSyn] - if {$used == 0 && ($mod == "" || $mod == ".")} { - errorMsg E "Expected an option as argument $i to \"$cmd\"" \ - [lindex $indices $i] - return $type - } - - if {[lsearch -not $oSyn "x"] >= 0} { - # Feed the syntax back into the check loop - set syn [concat $oSyn $syn] - } else { - incr i $used - } - } - p { - set max [expr {$lastOptional - $i}] - if {![string equal $mod "*"]} { - set max 2 - } - set oSyn [checkOptions $cmd $argv $wordstatus $indices $i \ - $max 1] - set used [llength $oSyn] - if {$used == 0 && ($mod == "" || $mod == ".")} { - errorMsg E "Expected an option as argument $i to \"$cmd\"" \ - [lindex $indices $i] - return $type - } - if {[lsearch -not $oSyn "x"] >= 0} { - # Feed the syntax back into the check loop - set syn [concat $oSyn $syn] - } else { - incr i $used - } - } - default { - echo "Unsupported token \"$token\" in syntax for \"$cmd\"" - } - } - } - # Have we used up all arguments? - if {$i != $argc && !$::Nagelfar(firstpass)} { - WA - } - return $type -} - -# Central function to handle known variable names. -# If check is 2, check if it is known, return 1 if unknown -# If check is 1, mark the variable as known and set -# If check is 0, mark the variable as known -proc markVariable {var ws wordtype check index knownVarsName typeName} { - upvar $knownVarsName knownVars - if {$typeName ne ""} { - upvar $typeName type - } else { - set type "" - } - - set varBase $var - set varArray 0 - set varIndex "" - set varBaseWs $ws - set varIndexWs $ws - - # is it an array? - set i [string first "(" $var] - if {$i != -1} { - incr i -1 - set varBase [string range $var 0 $i] - incr i 2 - set varIndex [string range $var $i end-1] - # Check if the base is free from substitutions - if {($varBaseWs & 1) == 0 && [regexp {^(::)?(\w+(::)?)+$} $varBase]} { - set varBaseWs 1 - } - set varArray 1 - } - - # If the base contains substitutions it can't be checked. - if {($varBaseWs & 1) == 0} { - # Experimental foreach check FIXA - if {[string match {$*} $var]} { - set name [string range $var 1 end] - if {[info exists ::foreachVar($name)]} { - # Mark them as known instead - foreach name $::foreachVar($name) { - markVariable $name 1 "" $check $index knownVars "" - } - #return 1 - } - } - if {$wordtype ne "varName"} { - errorMsg W "Suspicious variable name \"$var\"" $index - } - return 0 - } - - if {$check == 2} { - set type "" - if {![info exists knownVars(known,$varBase)]} { - return 1 - } - if {$varArray && ($varIndexWs & 1) && \ - [info exists knownVars(local,$varBase)]} { - if {![info exists knownVars(known,$var)]} { - return 1 - } - } - if {[info exists knownVars(type,$var)]} { - set type $knownVars(type,$var) - } else { - set type $knownVars(type,$varBase) - } - return 0 - } else { - if {![info exists knownVars(known,$varBase)]} { - if {[currentProc] ne ""} { - set knownVars(known,$varBase) 1 - set knownVars(local,$varBase) 1 - set knownVars(type,$varBase) $type - } else { - set knownVars(known,$varBase) 1 - set knownVars(namespace,$varBase) [currentNamespace] - set knownVars(type,$varBase) $type - } - } - if {1 || $type ne ""} { - # Warn if changed?? FIXA - set knownVars(type,$varBase) $type - } - if {$check == 1} { - set knownVars(set,$varBase) 1 - } - # If the array index is constant, mark the whole name - if {$varArray && ($varIndexWs & 1)} { - if {![info exists knownVars(known,$var)]} { - set knownVars(known,$var) 1 - set knownVars(type,$var) $type - if {[info exists knownVars(local,$varBase)]} { - set knownVars(local,$var) 1 - } - } - if {$check == 1} { - set knownVars(set,$var) 1 - } - } - } -} - -# This is called when an unknown command is encountered. -# If not encountered it is stored to be checked last. -# Returns a list with a partial command where the first element -# is the resolved name with qualifier. -proc lookForCommand {cmd ns index} { - # Get both the namespace and global possibility - set cmds {} - if {[string match "::*" $cmd]} { - set cmds [list [string range $cmd 2 end]] - } elseif {$ns ne "__unknown__" } { - # Look through all levels of namespaces - set nsPrefix $ns - while {$nsPrefix ne ""} { - set cmd1 "${nsPrefix}::$cmd" - if {[string match "::*" $cmd1]} { - set cmd1 [string range $cmd1 2 end] - } - lappend cmds $cmd1 - set nsPrefix [namespace qualifiers $nsPrefix] - } - lappend cmds $cmd - } else { - set cmds [list $cmd] - } - - #puts "MOO cmd '$cmd' ns '$ns' '$cmds'" - foreach cmdCandidate $cmds { - if {[info exists ::knownAliases($cmdCandidate)]} { - return $::knownAliases($cmdCandidate) - } - if {[info exists ::syntax($cmdCandidate)]} { - return [list $cmdCandidate] - } - if {[lsearch $::knownCommands $cmdCandidate] >= 0} { - return [list $cmdCandidate] - } - } - if {[lsearch $::knownCommands $cmd] >= 0} { - return [list $cmd] - } - - if {$index >= 0 && !$::Nagelfar(firstpass)} { - lappend ::unknownCommands [list $cmd $cmds $index] - } - return "" -} - -# Parse one statement and check the syntax of the command -# Returns the return type of the statement -proc parseStatement {statement index knownVarsName} { - upvar $knownVarsName knownVars - set words [splitStatement $statement $index indices] - if {[llength $words] == 0} {return} - - if {$::Nagelfar(firstpass)} { - if {[lindex $words 0] eq "proc"} { - # OK - } elseif {[lindex $words 0] eq "namespace" && \ - [lindex $words 1] eq "eval" && \ - [llength $words] == 4 && \ - ![regexp {[][$\\]} [lindex $words 2]] && \ - ![regexp {^[{"]?\s*["}]?$} [lindex $words 3]]} { - # OK - } elseif {[lindex $words 0] eq "oo::class"} { - # OK - } else { - set cmd [lindex $words 0] - set ns [currentNamespace] - set syn "" - if {$ns eq "" && [info exists ::syntax($cmd)]} { - set syn $::syntax($cmd) - } else { - set rescmd [lookForCommand $cmd $ns $index] - if {[llength $rescmd] > 0 && \ - [info exists ::syntax([lindex $rescmd 0])]} { - set cmd [lindex $rescmd 0] - set syn $::syntax($cmd) - } - } - if {[lsearch -glob $syn d*] >= 0} { - #echo "Firstpass '[lindex $words 0]'" - # OK - } else { - #echo "Firstpass block1 '[lindex $words 0]'" - return "" - } - } - } - - set type "" - set words2 {} - set wordstatus {} - set wordtype {} - set indices2 {} - foreach word $words index $indices { - set ws 0 - set wtype "" - if {[string length $word] > 3 && [string match "{\\*}*" $word]} { - set ws 8 - set word [string range $word 3 end] - } - set char [string index $word 0] - if {[string equal $char "\{"]} { - incr ws 3 ;# Braced & constant - set word [string range $word 1 end-1] - incr index - } else { - if {[string equal $char "\""]} { - set word [string range $word 1 end-1] - incr index - incr ws 4 - } - if {[parseSubst $word $index wtype knownVars]} { - # A constant - incr ws 1 - } - } - if {($ws & 9) == 9} { - # An expanded constant, unlikely but we can just as well handle it - if {[catch {llength $word}]} { - errorMsg E "Expanded word is not a valid list." $index - } else { - foreach apa $word { - lappend words2 $apa - lappend wordstatus 1 - lappend wordtype "" - # For now I don't bother to track correct indices - lappend indices2 $index - } - } - } else { - lappend words2 $word - lappend wordstatus $ws - lappend wordtype $wtype - lappend indices2 $index - } - } - - set cmd [lindex $words2 0] - set index [lindex $indices2 0] - set cmdtype [lindex $wordtype 0] - set cmdws [lindex $wordstatus 0] - - # Expanded command, nothing to check... - if {($cmdws & 8)} { - return - } - - # If the command contains substitutions we can not determine - # which command it is, so we skip it, unless the type is known - # to be an object. - - if {($cmdws & 1) == 0} { - if {[string match "_obj,*" $cmdtype]} { - set cmd $cmdtype - } else { - # Detect missing space after command - if {[regexp {^[\w:]+\{} $cmd]} { - errorMsg W "Suspicious command \"$cmd\"" $index - } - # Detect bracketed command - if {[llength $words2] == 1 && [string index $cmd 0] eq "\["} { - errorMsg W "Suspicious brackets around command" $index - } - return - } - } - - set argv [lrange $words2 1 end] - set wordtype [lrange $wordtype 1 end] - set wordstatus [lrange $wordstatus 1 end] - set indices [lrange $indices2 1 end] - set argc [llength $argv] - - # FIXA: handle {*} better - foreach ws $wordstatus { - if {$ws & 8} { - return - } - } - - # The parsing below can pass information to the constants checker - # This list primarily consists of args that are supposed to be variable - # names without a $ in front. - set noConstantCheck 0 - set constantsDontCheck {} - - # Any command that can't be described in the syntax database - # have their own special check implemented here. - # Any command that can be checked by checkCommand should - # be in the syntax database. - - set thisCmdHasBeenHandled 1 - - switch -glob -- $cmd { - .* { # FIXA, check code in any -command. - # Even widget commands should be checked. - # Maybe in checkOptions ? - return - } - global { - foreach var $argv ws $wordstatus { - if {$ws & 1} { - set knownVars(known,$var) 1 - set knownVars(namespace,$var) "" - set knownVars(type,$var) "" - } else { - errorMsg W "Non constant argument to $cmd: $var" $index - } - } - set noConstantCheck 1 - } - variable { - set currNs [currentNamespace] - # Special case in oo::class create - if {[string match "oo::class create*" $currNs]} { - #echo "Var: in $currNs" - foreach var $argv ws $wordstatus { - lappend ::implicitVar($currNs) $var - } - } else { - set i 0 - foreach {var val} $argv {ws1 ws2} $wordstatus { - set ns [currentNamespace] - if {[regexp {^(.*)::([^:]+)$} $var -> root var]} { - set ns $root - if {[string match "::*" $ns]} { - set ns [string range $ns 2 end] - } - } - if {$ns ne "__unknown__"} { - if {$ws1 & 1} { - set knownVars(namespace,$var) $ns - } - if {($ws1 & 1) || [string is wordchar $var]} { - set knownVars(known,$var) 1 - set knownVars(type,$var) "" - if {$i < $argc - 1} { - set knownVars(set,$var) 1 - } - lappend constantsDontCheck $i - } else { - errorMsg W "Non constant argument to $cmd: $var" \ - $index - } - } - incr i 2 - } - } - } - upvar { - if {$argc < 2} { - WA - return - } - set level [lindex $argv 0] - set oddA [expr {$argc % 2 == 1}] - set hasLevel 0 - if {[lindex $wordstatus 0] & 1} { - # Is it a level ? - if {[regexp {^[\\\#0-9]} $level]} { - if {!$oddA} { - WA - return - } - set hasLevel 1 - } else { - if {$oddA} { - WA - return - } - set level 1 - } - } else { - # Assume it is not a level unless odd number of args. - if {$oddA} { - # Warn here? FIXA - errorMsg W "Non constant level to $cmd: \"$level\"" $index - set hasLevel 1 - set level "" - } else { - set level 1 - } - } - if {$hasLevel} { - set tmp [lrange $argv 1 end] - set tmpWS [lrange $wordstatus 1 end] - set i 2 - } else { - set tmp $argv - set tmpWS $wordstatus - set i 1 - } - - foreach {other var} $tmp {wsO wsV} $tmpWS { - if {($wsV & 1) == 0} { - # The variable name contains substitutions - errorMsg W "Suspicious upvar variable \"$var\"" $index - } else { - set knownVars(known,$var) 1 - set knownVars(type,$var) "" - lappend constantsDontCheck $i - if {$other eq $var} { # Allow "upvar xx xx" construct - lappend constantsDontCheck [expr {$i - 1}] - } - if {($wsO & 1) == 0} { - # Is the other name a simple var subst? - if {[regexp {^\$([\w()]+)$} $other -> other] || \ - [regexp {^\${([^{}]*)}$} $other -> other]} { - if {[info exists knownVars(known,$other)]} { - if {$level == 1} { - set knownVars(upvar,$other) $var - } elseif {$level eq "#0"} { - # FIXA: level #0 for global - set knownVars(upvar,$other) $var - set knownVars(set,$var) 1 ;# FIXA? - } - } - } - } - } - incr i 2 - } - } - set { - # Set gets a different syntax string depending on the - # number of arguments. - if {$argc == 1} { - # Check the variable - if {[string match ::* [lindex $argv 0]]} { - # Skip qualified names until we handle - # namespace better. FIXA - } elseif {[markVariable [lindex $argv 0] \ - [lindex $wordstatus 0] [lindex $wordtype 0] \ - 2 [lindex $indices 0] knownVars wtype]} { - if {!$::Prefs(noVar)} { - errorMsg E "Unknown variable \"[lindex $argv 0]\""\ - [lindex $indices 0] - } - } - } elseif {$argc == 2} { - set wtype [lindex $wordtype 1] - markVariable [lindex $argv 0] \ - [lindex $wordstatus 0] [lindex $wordtype 0] \ - 1 [lindex $indices 0] \ - knownVars wtype - } else { - WA - set wtype "" - } - lappend constantsDontCheck 0 - set type $wtype - } - foreach { - if {$argc < 3 || ($argc % 2) == 0} { - WA - return - } - for {set i 0} {$i < $argc - 1} {incr i 2} { - if {[lindex $wordstatus $i] == 0} { - errorMsg W "Non constant variable list to foreach\ - statement." [lindex $indices $i] - # FIXA, maybe abort here? - } - lappend constantsDontCheck $i - foreach var [lindex $argv $i] { - markVariable $var 1 "" 1 $index knownVars "" - } - } - # FIXA: Experimental foreach check... - # A special case for looping over constant lists - set varsAdded {} - foreach {varList valList} [lrange $argv 0 end-1] \ - {varWS valWS} [lrange $wordstatus 0 end-1] { - if {($varWS & 1) && ($valWS & 1)} { - set fVars {} - foreach fVar $varList { - set ::foreachVar($fVar) {} - lappend fVars apaV($fVar) - lappend varsAdded $fVar - } - foreach $fVars $valList { - foreach fVar $varList { - ##nagelfar variable apaV - lappend ::foreachVar($fVar) $apaV($fVar) - } - } - } - } - - if {([lindex $wordstatus end] & 1) == 0} { - errorMsg W "No braces around body in foreach\ - statement." $index - } - set ::instrumenting([lindex $indices end]) 1 - set type [parseBody [lindex $argv end] [lindex $indices end] \ - knownVars] - # Clean up - foreach fVar $varsAdded { - catch {unset ::foreachVar($fVar)} - } - } - if { - if {$argc < 2} { - WA - return - } - # Build a syntax string that fits this if statement - set state expr - set ifsyntax {} - foreach arg $argv ws $wordstatus index $indices { - switch -- $state { - skip { - # This will behave bad with "if 0 then then"... - lappend ifsyntax xComm - if {![string equal $arg then]} { - set state else - } - continue - } - then { - set state body - if {[string equal $arg then]} { - lappend ifsyntax x - continue - } - } - else { - if {[string equal $arg elseif]} { - set state expr - lappend ifsyntax x - continue - } - set state lastbody - if {[string equal $arg else]} { - lappend ifsyntax x - continue - } - if {$::Prefs(forceElse)} { - errorMsg E "Badly formed if statement" $index - contMsg "Found argument '[trimStr $arg]' where\ - else/elseif was expected." - return - } - } - } - switch -- $state { - expr { - # Handle if 0 { ... } as a comment - if {[string is integer $arg] && $arg == 0} { - lappend ifsyntax x - set state skip - } else { - lappend ifsyntax e - set state then - } - } - lastbody { - lappend ifsyntax c - set state illegal - } - body { - lappend ifsyntax c - set state else - } - illegal { - errorMsg E "Badly formed if statement" $index - contMsg "Found argument '[trimStr $arg]' after\ - supposed last body." - return - } - } - } - # State should be "else" if there was no else clause or - # "illegal" if there was one. - if {$state ne "else" && $state ne "illegal"} { - errorMsg E "Badly formed if statement" $index - contMsg "Missing one body." - return - } elseif {$state eq "else"} { - # Mark the missing else for instrumenting - set ::instrumenting([expr {$index + [string length $arg]}]) 2 - } -# decho "if syntax \"$ifsyntax\"" - set ::syntax(if) $ifsyntax - checkCommand $cmd $index $argv $wordstatus $wordtype $indices - } - switch { - if {$argc < 2} { - WA - return - } - # FIXA: As of 8.5.1, two args are not checked for options, - # does this imply anything - set i 0 - if {$argc > 2} { - set max [expr {$argc - 2}] - set i [llength [checkOptions $cmd $argv $wordstatus $indices\ - 0 $max]] - } - if {[lindex $wordstatus $i] & 1 == 1} { - # First argument to switch is constant, suspiscious - errorMsg W "String argument to switch is constant" \ - [lindex $indices $i] - } - incr i - set left [expr {$argc - $i}] - - if {$left == 1} { - # One block. Split it into a list. - # FIXA. Changing argv messes up the constant check. - - set arg [lindex $argv $i] - set ws [lindex $wordstatus $i] - set ix [lindex $indices $i] - - if {($ws & 1) == 1} { - set swargv [splitList $arg $ix swindices] - if {[llength $swargv] % 2 == 1} { - errorMsg E "Odd number of elements in last argument to\ - switch." $ix - return - } - if {[llength $swargv] == 0} { - errorMsg W "Empty last argument to switch." $ix - return - } - set swwordst {} - foreach word $swargv { - lappend swwordst 1 - } - } else { - set swwordst {} - set swargv {} - set swindices {} - } - } elseif {$left % 2 == 1} { - WA - return - } else { - set swargv [lrange $argv $i end] - set swwordst [lrange $wordstatus $i end] - set swindices [lrange $indices $i end] - } - foreach {pat body} $swargv {ws1 ws2} $swwordst {i1 i2} $swindices { - if {[string equal [string index $pat 0] "#"]} { - errorMsg W "Switch pattern starting with #.\ - This could be a bad comment." $i1 - } - if {[string equal $body -]} { - continue - } - if {($ws2 & 1) == 0} { - errorMsg W "No braces around code in switch\ - statement." $i2 - } - set ::instrumenting($i2) 1 - parseBody $body $i2 knownVars - } - } - expr { # FIXA - # Take care of the standard case of a brace enclosed expr. - if {$argc == 1 && ([lindex $wordstatus 0] & 1)} { - parseExpr [lindex $argv 0] [lindex $indices 0] knownVars - } else { - if {$::Prefs(warnBraceExpr)} { - errorMsg W "Expr without braces" [lindex $indices 0] - } - } - } - eval { # FIXA - set noConstantCheck 1 - } - interp { - if {$argc < 1} { - WA - return - } - # Special handling of interp alias - if {([lindex $wordstatus 0] & 1) && \ - [string equal "alias" [lindex $argv 0]]} { - if {$argc < 3} { - WA - return - } - # This should define a source in the current interpreter - # with a known name. - if {$argc >= 5 && \ - ([lindex $wordstatus 1] & 1) && \ - "" eq [lindex $argv 1] && \ - ([lindex $wordstatus 2] & 1)} { - set newAlias [lindex $argv 2] - set aliasCmd {} - for {set t 4} {$t < $argc} {incr t} { - if {[lindex $wordstatus 1] & 1} { - lappend aliasCmd [lindex $argv $t] - } else { - lappend aliasCmd {} - } - } - set ::knownAliases($newAlias) $aliasCmd - } - } - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - set noConstantCheck 1 - } - package { # FIXA, take care of require - set type [checkCommand $cmd $index $argv $wordstatus $wordtype \ - $indices] - } - namespace { - if {$argc < 1} { - WA - return - } - # Special handling of namespace eval - if {([lindex $wordstatus 0] & 1) && \ - [string match "ev*" [lindex $argv 0]]} { - if {$argc < 3} { - if {!$::Nagelfar(firstpass)} { # Messages in second pass - WA - } - return - } - set arg1const [expr {[lindex $wordstatus 1] & 1}] - set arg2const [expr {[lindex $wordstatus 2] & 1}] - # Look for unknown parts - if {[string is space [lindex $argv 2]]} { - # Empty body, do nothing - } elseif {$arg2const && $argc == 3} { - if {$arg1const} { - set ns [lindex $argv 1] - if {![string match "::*" $ns]} { - set root [currentNamespace] - if {$root ne "__unknown__"} { - set ns ${root}::$ns - } - } - } else { - set ns __unknown__ - } - - pushNamespace $ns - parseBody [lindex $argv 2] [lindex $indices 2] knownVars - popNamespace - } else { - if {!$::Nagelfar(firstpass)} { # Messages in second pass - errorMsg W "Only braced namespace evals are checked." \ - [lindex $indices 0] - } - } - } elseif {([lindex $wordstatus 0] & 1) && \ - [string match "im*" [lindex $argv 0]]} { - # Handle namespace import - if {$argc < 2} { - WA - return - } - set ns [currentNamespace] - if {[lindex $argv 1] eq "-force"} { - set t 2 - } else { - set t 1 - } - for {} {$t < [llength $argv]} {incr t} { - if {([lindex $wordstatus $t] & 1) == 0} { - continue - } - set other [lookForCommand [lindex $argv $t] $ns -1] - set other [lindex $other 0] - set tail [namespace tail $other] - if {$ns eq ""} { - set me $tail - } else { - set me ${ns}::$tail - if {[string match "::*" $me]} { - set me [string range $me 2 end] - } - } - #puts "ME: $me : OTHER: $other" - # Copy the command info - if {[lsearch -exact $::knownCommands $me] < 0} { - lappend ::knownCommands $me - } - if {![info exists ::syntax($me)] && \ - [info exists ::syntax($other)]} { - set ::syntax($me) $::syntax($other) - } - } - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } else { - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } - } - next { - # Figure out the superclass of the caller to be able to check - set currObj [currentObject] - if {[info exists ::superclass($currObj)]} { - foreach {superCmd superObj} $::superclass($currObj) break - set methodName [namespace tail [currentProc]] - #puts "next: super '$superObj' meth '$methodName'" - if {[string match "* new" $methodName]} { - # This is a constructor - set subCmd "$superCmd new" - } else { - set subCmd "$superObj $methodName" - } - if {[info exists ::syntax($subCmd)]} { - #puts "Syntax for '$subCmd' '$::syntax($subCmd)'" - set type [checkCommand $subCmd $index $argv $wordstatus \ - $wordtype $indices] - } - } else { - errorMsg W "No superclass found for 'next'" $index - } - } - tailcall { - if {$argc < 1} { - WA - return - } - set newStatement [join $argv] - set newIndex [lindex $indices 0] - set type [parseStatement $newStatement $newIndex knownVars] - set noConstantCheck 1 - } - uplevel { # FIXA - set noConstantCheck 1 - } - default { - set thisCmdHasBeenHandled 0 - } - } - - # Fallthrough - if {!$thisCmdHasBeenHandled} { - set ns [currentNamespace] - if {$ns eq "" && [info exists ::syntax($cmd)]} { -# decho "Checking '$cmd' in '$ns' res" - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } else { - # Resolve commands in namespace - set rescmd [lookForCommand $cmd $ns $index] - if {$ns ne ""} { - #decho "Checking '$cmd' in '$ns' resolved '$rescmd'" - } - if {[llength $rescmd] > 0 && \ - [info exists ::syntax([lindex $rescmd 0])]} { - set cmd [lindex $rescmd 0] - # If lookForCommand returns a partial command, fill in - # all lists accordingly. - if {[llength $rescmd] > 1} { - set preargv {} - set prews {} - set prewt {} - set preindices {} - foreach arg [lrange $rescmd 1 end] { - lappend preargv $arg - lappend prews 1 - lappend prewt "" - lappend preindices $index - } - set argv [concat $preargv $argv] - set wordstatus [concat $prews $wordstatus] - set wordtype [concat $prewt $wordtype] - set indices [concat $preindices $indices] - } - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } elseif {$::Nagelfar(dbpicky)} { - errorMsg W "DB: Missing syntax for command \"$cmd\"" 0 - } - } - } - - if {$::Prefs(noVar)} { - return $type - } - - if {!$noConstantCheck} { - # Check unmarked constants against known variables to detect missing $. - # The constant is considered ok if within quotes. - set i 0 - foreach ws $wordstatus var $argv { - if {[info exists knownVars(known,$var)]} { - if {($ws & 7) == 1 && [lsearch $constantsDontCheck $i] == -1} { - errorMsg W "Found constant \"$var\" which is also a\ - variable." [lindex $indices $i] - } - } - incr i - } - } - return $type -} - -# Split a script into individual statements -proc splitScript {script index statementsName indicesName knownVarsName} { - upvar $statementsName statements $indicesName indices - upvar $knownVarsName knownVars - - set statements {} - set indices {} - - set tryline "" - set newstatement 1 - set firstline "" - string length $tryline - - set bracelevel 0 - - foreach line [split $script \n] { - # Here we must remember that "line" misses the \n that split ate. - # When line is used below we add \n. - # The extra \n generated on the last line does not matter. - - if {$bracelevel > 0} { - # Manual brace parsing is entered when we know we are in - # a braced block. Return to ordinary parsing as soon - # as a balanced brace is found. - - # Extract relevant characters - foreach char [regexp -all -inline {\\.|{|}} $line] { - if {$char eq "\{"} { - incr bracelevel - } elseif {$char eq "\}"} { - incr bracelevel -1 - if {$bracelevel <= 0} break - } - } - if {$bracelevel > 0} { - # We are still in a braced block so go on to the next line - append tryline $line\n - set line "" - continue - } - } - - # An empty line can never cause completion, since at this stage - # any backslash-newline has been removed. - if {[string is space $line]} { - if {$tryline eq ""} { - incr index [string length $line] - incr index - } else { - append tryline $line\n - } - continue - } - - append line \n - - while {$line ne ""} { - - # Some extra checking on close braces to help finding - # brace mismatches - set closeBrace -1 - if {[string equal "\}" [string trim $line]]} { - set closeBraceIx [expr {[string length $tryline] + $index}] - if {$newstatement} { - errorMsg E "Unbalanced close brace found" $closeBraceIx - reportCommentBrace 0 $closeBraceIx - } - set closeBrace [wasIndented $closeBraceIx] - } - - # Move everything up to the next semicolon, newline or eof - # to tryline - - set i [string first ";" $line] - if {$i != -1} { - append tryline [string range $line 0 $i] - if {$newstatement} { - set newstatement 0 - set firstline [string range $line 0 $i] - } - incr i - set line [string range $line $i end] - set splitSemi 1 - } else { - append tryline $line - if {$newstatement} { - set newstatement 0 - set firstline $line - } - set line "" - set splitSemi 0 - } - # If we split at a ; we must check that it really may be an end - if {$splitSemi} { - # Comment lines don't end with ; - #if {[regexp {^\s*#} $tryline]} {continue} - if {[string equal [string index [string trimleft $tryline] 0]\ - "#"]} continue - - # Look for \'s before the ; - # If there is an odd number of \, the ; is ignored - if {[string equal [string index $tryline end-1] "\\"]} { - set i [expr {[string length $tryline] - 2}] - set t $i - while {[string equal [string index $tryline $t] "\\"]} { - incr t -1 - } - if {($i - $t) % 2 == 1} {continue} - } - } - # Check if it's a complete line - if {[info complete $tryline]} { - # Remove leading space, keep track of index. - # Most lines will have no leading whitespace since - # buildLineDb removes most of it. This takes care - # of all remaining. - if {[string is space -failindex i $tryline]} { - # Only space, discard the line - incr index [string length $tryline] - set tryline "" - set newstatement 1 - continue - } else { - if {$i != 0} { - set tryline [string range $tryline $i end] - incr index $i - } - } - if {[string equal [string index $tryline 0] "#"]} { - # Check and discard comments - checkComment $tryline $index knownVars - } else { - if {$splitSemi} { - # Remove the semicolon from the statement - lappend statements [string range $tryline 0 end-1] - } else { - lappend statements $tryline - } - lappend indices $index - } - if {$closeBrace != -1} { - set tmp [wasIndented $index] - if {$tmp != $closeBrace} { - # Only do this if there is a free open brace - if {[regexp "\{\n" $tryline]} { - errorMsg W "Close brace not aligned with line\ - [calcLineNo $index] ($tmp $closeBrace)" \ - $closeBraceIx - } - } - } - incr index [string length $tryline] - set tryline "" - set newstatement 1 - } elseif {$closeBrace == 0 && \ - ![string match "namespace eval*" $tryline] && \ - ![string match "if *" $tryline] && \ - ![string match "*tcl_platform*" $tryline]} { - # A close brace that is not indented is typically the end of - # a global statement, like "proc". - # If it does not end the statement, there is probably a - # brace mismatch. - # When inside a namespace eval block, this is probably ok. - errorMsg W "Found non indented close brace that did not end\ - statement." $closeBraceIx - contMsg "This may indicate a brace mismatch." - } - } - - # If the line is complete except for a trailing open brace - # we can switch to just scanning braces. - # This could be made more general but since this is the far most - # common case it's probably not worth complicating it. - if {[string range $tryline end-2 end] eq " \{\n" && \ - [info complete [string range $tryline 0 end-2]]} { - set bracelevel 1 - } - } - # If tryline is non empty, it did not become complete - if {[string length $tryline] != 0} { - errorMsg E "Could not complete statement." $index - - # Experiment a little to give more info. - if {[info complete $firstline\}]} { - contMsg "One close brace would complete the first line" - reportCommentBrace $index $index - } elseif {[info complete $firstline\}\}]} { - contMsg "Two close braces would complete the first line" - reportCommentBrace $index $index - } - if {[info complete $firstline\"]} { - contMsg "One double quote would complete the first line" - } - if {[info complete $firstline\]]} { - contMsg "One close bracket would complete the first line" - } - - set endIx [expr {$index + [string length $tryline] - 1}] - set txt "the script body at line [calcLineNo $endIx]." - if {[info complete $tryline\}]} { - contMsg "One close brace would complete $txt" - contMsg "Assuming completeness for further processing." - reportCommentBrace $index $endIx - lappend statements $tryline\} - lappend indices $index - } elseif {[info complete $tryline\}\}]} { - contMsg "Two close braces would complete $txt" - contMsg "Assuming completeness for further processing." - reportCommentBrace $index $endIx - lappend statements $tryline\}\} - lappend indices $index - } - if {[info complete $tryline\"]} { - contMsg "One double quote would complete $txt" - } - if {[info complete $tryline\]]} { - contMsg "One close bracket would complete $txt" - } - } -} - -# Returns the return type of the script -proc parseBody {body index knownVarsName {warnCommandSubst 0}} { - upvar $knownVarsName knownVars - - #set ::instrumenting($index) 1 - - # Cache the splitScript result to optimise 2-pass checking. - if {[info exists ::Nagelfar(cacheBody)] && \ - [info exists ::Nagelfar(cacheBody,$body)]} { - set statements $::Nagelfar(cacheStatements,$body) - set indices $::Nagelfar(cacheIndices,$body) - } else { - splitScript $body $index statements indices knownVars - } - # Unescaped newline in command substitution body is probably wrong - if {$warnCommandSubst && [llength $statements] > 1} { - foreach statement [lrange $statements 0 end-1] \ - stmtIndex [lrange $indices 0 end-1] { - if {[string index $statement end] eq "\n"} { - errorMsg W "Newline in command substitution" $stmtIndex - break - } - } - } - -#miffo puts "Parsing a body with [llength $statements] stmts" - set type "" - foreach statement $statements index $indices { - set type [parseStatement $statement $index knownVars] - } - if {$::Nagelfar(firstpass)} { - set ::Nagelfar(cacheBody) 1 - set ::Nagelfar(cacheBody,$body) 1 - set ::Nagelfar(cacheStatements,$body) $statements - set ::Nagelfar(cacheIndices,$body) $indices - } else { - # FIXA: Why is this here? Tests pass without it - unset -nocomplain ::Nagelfar(cacheBody) - } - return $type -} - -# This is called when a definition command is encountered -# Add arguments to variable scope -proc parseArgs {procArgs indexArgs syn knownVarsName} { - upvar $knownVarsName knownVars - - if {[catch {llength $procArgs}]} { - if {!$::Nagelfar(firstpass)} { - errorMsg E "Argument list is not a valid list" $indexArgs - } - set procArgs {} - } - # Do not loop $syn in the foreach command since it can be shorter - set seenDefault 0 - set i -1 - foreach a $procArgs { - incr i - set var [lindex $a 0] - if {[llength $a] > 1} { - set seenDefault 1 - } elseif {$seenDefault && !$::Nagelfar(firstpass) && $var ne "args"} { - errorMsg W "Non-default arg after default arg" $indexArgs - # Reset to avoid further messages - set seenDefault 0 - } - set knownVars(known,$var) 1 - set knownVars(local,$var) 1 - set knownVars(set,$var) 1 - if {[regexp {\((.*)\)} [lindex $syn $i] -> type]} { - set knownVars(type,$var) $type - } else { - set knownVars(type,$var) "" - } - } - - # Sanity check of argument names - if {!$::Nagelfar(firstpass)} { - # Check for non-last "args" - set i [lsearch $procArgs "args"] - if {$i >= 0 && $i != [llength $procArgs] - 1} { - errorMsg W "Argument 'args' used before last, which can be confusing" \ - $indexArgs - } - # Check for duplicates - set l1 [lsort $procArgs] - set l2 [lsort -unique $procArgs] - if {$l1 ne $l2} { - errorMsg W "Duplicate proc arguments" $indexArgs - } - } -} - -# Create a syntax definition from args list, and given the info -# about variables in the body. -proc parseArgsToSyn {name procArgs indexArgs syn knownVarsName} { - upvar $knownVarsName knownVars - - if {[catch {llength $procArgs}]} { - # This is reported elsewhere - set procArgs {} - } - - # Build a syntax description for the procedure. - # Parse the arguments. - set upvar 0 - set unlim 0 - set min 0 - set newsyntax {} - foreach a $procArgs { - set var [lindex $a 0] - set type x - - # Check for any upvar in the proc - if {[info exists knownVars(upvar,$var)]} { - set other $knownVars(upvar,$var) - if {[info exists knownVars(read,$other)]} { - set type v - } elseif {[info exists knownVars(set,$other)]} { - set type n - } else { - set type l - } - set upvar 1 - } - if {[string equal $var "args"]} { - set unlim 1 - set type x* - } elseif {[llength $a] == 2} { - append type . - } else { - incr min - } - lappend newsyntax $type - } - - if {!$upvar} { - if {$unlim} { - set newsyntax [list r $min] - } elseif {$min == [llength $procArgs]} { - set newsyntax $min - } else { - set newsyntax [list r $min [llength $procArgs]] - } - } - - if {$syn ne ""} { - # Check if it matches previously defined syntax - set prevmin 0 - set prevmax 0 - set prevunlim 0 - if {[string is integer $syn]} { - set prevmin $syn - set prevmax $syn - } elseif {[string match "r*" $syn]} { - set prevmin [lindex $syn 1] - set prevmax [lindex $syn 2] - if {$prevmax == ""} { - set prevmax $prevmin - set prevunlim 1 - } - } else { - foreach token $syn { - SplitToken $token tok tokCount mod - set n [expr {$tok == "p" ? 2 : 1}] - if {$mod == ""} { - incr prevmin $n - incr prevmax $n - } elseif {$mod == "?"} { - incr prevmax $n - } elseif {$mod == "*"} { - set prevunlim 1 - } elseif {$mod == "."} { - incr prevmax $n - } - } - } - if {$prevunlim != $unlim || \ - ($prevunlim == 0 && $prevmax != [llength $procArgs]) \ - || $prevmin != $min} { - if {!$::Nagelfar(firstpass)} { # Messages in second pass - errorMsg W "Procedure \"$name\" does not match previous definition" \ - $indexArgs - contMsg "Previous '$syn' New '$newsyntax'" - } - set newsyntax $syn - } else { - # It matched. Does the new one seem better? - if {[regexp {^(?:r )?\d+(?: \d+)?$} $syn]} { - #if {$syntax($name) != $newsyntax} { - # decho "$name : Prev: '$syntax($name)' New: '$newsyntax'" - #} - # decho "Syntax for '$name' : '$newsyntax'" - #set syntax($name) $newsyntax - } else { - set newsyntax $syn - } - } - } else { - # decho "Syntax for '$name' : '$newsyntax'" - #set syntax($name) $newsyntax - } - return $newsyntax -} - -# Look for implicit variables -proc addImplicitVariables {cmd index knownVarsName} { - upvar $knownVarsName knownVars - set cNs [currentNamespace] - set cNsC ${cNs}::[namespace tail $cmd] - set impVar {} - if {[info exists ::implicitVar($cNsC)]} { - set impVar $::implicitVar($cNsC) - } elseif {[info exists ::implicitVar($cNs)]} { - set impVar $::implicitVar($cNs) - } else { - #decho "Looking for implicit in '$cNsC' '$cNs'" - #parray ::implicitVar - } - #echo "addImplicitVariables $cmd $impVar" - foreach var $impVar { - set varName [lindex $var 0] - set type [lindex $var 1] - markVariable $varName 1 "" 1 \ - $index knownVars type - } -} - -# This is called when a proc command is encountered. -# It is assumed that argv and indices has three elements. -proc parseProc {argv indices isProc isMethod definingCmd} { - global knownGlobals syntax - - foreach {name argList body} $argv break - - set nameMethod "" - if {$isMethod} { - set currentObj [currentObject] - if {$currentObj eq ""} { - errorMsg W "Method definition without a current object" \ - [lindex $indices 0] - set isMethod 0 - } else { - lappend ::subCmd($currentObj) $name - #echo "Adding $::Nagelfar(firstpass) '$name' to '$currentObj' -> '$::subCmd($currentObj)'" - set nameMethod "$currentObj $name" - } - } - - # Take care of namespace - set cns [currentNamespace] - set ns [namespace qualifiers $name] - set tail [namespace tail $name] - set storeIt $isProc - if {![string match "::*" $ns]} { - if {$cns eq "__unknown__"} { - set ns $cns - set storeIt 0 - } elseif {$ns != ""} { - set ns ${cns}::$ns - } else { - set ns $cns - } - } - set fullname ${ns}::$tail - #decho "proc $name -> $fullname ($cns) ($ns) ($tail)" - # Do not include the first :: in the name - if {[string match ::* $fullname]} { - set fullname [string range $fullname 2 end] - } - set name $fullname - - # Parse the arguments. - # Initialise a knownVars array with the arguments. - array set knownVars {} - - # Scan the syntax definition in parallel to look for types - if {$isProc && [info exists syntax($name)]} { - set syn $syntax($name) - } elseif {$isMethod && [info exists syntax($nameMethod)]} { - set syn $syntax($nameMethod) - } else { - set syn "" - } - - parseArgs $argList [lindex $indices 1] $syn knownVars - - if {$storeIt} { - lappend ::knownCommands $name - } - addImplicitVariables $definingCmd [lindex $indices 0] knownVars - -# decho "Note: parsing procedure $name" - if {!$::Nagelfar(firstpass)} { - if {$isProc} { - pushNamespace $ns - } - pushProc $name - parseBody $body [lindex $indices 2] knownVars - popProc - if {$isProc} { - popNamespace - } - } - set ::instrumenting([lindex $indices 2]) 1 - - #foreach item [array names knownVars upvar,*] { - # puts "upvar '$item' '$knownVars($item)'" - #} - - set newSyn [parseArgsToSyn $name $argList [lindex $indices 1] \ - $syn knownVars] - if {$storeIt} { - set syntax($name) $newSyn - } - if {$isMethod} { - if {[info exists syntax($nameMethod)]} { - #echo "Overwriting $nameMethod from '$syn' with '$newSyn'" - } else { - #echo "Writing $nameMethod from '$syn' with '$newSyn'" - } - set syntax($nameMethod) $newSyn - } - - # Update known globals with those that were set in the proc. - # I.e. anyone with set == 1 and namespace == "" should be - # added to known globals. - foreach item [array names knownVars namespace,*] { - if {$knownVars($item) != ""} continue - set var [string range $item 10 end] - if {[info exists knownVars(set,$var)]} { -# decho "Set global $var in proc $name." - if {[lsearch $knownGlobals $var] == -1} { - lappend knownGlobals $var - } - } - } - return $newSyn -} - -# Given an index in the original string, calculate its line number. -proc calcLineNo {ix} { - global newlineIx - - # Shortcut for exact match, which happens when the index is first - # in a line. This is common when called from wasIndented. - set i [lsearch -integer -sorted $newlineIx $ix] - if {$i >= 0} { - return [expr {$i + 2}] - } - - # Binary search - if {$ix < [lindex $newlineIx 0]} {return 1} - set first 0 - set last [expr {[llength $newlineIx] - 1}] - - while {$first < ($last - 1)} { - set n [expr {($first + $last) / 2}] - set ni [lindex $newlineIx $n] - if {$ni < $ix} { - set first $n - } elseif {$ni > $ix} { - set last $n - } else { - # Equality should have been caught in the lsearch above. - decho "Internal error: Equal element slipped through in calcLineNo" - return [expr {$n + 2}] - } - } - return [expr {$last + 1}] -} - -# Given an index in the original string, tell if that line was indented -# This should preferably be called with the index to the first char of -# the line since that case is much more efficient in calcLineNo. -proc wasIndented {i} { - lindex $::indentInfo [calcLineNo $i] -} - -# Length of initial whitespace -proc countIndent {str} { - # Get whitespace - set str [string range $str 0 end-[string length [string trimleft $str]]] - # Any tabs? - if {[string first \t $str] != -1} { - # Only tabs in beginning? - if {[regexp {^\t+[^\t]*$} $str]} { - set str [string map $::Nagelfar(tabMap) $str] - } else { - regsub -all $::Nagelfar(tabReg) $str $::Nagelfar(tabSub) str - } - } - return [string length $str] -} - -# Build a database of newlines to be able to calculate line numbers. -# Also replace all escaped newlines with a space, and remove all -# whitespace from the start of lines. Later processing is greatly -# simplified if it does not need to bother with those. -# Returns the simplified script. -proc buildLineDb {str} { - global newlineIx indentInfo - - set result "" - set lines [split $str \n] - if {[lindex $lines end] eq ""} { - set lines [lrange $lines 0 end-1] - } - set newlineIx {} - # Dummy element to get 1.. indexing - set indentInfo [list {}] - - # Detect a header. Backslash-newline is not substituted in the header, - # and the index after the header is kept. This is to preserve the header - # in code coverage mode. - # The first non-empty non-comment line ends the header. - set ::instrumenting(header) 0 - set ::instrumenting(already) 0 - set headerLines 1 - set previousWasEscaped 0 - - # This is a trick to get "sp" and "nl" to get an internal string rep. - # This also makes sure it will not be a shared object, which can mess up - # the internal rep. - # Append works a lot better that way. - set sp [string range " " 0 0] - set nl [string range \n 0 0] - set lineNo 0 - - foreach line $lines { - incr lineNo - # Count indent spaces and remove them - set indent [countIndent $line] - set line [string trimleft $line] - # Check for comments. - if {[string equal [string index $line 0] "#"]} { - checkPossibleComment $line $lineNo - } elseif {$headerLines && $line ne "" && !$previousWasEscaped} { - set headerLines 0 - set ::instrumenting(header) [string length $result] - if {$line eq "namespace eval ::_instrument_ {}"} { - set ::instrumenting(already) 1 - } - } - - # Count backslashes to determine if it's escaped - set previousWasEscaped 0 - if {[string equal [string index $line end] "\\"]} { - set len [string length $line] - set si [expr {$len - 2}] - while {[string equal [string index $line $si] "\\"]} {incr si -1} - if {($len - $si) % 2 == 0} { - # An escaped newline - set previousWasEscaped 1 - if {!$headerLines} { - append result [string range $line 0 end-1] $sp - lappend newlineIx [string length $result] - lappend indentInfo $indent - continue - } - } - } - # Unescaped newline - # It's important for performance that all elements in append - # has an internal string rep. String index takes care of $line - append result $line $nl - lappend newlineIx [string length $result] - lappend indentInfo $indent - } - if {$::Nagelfar(gui)} {progressMax $lineNo} - return $result -} - -# Parse a global script -proc parseScript {script} { - global knownGlobals unknownCommands knownCommands syntax - - catch {unset unknownCommands} - set unknownCommands {} - array set knownVars {} - array set ::knownAliases {} - foreach g $knownGlobals { - set knownVars(known,$g) 1 - set knownVars(set,$g) 1 - set knownVars(namespace,$g) "" - set knownVars(type,$g) "" - } - set script [buildLineDb $script] - set ::instrumenting(script) $script - - pushNamespace {} - set ::Nagelfar(firstpass) 0 - if {$::Nagelfar(2pass)} { - # First do one round with proc checking - set ::Nagelfar(firstpass) 1 - parseBody $script 0 knownVars - #echo "Second pass" - set ::Nagelfar(firstpass) 0 - } - parseBody $script 0 knownVars - popNamespace - - # Check commands that where unknown when encountered - # FIXA: aliases - foreach apa $unknownCommands { - foreach {cmd cmds index} $apa break - set found 0 - foreach cmdCandidate $cmds { - if {[info exists syntax($cmdCandidate)] || \ - [lsearch $knownCommands $cmdCandidate] >= 0} { - set found 1 - break - } - } - if {!$found} { - # Close brace is reported elsewhere - if {$cmd ne "\}" && ![regexp {::} $cmd]} { - # Different messages depending on name - if {[regexp {^(?:(?:[\w',:.]+)|(?:%W))$} $cmd]} { - errorMsg W "Unknown command \"$cmd\"" $index - } else { - errorMsg E "Strange command \"$cmd\"" $index - } - } - } - } - # Update known globals. - foreach item [array names knownVars namespace,*] { - if {$knownVars($item) != ""} continue - set var [string range $item 10 end] - # Check if it has been set. - if {[info exists knownVars(set,$var)]} { - if {[lsearch $knownGlobals $var] == -1} { - lappend knownGlobals $var - } - } - } -} - -# Parse a file -proc parseFile {filename} { - set ch [open $filename] - if {[info exists ::Nagelfar(encoding)] && \ - $::Nagelfar(encoding) ne "system"} { - fconfigure $ch -encoding $::Nagelfar(encoding) - } - set script [read $ch] - close $ch - - # Check for Ctrl-Z - set i [string first \u001a $script] - if {$i >= 0} { - # Cut off the script as source would do - set script [string range $script 0 [expr {$i - 1}]] - } - - array unset ::instrumenting - - initMsg - parseScript $script - if {$i >= 0} { - # Add a note about the Ctrl-Z - errorMsg W "Aborted script due to end-of-file marker" \ - [expr {[string length $::instrumenting(script)] - 1}] - } - flushMsg - - if {$::Nagelfar(instrument) && \ - [file extension $filename] ne ".syntax"} { - # Experimental instrumenting - dumpInstrumenting $filename - } -} - -# Find an element that is less than or equal, in a decreasing sorted list -proc binSearch {sortedList ix} { - # Shortcut for exact match - set i [lsearch -decreasing -integer -sorted $sortedList $ix] - if {$i >= 0} { - return $i - } - - # Binary search - if {$ix > [lindex $sortedList 0]} {return 0} - set first 0 - set last [expr {[llength $sortedList] - 1}] - if {$ix < [lindex $sortedList end]} {return -1} - - while {$first < ($last - 1)} { - set n [expr {($first + $last) / 2}] - set ni [lindex $sortedList $n] - if {$ni > $ix} { - set first $n - } elseif {$ni < $ix} { - set last $n - } else { - # Equality should have been caught in the lsearch above. - decho "Internal error: Equal element slipped through in binSearch" - return [expr {$n + 1}] - } - } - return $last -} - -# Write source instrumented for code coverage -proc dumpInstrumenting {filename} { - - set tail [file tail $filename] - if {$::instrumenting(already)} { - echo "Warning: Instrumenting already instrumented file $tail" - } - set ifile ${filename}_i - echo "Writing file $ifile" 1 - set iscript $::instrumenting(script) - set indices {} - foreach item [array names ::instrumenting] { - if {[string is digit $item]} { - lappend indices $item - } - } - set indices [lsort -decreasing -integer $indices] - # Look for lines marked with nocover - foreach item [array names ::instrumenting no,*] { - set index [lindex [split $item ","] end] - set i [binSearch $indices $index] - if {$i >= 0} { - set indices [lreplace $indices $i $i] - } - } - set init [list [list set current $tail]] - set headerIndex $::instrumenting(header) - foreach ix $indices { - if {$ix <= $headerIndex} break - set line [calcLineNo $ix] - set item "$tail,$line" - set i 2 - while {[info exists done($item)]} { - set item "$tail,$line,$i" - incr i - } - set done($item) 1 - set default 0 - - if {[llength $::instrumenting($ix)] > 1} { - foreach {type varname} $::instrumenting($ix) break - set endix [string first \n $iscript $ix] - set pre [string range $iscript 0 [expr {$ix - 1}]] - set post [string range $iscript $endix end] - append item ",var" - set insert "[list lappend ::_instrument_::log($item)] \$[list $varname]" - set default {} - } elseif {$::instrumenting($ix) == 2} { - # Missing else clause - if {[string index $iscript $ix] eq "\}"} { - incr ix - } - set insert [list incr ::_instrument_::log($item)] - set insert " [list else $insert]" - set pre [string range $iscript 0 [expr {$ix - 1}]] - set post [string range $iscript $ix end] - } else { - # Normal - set insert [list incr ::_instrument_::log($item)]\; - set pre [string range $iscript 0 [expr {$ix - 1}]] - set post [string range $iscript $ix end] - - set c [string index $pre end] - if {$c ne "\[" && $c ne "\{" && $c ne "\""} { - if {[regexp {^(\s*\w+)(\s.*)$} $post -> word rest]} { - append pre "\{" - set post "$word\}$rest" - } else { - echo "Not instrumenting line: $line\ - [string range $pre end-5 end]<>[string range $post 0 5]" - continue - } - } - } - set iscript $pre$insert$post - - lappend init [list set log($item) $default] - } - set ch [open $ifile w] - if {[info exists ::Nagelfar(encoding)] && \ - $::Nagelfar(encoding) ne "system"} { - fconfigure $ch -encoding $::Nagelfar(encoding) - } - # Start with a copy of the original's header - if {$headerIndex > 0} { - puts $ch [string range $iscript 0 [expr {$headerIndex - 1}]] - set iscript [string range $iscript $headerIndex end] - } - # Create a prolog equal in all instrumented files - puts $ch {\ - namespace eval ::_instrument_ {} - if {[info commands ::_instrument_::source] == ""} { - rename ::source ::_instrument_::source - proc ::source {args} { - set fileName [lindex $args end] - set args [lrange $args 0 end-1] - set newFileName $fileName - set altFileName ${fileName}_i - if {[file exists $altFileName]} { - set newFileName $altFileName - } - set args [linsert $args 0 ::_instrument_::source] - lappend args $newFileName - uplevel 1 $args - } - rename ::exit ::_instrument_::exit - proc ::exit {args} { - ::_instrument_::cleanup - uplevel 1 [linsert $args 0 ::_instrument_::exit] - } - proc ::_instrument_::cleanup {} { - variable log - variable all - variable dumpList - foreach {src logFile} $dumpList { - set ch [open $logFile w] - puts $ch [list array unset ::_instrument_::log $src,*] - foreach item [lsort -dictionary [array names log $src,*]] { - puts $ch [list set ::_instrument_::log($item) \ - $::_instrument_::log($item)] - } - close $ch - } - } - } - } - # Insert file specific info - puts $ch "# Initialise list of lines" - puts $ch "namespace eval ::_instrument_ \{" - puts $ch [join $init \n] - puts $ch "\}" - # More common prolog - puts $ch { - # Check if there is a stored log - namespace eval ::_instrument_ { - set thisScript [file normalize [file join [pwd] [info script]]] - if {[string match "*_i" $thisScript]} { - set thisScript [string range $thisScript 0 end-2] - } - set logFile ${thisScript}_log - if {[file exists $logFile]} { - ::_instrument_::source $logFile - } - - lappend dumpList $current $logFile - } - - #instrumented source goes here - } - - puts $ch $iscript - close $ch - - # Copy permissions to instrumented file. - catch {file attributes $ifile -permissions \ - [file attributes $filename -permissions]} -} - -# Add Code Coverage markup to a file according to measured coverage -proc instrumentMarkup {filename} { - set tail [file tail $filename] - set logfile ${filename}_log - set mfile ${filename}_m - - namespace eval ::_instrument_ {} - source $logfile - set covered 0 - set noncovered 0 - foreach item [array names ::_instrument_::log $tail,*] { - if {[string match "*,var" $item]} { - set values [lsort -dictionary -unique $::_instrument_::log($item)] - # FIXA: Maybe support expected values check - if {[regexp {,(\d+),\d+,var$} $item -> line]} { - set lines($line) ";# $values" - } elseif {[regexp {,(\d+),var$} $item -> line]} { - set lines($line) ";# $values" - } - continue - } - if {$::_instrument_::log($item) != 0} { - incr covered - continue - } - incr noncovered - if {[regexp {,(\d+),\d+$} $item -> line]} { - set lines($line) " ;# Not covered" - } elseif {[regexp {,(\d+)$} $item -> line]} { - set lines($line) " ;# Not covered" - } - } - set total [expr {$covered + $noncovered}] - set coverage [expr {100.0 * $covered / $total}] - set stats [format "(%d/%d %4.1f%%)" \ - $covered $total $coverage] - echo "Writing file $mfile $stats" 1 - if {[array size lines] == 0} { - echo "All lines covered in $tail" - file copy -force $filename $mfile - return - } - - set chi [open $filename r] - set cho [open $mfile w] - if {[info exists ::Nagelfar(encoding)] && \ - $::Nagelfar(encoding) ne "system"} { - fconfigure $chi -encoding $::Nagelfar(encoding) - fconfigure $cho -encoding $::Nagelfar(encoding) - } - set lineNo 1 - while {[gets $chi line] >= 0} { - if {$line eq " namespace eval ::_instrument_ {}"} { - echo "File $filename is instrumented, aborting markup" - close $chi - close $cho - file delete $mfile - return - } - if {[info exists lines($lineNo)]} { - append line $lines($lineNo) - } - puts $cho $line - incr lineNo - } - close $chi - close $cho -} - -# Add a message filter -proc addFilter {pat {reapply 0}} { - if {[lsearch -exact $::Nagelfar(filter) $pat] < 0} { - lappend ::Nagelfar(filter) $pat - } - if {$reapply} { - set w $::Nagelfar(resultWin) - $w configure -state normal - set ln 1 - while {1} { - set tags [$w tag names $ln.0] - set tag [lsearch -glob -inline $tags "message*"] - if {$tag == ""} { - set range [list $ln.0 $ln.end+1c] - set line [$w get $ln.0 $ln.end] - } else { - set range [$w tag nextrange $tag $ln.0] - if {$range == ""} { - incr ln - if {[$w index end] <= $ln} { - break - } - continue - } - set line [eval \$w get $range] - } - if {[string match $pat $line]} { - eval \$w delete $range - } else { - incr ln - } - if {[$w index end] <= $ln} break - } - $w configure -state disabled - } -} - -# Clear out all filters -proc resetFilters {} { - set ::Nagelfar(filter) {} -} - -# FIXA: Move safe reading to package -##nagelfar syntax _ipsource x -##nagelfar syntax _ipexists l -##nagelfar syntax _ipset 1: v : n x -##nagelfar syntax _iparray s v -##nagelfar subcmd _iparray exists get - -# Load syntax database using safe interpreter -proc loadDatabases {} { - if {[interp exists loadinterp]} { - interp delete loadinterp - } - interp create -safe loadinterp - interp expose loadinterp source - interp alias {} _ipsource loadinterp source - interp alias {} _ipexists loadinterp info exists - interp alias {} _ipset loadinterp set - interp alias {} _iparray loadinterp array - - foreach f $::Nagelfar(db) { - # FIXA: catch? - _ipsource $f - - # Support inline comments in db file - set ch [open $f r] - set data [read $ch] - close $ch - if {[string first "##nagelfar" $data] < 0} continue - set lines [split $data \n] - set commentlines [lsearch -all $lines "*##nagelfar*"] - foreach commentline $commentlines { - set comment [lindex $lines $commentline] - set str [string trim $comment] - if {![string match "##nagelfar *" $str]} continue - - # Increase to make a line number from the index - incr commentline - set rest [string range $str 11 end] - if {[catch {llength $rest}]} { - echo "Bad list in ##nagelfar comment in db $f line $commentline" - continue - } - if {[llength $rest] == 0} continue - set cmd [lindex $rest 0] - set first [lindex $rest 1] - set rest [lrange $rest 2 end] - switch -- $cmd { - syntax { - _ipset ::syntax($first) $rest - } - implicitvar { - _ipset ::implictVar($first) $rest - } - return { - _ipset ::return($first) $rest - } - subcmd { - _ipset ::subCmd($first) $rest - } - option { - _ipset ::option($first) $rest - } - alias { - _ipset ::knownAliases($first) $rest - } - default { - echo "Bad type in ##nagelfar comment in db $f line $commentline" - continue - } - } - } - } - - if {[_ipexists ::knownGlobals]} { - set ::knownGlobals [_ipset ::knownGlobals] - } else { - set ::knownGlobals {} - } - if {[_ipexists ::knownCommands]} { - set ::knownCommands [_ipset ::knownCommands] - } else { - set ::knownCommands {} - } - if {[_ipexists ::dbInfo]} { - set ::Nagelfar(dbInfo) [join [_ipset ::dbInfo] \n] - } else { - set ::Nagelfar(dbInfo) {} - } - if {[_ipexists ::dbTclVersion]} { - set ::Nagelfar(dbTclVersion) [_ipset ::dbTclVersion] - } else { - set ::Nagelfar(dbTclVersion) [package present Tcl] - } - # {*} expansion requires that Nagelfar is run in 8.5 since the checks - # for it does not work otherwise. - # It also naturally requires an 8.5 database to indicate that it is - # checking 8.5 scripts - set ::Nagelfar(allowExpand) 0 - if {[package vcompare $::Nagelfar(dbTclVersion) 8.5] >= 0 && \ - [package vcompare $::tcl_version 8.5] >= 0} { - ##nagelfar ignore - if {![catch {list {*}{hej}}]} { - set ::Nagelfar(allowExpand) 1 - } - } - - catch {unset ::syntax} - catch {unset ::implicitVar} - catch {unset ::return} - catch {unset ::subCmd} - catch {unset ::option} - catch {unset ::knownAliases} - if {[_iparray exists ::syntax]} { - array set ::syntax [_iparray get ::syntax] - } - if {[_iparray exists ::implicitVar]} { - array set ::implicitVar [_iparray get ::implicitVar] - } - if {[_iparray exists ::return]} { - array set ::return [_iparray get ::return] - } - if {[_iparray exists ::subCmd]} { - array set ::subCmd [_iparray get ::subCmd] - } - if {[_iparray exists ::option]} { - array set ::option [_iparray get ::option] - } - if {[_iparray exists ::knownAliases]} { - array set ::knownAliases [_iparray get ::knownAliases] - } - - interp delete loadinterp - - if {$::Prefs(strictAppend)} { - set ::syntax(lappend) [string map {n v} $::syntax(lappend)] - set ::syntax(append) [string map {n v} $::syntax(append)] - } -} - -# Execute the checks -proc doCheck {} { - if {[llength $::Nagelfar(db)] == 0} { - if {$::Nagelfar(gui)} { - tk_messageBox -title "Nagelfar Error" -type ok -icon error \ - -message "No syntax database file selected" - return - } else { - puts stderr "No syntax database file found" - exit 3 - } - } - - set int [info exists ::Nagelfar(checkEdit)] - - if {!$int && [llength $::Nagelfar(files)] == 0} { - errEcho "No files to check" - return - } - - if {$::Nagelfar(gui)} { - allowStop - busyCursor - } - - if {!$int} { - set ::Nagelfar(editFile) "" - } - if {[info exists ::Nagelfar(resultWin)]} { - $::Nagelfar(resultWin) configure -state normal - $::Nagelfar(resultWin) delete 1.0 end - } - set ::Nagelfar(messageCnt) 0 - - # Load syntax databases - loadDatabases - - # In header generation, store info before reading - if {$::Nagelfar(header) ne ""} { - set h_oldsyntax [array names ::syntax] - set h_oldsubCmd [array names ::subCmd] - set h_oldoption [array names ::option] - set h_oldreturn [array names ::return] - set h_oldimplicitvar [array names ::implicitVar] - set h_oldaliases [array names ::knownAliases] - } - - # Initialise variables - set ::Nagelfar(namespaces) {} - set ::Nagelfar(procs) {} - set ::Nagelfar(object) "" - - # Do the checking - - set ::currentFile "" - set ::Nagelfar(exitstatus) 0 - if {$int} { - initMsg - parseScript $::Nagelfar(checkEdit) - flushMsg - } else { - foreach f $::Nagelfar(files) { - if {$::Nagelfar(stop)} break - set ::currentFile $f - set syntaxfile [file rootname $f].syntax - if {[file exists $syntaxfile]} { - if {!$::Nagelfar(quiet)} { - echo "Parsing file $syntaxfile" 1 - } - parseFile $syntaxfile - } - if {$f == $syntaxfile} continue - if {[file isfile $f] && [file readable $f]} { - if {!$::Nagelfar(quiet)} { - echo "Checking file $f" 1 - } - parseFile $f - } else { - errEcho "Could not find file '$f'" - } - } - } - # Generate header - if {$::Nagelfar(header) ne ""} { - foreach item $h_oldsyntax { unset ::syntax($item) } - # FIXA: With subcmd+, maybe additions need to be detected? - foreach item $h_oldsubCmd { unset ::subCmd($item) } - foreach item $h_oldoption { unset ::option($item) } - foreach item $h_oldreturn { unset ::return($item) } - foreach item $h_oldimplicitvar { unset ::implicitVar($item) } - foreach item $h_oldaliases { unset ::knownAliases($item) } - - if {[catch {set ch [open $::Nagelfar(header) w]}]} { - puts stderr "Could not create file \"$::Nagelfar(header)\"" - } else { - echo "Writing \"$::Nagelfar(header)\"" 1 - foreach item [lsort -dictionary [array names ::syntax]] { - puts $ch "\#\#nagelfar [list syntax $item] $::syntax($item)" - } - foreach item [lsort -dictionary [array names ::subCmd]] { - puts $ch "\#\#nagelfar [list subcmd $item] $::subCmd($item)" - } - foreach item [lsort -dictionary [array names ::option]] { - puts $ch "\#\#nagelfar [list option $item] $::option($item)" - } - foreach item [lsort -dictionary [array names ::return]] { - puts $ch "\#\#nagelfar [list return $item] $::return($item)" - } - foreach item [lsort -dictionary [array names ::implicitVar]] { - puts $ch "\#\#nagelfar [list implicitvar $item] $::implicitVar($item)" - } - foreach item [lsort -dictionary [array names ::knownAliases]] { - puts $ch "\#\#nagelfar [list alias $item] $::knownAliases($item)" - } - close $ch - } - } - if {$::Nagelfar(gui)} { - if {[info exists ::Nagelfar(resultWin)]} { - set result [$::Nagelfar(resultWin) get 1.0 end-1c] - set n [regsub -all {Line\s+\d+: N } $result "" ->] - set w [regsub -all {Line\s+\d+: W } $result "" ->] - set e [regsub -all {Line\s+\d+: E } $result "" ->] - # show statistics depending on severity level - switch $::Prefs(severity) { - N {echo "Done (E/W/N: $e/$w/$n)" 1} - W {echo "Done (E/W: $e/$w)" 1} - E {echo "Done (E: $e)" 1} - } - } else { - echo "Done" 1 - } - normalCursor - progressUpdate -1 - } -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2007, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# gui.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -proc busyCursor {} { - if {![info exists ::oldcursor]} { - set ::oldcursor [. cget -cursor] - set ::oldcursor2 [$::Nagelfar(resultWin) cget -cursor] - } - - . config -cursor watch - $::Nagelfar(resultWin) config -cursor watch -} - -proc normalCursor {} { - . config -cursor $::oldcursor - $::Nagelfar(resultWin) config -cursor $::oldcursor2 -} - -proc exitApp {} { - exit -} - -# Browse for and add a syntax database file -proc addDbFile {} { - if {[info exists ::Nagelfar(lastdbdir)]} { - set initdir $::Nagelfar(lastdbdir) - } elseif {[info exists ::Nagelfar(lastdir)]} { - set initdir $::Nagelfar(lastdir) - } else { - set initdir [pwd] - } - set apa [tk_getOpenFile -title "Select db file" \ - -initialdir $initdir] - if {$apa == ""} return - - lappend ::Nagelfar(db) $apa - lappend ::Nagelfar(allDb) $apa - lappend ::Nagelfar(allDbView) $apa - updateDbSelection 1 - set ::Nagelfar(lastdbdir) [file dirname $apa] -} - -# File drop using TkDnd -proc fileDropDb {files} { - foreach file $files { - set file [fileRelative [pwd] $file] - lappend ::Nagelfar(db) $file - lappend ::Nagelfar(allDb) $file - lappend ::Nagelfar(allDbView) $file - } - updateDbSelection 1 -} - -# Remove a file from the database list -proc removeDbFile {} { - set ixs [lsort -decreasing -integer [$::Nagelfar(dbWin) curselection]] - foreach ix $ixs { - set ::Nagelfar(allDb) [lreplace $::Nagelfar(allDb) $ix $ix] - set ::Nagelfar(allDbView) [lreplace $::Nagelfar(allDbView) $ix $ix] - } - updateDbSelection - updateDbSelection 1 -} - -# Browse for and add a file to check. -proc addFile {} { - if {[info exists ::Nagelfar(lastdir)]} { - set initdir $::Nagelfar(lastdir) - } elseif {[info exists ::Nagelfar(lastdbdir)]} { - set initdir $::Nagelfar(lastdbdir) - } else { - set initdir [pwd] - } - - set filetypes [list {{Tcl Files} {.tcl}} \ - [list {All Tcl Files} $::Prefs(extensions)] \ - {{All Files} {.*}}] - set apa [tk_getOpenFile -title "Select file(s) to check" \ - -initialdir $initdir \ - -defaultextension .tcl -multiple 1 \ - -filetypes $filetypes] - if {[llength $apa] == 0} return - - set newpwd [file dirname [lindex $apa 0]] - if {[llength $::Nagelfar(files)] == 0 && $newpwd ne [pwd]} { - set res [tk_messageBox -title "Nagelfar" -icon question -type yesno \ - -message \ - "Change current directory to [file nativename $newpwd] ?"] - if {$res eq "yes"} { - cd $newpwd - } - } - set skipped {} - foreach file $apa { - set relfile [fileRelative [pwd] $file] - if {[lsearch -exact $::Nagelfar(files) $relfile] >= 0} { - lappend skipped $relfile - continue - } - lappend ::Nagelfar(files) $relfile - set ::Nagelfar(lastdir) [file dirname $file] - } - if {[llength $skipped] > 0} { - tk_messageBox -title "Nagelfar" -icon info -type ok -message \ - "Skipped duplicate file" - } -} - -# Remove a file from the list to check -proc removeFile {} { - set ixs [lsort -decreasing -integer [$::Nagelfar(fileWin) curselection]] - foreach ix $ixs { - set ::Nagelfar(files) [lreplace $::Nagelfar(files) $ix $ix] - } -} - -# Move a file up/down file list -proc moveFile {dir} { - # FIXA: Allow this line on a global level or in .syntax file - ##nagelfar variable ::Nagelfar(fileWin) _obj,listbox - set ix [lindex [$::Nagelfar(fileWin) curselection] 0] - if {$ix eq ""} return - set len [llength $::Nagelfar(files)] - set nix [expr {$ix + $dir}] - if {$nix < 0 || $nix >= $len} return - set item [lindex $::Nagelfar(files) $ix] - set ::Nagelfar(files) [lreplace $::Nagelfar(files) $ix $ix] - set ::Nagelfar(files) [linsert $::Nagelfar(files) $nix $item] - $::Nagelfar(fileWin) see $nix - $::Nagelfar(fileWin) selection clear 0 end - $::Nagelfar(fileWin) selection set $nix - $::Nagelfar(fileWin) selection anchor $nix - $::Nagelfar(fileWin) activate $nix -} - -# File drop using TkDnd -proc fileDropFile {files} { - foreach file $files { - lappend ::Nagelfar(files) [fileRelative [pwd] $file] - } -} -# This shows the file and the line from an error in the result window. -proc showError {{lineNo {}}} { - set w $::Nagelfar(resultWin) - if {$lineNo == ""} { - set lineNo [lindex [split [$w index current] .] 0] - } - - $w tag remove hl 1.0 end - $w tag add hl $lineNo.0 $lineNo.end - $w mark set insert $lineNo.0 - set line [$w get $lineNo.0 $lineNo.end] - - if {[regexp {^(.*): Line\s+(\d+):} $line -> fileName fileLine]} { - editFile $fileName $fileLine - } elseif {[regexp {^Line\s+(\d+):} $line -> fileLine]} { - editFile "" $fileLine - } -} - -# Scroll a text window to view a certain line, and possibly some -# lines before and after. -proc seeText {w si} { - $w see $si - $w see $si-3lines - $w see $si+3lines - if {[llength [$w bbox $si]] == 0} { - $w yview $si-3lines - } - if {[llength [$w bbox $si]] == 0} { - $w yview $si - } -} - -# Make next "E" error visible -proc seeNextError {} { - set w $::Nagelfar(resultWin) - set lineNo [lindex [split [$w index insert] .] 0] - - set index [$w search -exact ": E " $lineNo.end] - if {$index eq ""} { - $w see end - return - } - seeText $w $index - set lineNo [lindex [split $index .] 0] - $w tag remove hl 1.0 end - $w tag add hl $lineNo.0 $lineNo.end - $w mark set insert $lineNo.0 -} - -proc resultPopup {x y X Y} { - set w $::Nagelfar(resultWin) - - set index [$w index @$x,$y] - set tags [$w tag names $index] - set tag [lsearch -glob -inline $tags "message*"] - if {$tag == ""} { - set lineNo [lindex [split $index .] 0] - set line [$w get $lineNo.0 $lineNo.end] - } else { - set range [$w tag nextrange $tag 1.0] - set line [lindex [split [eval \$w get $range] \n] 0] - } - - destroy .popup - menu .popup - - if {[regexp {^(.*): Line\s+(\d+):} $line -> fileName fileLine]} { - .popup add command -label "Show File" \ - -command [list editFile $fileName $fileLine] - } - if {[regexp {^(.*): Line\s+\d+:\s*(.*)$} $line -> pre post]} { - .popup add command -label "Filter this message" \ - -command [list addFilter "*$pre*$post*" 1] - .popup add command -label "Filter this message in all files" \ - -command [list addFilter "*$post*" 1] - regsub {".+?"} $post {"*"} post2 - regsub -all {\d+} $post2 {*} post2 - if {$post2 ne $post} { - .popup add command -label "Filter this generic message" \ - -command [list addFilter "*$post2*" 1] - } - } - # FIXA: This should be handled abit better. - .popup add command -label "Reset all filters" -command resetFilters - - if {[$::Nagelfar(resultWin) get 1.0 1.end] ne ""} { - .popup add command -label "Save Result" -command saveResult - } - - tk_popup .popup $X $Y -} - -# Save result as file -proc saveResult {} { - # set initial filename to 1st file in list - set iniFile [file rootname [lindex $::Nagelfar(files) 0]] - if {$iniFile == ""} { - set iniFile "noname" - } - append iniFile ".nfr" - set iniDir [file dirname $iniFile] - set types { - {"Nagelfar Result" {.nfr}} - {"All Files" {*}} - } - set file [tk_getSaveFile -initialdir $iniDir -initialfile $iniFile \ - -filetypes $types -title "Save File"] - if {$file != ""} { - set ret [catch {open $file w} msg] - if {!$ret} { - set fid $msg - fconfigure $fid -translation {auto lf} - set ret [catch {puts $fid [$::Nagelfar(resultWin) get 1.0 end-1c]} msg] - } - catch {close $fid} - if {!$ret} { - tk_messageBox -title "Nagelfar" -icon info -type ok \ - -message "Result saved as [file nativename $file]" - } else { - tk_messageBox -title "Nagelfar Error" -type ok -icon error \ - -message "Cannot write [file nativename $file]:\n$msg" - } - } -} - -# Update the selection in the db listbox to or from the db list. -proc updateDbSelection {{fromVar 0}} { - if {$fromVar} { - $::Nagelfar(dbWin) selection clear 0 end - # Try to keep one selected - if {[llength $::Nagelfar(db)] == 0} { - set ::Nagelfar(db) [lrange $::Nagelfar(allDb) 0 0] - } - foreach f $::Nagelfar(db) { - set i [lsearch $::Nagelfar(allDb) $f] - if {$i >= 0} { - $::Nagelfar(dbWin) selection set $i - } - } - return - } - - set ::Nagelfar(db) {} - foreach ix [$::Nagelfar(dbWin) curselection] { - lappend ::Nagelfar(db) [lindex $::Nagelfar(allDb) $ix] - } -} - -# Unused experiment to make scrolling snidget -if {[catch {package require snit}]} { - namespace eval snit { - proc widget {args} {} - } -} -::snit::widget ScrollX { - option -direction both - option -auto 0 - - delegate method * to child - delegate option * to child - - constructor {class args} { - set child [$class $win.s] - $self configurelist $args - grid $win.s -row 0 -column 0 -sticky news - grid columnconfigure $win 0 -weight 1 - grid rowconfigure $win 0 -weight 1 - - # Move border properties to frame - set bw [$win.s cget -borderwidth] - set relief [$win.s cget -relief] - $win configure -relief $relief -borderwidth $bw - $win.s configure -borderwidth 0 - } - - method child {} { - return $child - } - - method SetScrollbar {sb from to} { - $sb set $from $to - if {$options(-auto) && $from == 0.0 && $top == 1.0} { - grid remove $sb - } else { - grid $sb - } - } - - onconfigure -direction {value} { - switch -- $value { - both { - set scrollx 1 - set scrolly 1 - } - x { - set scrollx 1 - set scrolly 0 - } - y { - set scrollx 0 - set scrolly 1 - } - default { - return -code error "Bad -direction \"$value\"" - } - } - set options(-direction) $value - destroy $win.sbx $win.sby - if {$scrollx} { - $win.s configure -xscrollcommand [mymethod SetScrollbar $win.sbx] - scrollbar $win.sbx -orient horizontal -command [list $win.s xview] - grid $win.sbx -row 1 -sticky we - } else { - $win.s configure -xscrollcommand {} - } - if {$scrolly} { - $win.s configure -yscrollcommand [mymethod SetScrollbar $win.sby] - scrollbar $win.sby -orient vertical -command [list $win.s yview] - grid $win.sby -row 0 -column 1 -sticky ns - } else { - $win.s configure -yscrollcommand {} - } - } -} - -# A little helper to make a scrolled window -# It returns the name of the scrolled window -proc Scroll {dir class w args} { - switch -- $dir { - both { - set scrollx 1 - set scrolly 1 - } - x { - set scrollx 1 - set scrolly 0 - } - y { - set scrollx 0 - set scrolly 1 - } - default { - return -code error "Bad scrolldirection \"$dir\"" - } - } - - frame $w - eval [list $class $w.s] $args - - # Move border properties to frame - set bw [$w.s cget -borderwidth] - set relief [$w.s cget -relief] - $w configure -relief $relief -borderwidth $bw - $w.s configure -borderwidth 0 - - grid $w.s -sticky news - - if {$scrollx} { - $w.s configure -xscrollcommand [list $w.sbx set] - scrollbar $w.sbx -orient horizontal -command [list $w.s xview] - grid $w.sbx -row 1 -sticky we - } - if {$scrolly} { - $w.s configure -yscrollcommand [list $w.sby set] - scrollbar $w.sby -orient vertical -command [list $w.s yview] - grid $w.sby -row 0 -column 1 -sticky ns - } - grid columnconfigure $w 0 -weight 1 - grid rowconfigure $w 0 -weight 1 - - return $w.s -} - -# Set the progress -proc progressUpdate {n} { - if {$n < 0} { - $::Nagelfar(progressWin) configure -relief flat - } else { - $::Nagelfar(progressWin) configure -relief solid - } - if {$n <= 0} { - place $::Nagelfar(progressWin).f -x -100 -relx 0 -y 0 -rely 0 \ - -relheight 1.0 -relwidth 0.0 - } else { - set frac [expr {double($n) / $::Nagelfar(progressMax)}] - - place $::Nagelfar(progressWin).f -x 0 -relx 0 -y 0 -rely 0 \ - -relheight 1.0 -relwidth $frac - } - update idletasks -} - -# Set the 100 % level of the progress bar -proc progressMax {n} { - set ::Nagelfar(progressMax) $n - progressUpdate 0 -} - -# Create a simple progress bar -proc progressBar {w} { - set ::Nagelfar(progressWin) $w - - frame $w -bd 1 -relief solid -padx 2 -pady 2 -width 100 -height 20 - frame $w.f -background blue - - progressMax 100 - progressUpdate -1 -} - -# A thing to easily get to debug mode -proc backDoor {a} { - append ::Nagelfar(backdoor) $a - set ::Nagelfar(backdoor) [string range $::Nagelfar(backdoor) end-9 end] - if {$::Nagelfar(backdoor) eq "PeterDebug"} { - # Second time it redraw window, thus giving debug menu - if {$::debug == 1} { - makeWin - } - set ::debug 1 - catch {console show} - set ::Nagelfar(backdoor) "" - } -} - -# Flag that the current run should be stopped -proc stopCheck {} { - set ::Nagelfar(stop) 1 - $::Nagelfar(stopWin) configure -state disabled -} - -# Allow the stop button to be pressed -proc allowStop {} { - set ::Nagelfar(stop) 0 - $::Nagelfar(stopWin) configure -state normal -} - -# Create main window -proc makeWin {} { - defaultGuiOptions - - catch {font create ResultFont -family courier \ - -size [lindex $::Prefs(resultFont) 1]} - - eval destroy [winfo children .] - wm protocol . WM_DELETE_WINDOW exitApp - wm title . "Nagelfar: Tcl Syntax Checker" - tk appname Nagelfar - wm withdraw . - - # Syntax database section - - frame .fs - label .fs.l -text "Syntax database files" - button .fs.bd -text "Del" -width 10 -command removeDbFile - button .fs.b -text "Add" -width 10 -command addDbFile - set lb [Scroll y listbox .fs.lb \ - -listvariable ::Nagelfar(allDbView) \ - -height 4 -width 40 -selectmode single] - set ::Nagelfar(dbWin) $lb - - bind $lb "removeDbFile" - bind $lb <> updateDbSelection - bind $lb [list focus $lb] - updateDbSelection 1 - - grid .fs.l .fs.bd .fs.b -sticky w -padx 2 -pady 2 - grid .fs.lb - - -sticky news - grid columnconfigure .fs 0 -weight 1 - grid rowconfigure .fs 1 -weight 1 - - - # File section - - frame .ff - label .ff.l -text "Tcl files to check" - button .ff.bd -text "Del" -width 10 -command removeFile - button .ff.b -text "Add" -width 10 -command addFile - set lb [Scroll y listbox .ff.lb \ - -listvariable ::Nagelfar(files) \ - -height 4 -width 40] - set ::Nagelfar(fileWin) $lb - - bind $lb "removeFile" - bind $lb [list focus $lb] - bind $lb {moveFile -1} - bind $lb {moveFile 1} - - grid .ff.l .ff.bd .ff.b -sticky w -padx 2 -pady 2 - grid .ff.lb - - -sticky news - grid columnconfigure .ff 0 -weight 1 - grid rowconfigure .ff 1 -weight 1 - - # Set up file dropping in listboxes if TkDnd is available - if {![catch {package require tkdnd}]} { - dnd bindtarget . text/uri-list {fileDropFile %D} - #dnd bindtarget $::Nagelfar(fileWin) text/uri-list {fileDropFile %D} - dnd bindtarget $::Nagelfar(dbWin) text/uri-list {fileDropDb %D} - } - - # Result section - - frame .fr - progressBar .fr.pr - button .fr.b -text "Check" -underline 0 -width 10 -command "doCheck" - bind . doCheck - bind . doCheck - button .fr.bb -text "Stop" -underline 0 -width 10 -command "stopCheck" - bind . stopCheck - bind . stopCheck - set ::Nagelfar(stopWin) .fr.bb - button .fr.bn -text "Next E" -underline 0 -width 10 -command "seeNextError" - bind . seeNextError - bind . seeNextError - if {$::debug == 0} { - bind . "backDoor %A" - } - - set ::Nagelfar(resultWin) [Scroll both \ - text .fr.t -width 100 -height 25 -wrap none -font ResultFont] - - grid .fr.b .fr.bb .fr.bn .fr.pr -sticky w -padx 2 -pady {0 2} - grid .fr.t - - - -sticky news - grid columnconfigure .fr 2 -weight 1 - grid rowconfigure .fr 1 -weight 1 - - $::Nagelfar(resultWin) tag configure info -foreground #707070 - $::Nagelfar(resultWin) tag configure error -foreground red - $::Nagelfar(resultWin) tag configure hl -background yellow - bind $::Nagelfar(resultWin) "showError ; break" - bind $::Nagelfar(resultWin) "resultPopup %x %y %X %Y ; break" - - # Use the panedwindow in 8.4 - panedwindow .pw -orient vertical - lower .pw - frame .pw.f - grid .fs x .ff -in .pw.f -sticky news - grid columnconfigure .pw.f {0 2} -weight 1 -uniform a - grid columnconfigure .pw.f 1 -minsize 4 - grid rowconfigure .pw.f 0 -weight 1 - - # Make sure the frames have calculated their size before - # adding them to the pane - # This update can be excluded in 8.4.4+ - update idletasks - .pw add .pw.f -sticky news - .pw add .fr -sticky news - pack .pw -fill both -expand 1 - - - # Menus - - menu .m - . configure -menu .m - - # File menu - - .m add cascade -label "File" -underline 0 -menu .m.mf - menu .m.mf - .m.mf add command -label "Exit" -underline 1 -command exitApp - - # Options menu - addOptionsMenu .m - - # Tools menu - - .m add cascade -label "Tools" -underline 0 -menu .m.mt - menu .m.mt - .m.mt add command -label "Edit Window" -underline 0 \ - -command {editFile "" 0} - .m.mt add command -label "Browse Database" -underline 0 \ - -command makeDbBrowserWin - addRegistryToMenu .m.mt - - # Debug menu - - if {$::debug == 1} { - .m add cascade -label "Debug" -underline 0 -menu .m.md - menu .m.md - if {$::tcl_platform(platform) == "windows"} { - .m.md add checkbutton -label Console -variable consolestate \ - -onvalue show -offvalue hide \ - -command {console $consolestate} - .m.md add separator - } - .m.md add command -label "Reread Source" -command {source $thisScript} - .m.md add separator - .m.md add command -label "Redraw Window" -command {makeWin} - #.m.md add separator - #.m.md add command -label "Normal Cursor" -command {normalCursor} - } - - # Help menu is last - - .m add cascade -label "Help" -underline 0 -menu .m.help - menu .m.help - foreach label {README Messages {Syntax Databases} {Inline Comments} {Call By Name} {Syntax Tokens} {Code Coverage}} \ - file {README.txt messages.txt syntaxdatabases.txt inlinecomments.txt call-by-name.txt syntaxtokens.txt codecoverage.txt} { - .m.help add command -label $label -command [list makeDocWin $file] - } - .m.help add separator - .m.help add command -label About -command makeAboutWin - - wm deiconify . -} - -############################# -# A simple file viewer/editor -############################# - -# Try to locate emacs, if not done before -proc locateEmacs {} { - if {[info exists ::Nagelfar(emacs)]} return - - # Look for standard names in the path - set path [auto_execok emacs] - if {$path != ""} { - set ::Nagelfar(emacs) [list $path -f server-start] - } else { - set path [auto_execok runemacs.exe] - if {$path != ""} { - set ::Nagelfar(emacs) [list $path] - } - } - - if {![info exists ::Nagelfar(emacs)]} { - # Try the places where I usually have emacs on Windows - foreach dir [lsort -decreasing -dictionary \ - [glob -nocomplain c:/apps/emacs*]] { - set em [file join $dir bin runemacs.exe] - set em [file normalize $em] - if {[file exists $em]} { - set ::Nagelfar(emacs) [list $em] - break - } - } - } - # Look for emacsclient - foreach name {emacsclient} { - set path [auto_execok $name] - if {$path != ""} { - set ::Nagelfar(emacsclient) $path - break - } - } -} - -# Try to show a file using emacs -proc tryEmacs {filename lineNo} { - locateEmacs - # First try with emacsclient - if {[catch {exec $::Nagelfar(emacsclient) -n +$lineNo $filename}]} { - # Start a new emacs - if {[catch {eval exec $::Nagelfar(emacs) [list +$lineNo \ - $filename] &}]} { - # Failed - return 0 - } - } - return 1 -} - -# Try to show a file using vim -proc tryVim {filename lineNo} { - if {[catch {exec gvim +$lineNo $filename &}]} { - if {[catch {exec xterm -exec vi +$lineNo $filename &}]} { - return 0 - } - } - return 1 -} - -# Try to show a file using pfe -proc tryPfe {filename lineNo} { - if {$lineNo > 0} { - if {[catch {exec [auto_execok pfe32] /g $lineNo $filename &}]} { - return 0 - } - } elseif {[catch {exec [auto_execok pfe32] &}]} { - return 0 - } - return 1 -} - -# Edit a file using internal or external editor. -proc editFile {filename lineNo} { - if {$::Prefs(editor) eq "emacs" && [tryEmacs $filename $lineNo]} return - if {$::Prefs(editor) eq "vim" && [tryVim $filename $lineNo]} return - if {$::Prefs(editor) eq "pfe" && [tryPfe $filename $lineNo]} return - - if {[winfo exists .fv]} { - wm deiconify .fv - raise .fv - set w $::Nagelfar(editWin) - } else { - toplevel .fv - wm title .fv "Nagelfar Editor" - - if {$::Nagelfar(withCtext)} { - set w [Scroll both ctext .fv.t -linemap 0 \ - -width 80 -height 25 -font $::Prefs(editFileFont)] - ctext::setHighlightTcl $w - } else { - set w [Scroll both text .fv.t \ - -width 80 -height 25 -font $::Prefs(editFileFont)] - } - set ::Nagelfar(editWin) $w - # Set up a tag for incremental search bindings - if {[info procs textSearch::enableSearch] != ""} { - textSearch::enableSearch $w -label ::Nagelfar(iSearch) - } - - frame .fv.f - grid .fv.t -sticky news - grid .fv.f -sticky we - grid columnconfigure .fv 0 -weight 1 - grid rowconfigure .fv 0 -weight 1 - - menu .fv.m - .fv configure -menu .fv.m - .fv.m add cascade -label "File" -underline 0 -menu .fv.m.mf - menu .fv.m.mf - .fv.m.mf add command -label "Save" -underline 0 -command "saveFile" - .fv.m.mf add separator - .fv.m.mf add command -label "Close" -underline 0 -command "closeFile" - - .fv.m add cascade -label "Edit" -underline 0 -menu .fv.m.me - menu .fv.m.me - .fv.m.me add command -label "Clear/Paste" -underline 6 \ - -command "clearAndPaste" - .fv.m.me add command -label "Check" -underline 0 \ - -command "checkEditWin" - - .fv.m add cascade -label "Search" -underline 0 -menu .fv.m.ms - menu .fv.m.ms - if {[info procs textSearch::searchMenu] != ""} { - textSearch::searchMenu .fv.m.ms - } else { - .fv.m.ms add command -label "Text search not available" \ - -state disabled - } - - .fv.m add cascade -label "Options" -underline 0 -menu .fv.m.mo - menu .fv.m.mo - .fv.m.mo add checkbutton -label "Backup" -underline 0 \ - -variable ::Prefs(editFileBackup) - - .fv.m.mo add cascade -label "Font" -underline 0 -menu .fv.m.mo.mf - menu .fv.m.mo.mf - set cmd "[list $w] configure -font \$::Prefs(editFileFont)" - foreach lab {Small Medium Large} size {8 10 14} { - .fv.m.mo.mf add radiobutton -label $lab -underline 0 \ - -variable ::Prefs(editFileFont) \ - -value [list Courier $size] \ - -command $cmd - } - - label .fv.f.ln -width 5 -anchor e -textvariable ::Nagelfar(lineNo) - label .fv.f.li -width 1 -pady 0 -padx 0 \ - -textvariable ::Nagelfar(iSearch) - pack .fv.f.ln .fv.f.li -side right -padx 3 - - bind $w { - after idle { - set ::Nagelfar(lineNo) \ - [lindex [split [$::Nagelfar(editWin) index insert] .] 0] - } - } - bind $w [bind $w ] - - wm protocol .fv WM_DELETE_WINDOW closeFile - $w tag configure hl -background yellow - if {[info exists ::Nagelfar(editFileGeom)]} { - wm geometry .fv $::Nagelfar(editFileGeom) - } else { - after idle {after 1 { - set ::Nagelfar(editFileOrigGeom) [wm geometry .fv] - }} - } - } - - if {$filename != "" && \ - (![info exists ::Nagelfar(editFile)] || \ - $filename != $::Nagelfar(editFile))} { - $w delete 1.0 end - set ::Nagelfar(editFile) $filename - wm title .fv [file tail $filename] - - # Try to figure out eol style - set ch [open $filename r] - fconfigure $ch -translation binary - set data [read $ch 400] - close $ch - - set crCnt [expr {[llength [split $data \r]] - 1}] - set lfCnt [expr {[llength [split $data \n]] - 1}] - if {$crCnt == 0 && $lfCnt > 0} { - set ::Nagelfar(editFileTranslation) lf - } elseif {$crCnt > 0 && $crCnt == $lfCnt} { - set ::Nagelfar(editFileTranslation) crlf - } elseif {$lfCnt == 0 && $crCnt > 0} { - set ::Nagelfar(editFileTranslation) cr - } else { - set ::Nagelfar(editFileTranslation) auto - } - - #puts "EOL $::Nagelfar(editFileTranslation)" - - set ch [open $filename r] - set data [read $ch] - close $ch - if {$::Nagelfar(withCtext)} { - $w fastinsert end $data - } else { - $w insert end $data - } - } - - $w tag remove hl 1.0 end - $w tag add hl $lineNo.0 $lineNo.end - $w mark set insert $lineNo.0 - focus $w - set ::Nagelfar(lineNo) $lineNo - update - $w see insert - #after 1 {after idle {$::Nagelfar(editWin) see insert}} - if {$::Nagelfar(withCtext)} { - after idle [list $w highlight 1.0 end] - } -} - -proc saveFile {} { - if {[tk_messageBox -parent .fv -title "Save File" -type okcancel \ - -icon question \ - -message "Save file\n$::Nagelfar(editFile)"] != "ok"} { - return - } - if {$::Prefs(editFileBackup)} { - file copy -force -- $::Nagelfar(editFile) $::Nagelfar(editFile)~ - } - set ch [open $::Nagelfar(editFile) w] - fconfigure $ch -translation $::Nagelfar(editFileTranslation) - puts -nonewline $ch [$::Nagelfar(editWin) get 1.0 end-1char] - close $ch -} - -proc closeFile {} { - if {[info exists ::Nagelfar(editFileGeom)] || \ - ([info exists ::Nagelfar(editFileOrigGeom)] && \ - $::Nagelfar(editFileOrigGeom) != [wm geometry .fv])} { - set ::Nagelfar(editFileGeom) [wm geometry .fv] - } - - destroy .fv - set ::Nagelfar(editFile) "" -} - -proc clearAndPaste {} { - set w $::Nagelfar(editWin) - $w delete 1.0 end - focus $w - - if {$::tcl_platform(platform) == "windows"} { - event generate $w <> - } else { - $w insert 1.0 [selection get] - } -} - -proc checkEditWin {} { - set w $::Nagelfar(editWin) - - set script [$w get 1.0 end] - set ::Nagelfar(checkEdit) $script - doCheck - unset ::Nagelfar(checkEdit) -} - -###### -# Help -###### - -proc helpWin {w title} { - destroy $w - - toplevel $w - wm title $w $title - bind $w "destroy $w" - bind $w "destroy $w" - frame $w.f - button $w.b -text "Close" -command "destroy $w" -width 10 \ - -default active - pack $w.b -side bottom -pady 3 - pack $w.f -side top -expand y -fill both - focus $w - return $w.f -} - -proc makeAboutWin {} { - global version - - set w [helpWin .ab "About Nagelfar"] - - - text $w.t -width 45 -height 7 -wrap none -relief flat \ - -bg [$w cget -bg] - pack $w.t -side top -expand y -fill both - - $w.t insert end "A syntax checker for Tcl\n\n" - $w.t insert end "$version\n\n" - $w.t insert end "Made by Peter Spjuth\n" - $w.t insert end "E-Mail: peter.spjuth@gmail.com\n" - $w.t insert end "\nURL: http://nagelfar.berlios.de\n" - $w.t insert end "\nTcl version: [info patchlevel]" - set d [package provide tkdnd] - if {$d != ""} { - $w.t insert end "\nTkDnd version: $d" - } - catch {loadDatabases} - if {[info exists ::Nagelfar(dbInfo)] && $::Nagelfar(dbInfo) != ""} { - $w.t insert end "\nSyntax database: $::Nagelfar(dbInfo)" - } - set last [lindex [split [$w.t index end] "."] 0] - $w.t configure -height $last - $w.t configure -state disabled -} - -# Partial backslash-subst -proc mySubst {str} { - subst -nocommands -novariables [string map {\\\n \\\\\n} $str] -} - -# Insert a text file into a text widget. -# Any XML-style tags in the file are used as tags in the text window. -proc insertTaggedText {w file} { - set ch [open $file r] - set data [read $ch] - close $ch - - set tags {} - while {$data != ""} { - if {[regexp {^([^<]*)<(/?)([^>]+)>(.*)$} $data -> pre sl tag post]} { - $w insert end [mySubst $pre] $tags - set i [lsearch $tags $tag] - if {$sl != ""} { - # Remove tag - if {$i >= 0} { - set tags [lreplace $tags $i $i] - } - } else { - # Add tag - lappend tags $tag - } - set data $post - } else { - $w insert end [mySubst $data] $tags - set data "" - } - } -} - -proc makeDocWin {fileName} { - set w [helpWin .doc "Nagelfar Help"] - set t [Scroll both \ - text $w.t -width 80 -height 25 -wrap none -font ResultFont] - pack $w.t -side top -expand 1 -fill both - - # Set up tags - $t tag configure ul -underline 1 - - if {![file exists $::thisDir/doc/$fileName]} { - $t insert end "ERROR: Could not find doc file " - $t insert end \"$fileName\" - return - } - insertTaggedText $t $::thisDir/doc/$fileName - - #focus $t - $t configure -state disabled -} - -# Generate a file path relative to a dir -proc fileRelative {dir file} { - set dirpath [file split $dir] - set filepath [file split $file] - set newpath {} - - set dl [llength $dirpath] - set fl [llength $filepath] - for {set t 0} {$t < $dl && $t < $fl} {incr t} { - set f [lindex $filepath $t] - set d [lindex $dirpath $t] - if {![string equal $f $d]} break - } - # Return file if too unequal - if {$t <= 2 || ($dl - $t) > 3} { - return $file - } - for {set u $t} {$u < $dl} {incr u} { - lappend newpath ".." - } - return [eval file join $newpath [lrange $filepath $t end]] -} - -proc defaultGuiOptions {} { - catch {package require griffin} - - option add *Menu.tearOff 0 - if {[tk windowingsystem]=="x11"} { - option add *Menu.activeBorderWidth 1 - option add *Menu.borderWidth 1 - - option add *Listbox.exportSelection 0 - option add *Listbox.borderWidth 1 - option add *Listbox.highlightThickness 1 - option add *Font "Helvetica -12" - } - - if {$::tcl_platform(platform) == "windows"} { - option add *Panedwindow.sashRelief flat - option add *Panedwindow.sashWidth 4 - option add *Panedwindow.sashPad 0 - } -} -#---------------------------------------------------------------------- -# dbbrowser.tcl, Database browser -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -proc makeDbBrowserWin {} { - if {[winfo exists .db]} { - wm deiconify .db - raise .db - set w $::Nagelfar(dbBrowserWin) - } else { - toplevel .db - wm title .db "Nagelfar Database" - - set w [Scroll y text .db.t -wrap word \ - -width 80 -height 15 -font $::Prefs(editFileFont)] - set ::Nagelfar(dbBrowserWin) $w - $w tag configure all -lmargin2 2c - set f [frame .db.f -padx 3 -pady 3] - grid .db.f -sticky we - grid .db.t -sticky news - grid columnconfigure .db 0 -weight 1 - grid rowconfigure .db 1 -weight 1 - - label $f.l -text "Command" - entry $f.e -textvariable ::Nagelfar(dbBrowserCommand) -width 15 - button $f.b -text "Search" -command dbBrowserSearch -default active - - grid $f.l $f.e $f.b -sticky ew -padx 3 - grid columnconfigure $f 1 -weight 1 - - bind .db dbBrowserSearch - } -} - -proc dbBrowserSearch {} { - set cmd $::Nagelfar(dbBrowserCommand) - set w $::Nagelfar(dbBrowserWin) - - loadDatabases - $w delete 1.0 end - - # Must be at least one word char in the pattern - set pat $cmd* - if {![regexp {\w} $pat]} { - set pat "" - } - - foreach item [lsort -dictionary [array names ::syntax $pat]] { - $w insert end "\#\#nagelfar syntax [list $item]" - $w insert end " " - $w insert end $::syntax($item)\n - } - foreach item [lsort -dictionary [array names ::subCmd $pat]] { - $w insert end "\#\#nagelfar subcmd [list $item]" - $w insert end " " - $w insert end $::subCmd($item)\n - } - foreach item [lsort -dictionary [array names ::option $pat]] { - $w insert end "\#\#nagelfar option [list $item]" - $w insert end " " - $w insert end $::option($item)\n - } - foreach item [lsort -dictionary [array names ::return $pat]] { - $w insert end "\#\#nagelfar return [list $item]" - $w insert end " " - $w insert end $::return($item)\n - } - - if {[$w index end] eq "2.0"} { - $w insert end "No match!" - } - $w tag add all 1.0 end -} -#---------------------------------------------------------------------- -# registry.tcl, Support for Windows Registry -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -# Make a labelframe for one registry item -proc makeRegistryFrame {w label key newvalue} { - - set old {} - catch {set old [registry get $key {}]} - - set l [labelframe $w -text $label -padx 4 -pady 4] - - label $l.key1 -text "Key:" - label $l.key2 -text $key - label $l.old1 -text "Old value:" - label $l.old2 -text $old - label $l.new1 -text "New value:" - label $l.new2 -text $newvalue - - button $l.change -text "Change" -width 10 -command \ - "[list registry set $key {} $newvalue] ; \ - [list $l.change configure -state disabled]" - button $l.delete -text "Delete" -width 10 -command \ - "[list registry delete $key] ; \ - [list $l.delete configure -state disabled]" - if {[string equal $newvalue $old]} { - $l.change configure -state disabled - } - if {[string equal "" $old]} { - $l.delete configure -state disabled - } - grid $l.key1 $l.key2 - -sticky "w" -padx 4 -pady 4 - grid $l.old1 $l.old2 - -sticky "w" -padx 4 -pady 4 - grid $l.new1 $l.new2 - -sticky "w" -padx 4 -pady 4 - grid $l.delete - $l.change -sticky "w" -padx 4 -pady 4 - grid $l.change -sticky "e" - grid columnconfigure $l 2 -weight 1 -} - -# Registry dialog -proc makeRegistryWin {} { - global thisScript - - # Locate executable for this program - set exe [info nameofexecutable] - if {[regexp {^(.*wish)\d+\.exe$} $exe -> pre]} { - set alt $pre.exe - if {[file exists $alt]} { - set a [tk_messageBox -title "Nagelfar" -icon question \ - -title "Which Wish" -message \ - "Would you prefer to use the executable\n\ - \"$alt\"\ninstead of\n\ - \"$exe\"\nin the registry settings?" -type yesno] - if {$a eq "yes"} { - set exe $alt - } - } - } - - set top .reg - destroy $top - toplevel $top - wm title $top "Register Nagelfar" - - # Registry keys - - set key {HKEY_CLASSES_ROOT\.tcl\shell\Check\command} - set old {} - catch {set old [registry get {HKEY_CLASSES_ROOT\.tcl} {}]} - if {$old != ""} { - set key "HKEY_CLASSES_ROOT\\$old\\shell\\Check\\command" - } - - # Are we in a starkit? - if {[info exists ::starkit::topdir]} { - # In a starpack ? - set exe [file normalize $exe] - if {[string equal [file normalize $::starkit::topdir] $exe]} { - set myexe [list $exe] - } else { - set myexe [list $exe $::starkit::topdir] - } - } else { - if {[regexp {wish\d+\.exe} $exe]} { - set exe [file join [file dirname $exe] wish.exe] - if {[file exists $exe]} { - set myexe [list $exe] - } - } - set myexe [list $exe $thisScript] - } - - set valbase {} - foreach item $myexe { - lappend valbase \"[file nativename $item]\" - } - set valbase [join $valbase] - - set new "$valbase -gui \"%1\"" - makeRegistryFrame $top.d "Check" $key $new - - pack $top.d -side "top" -fill x -padx 4 -pady 4 - - button $top.close -text "Close" -width 10 -command [list destroy $top] \ - -default active - pack $top.close -side bottom -pady 4 - bind $top [list destroy $top] - bind $top [list destroy $top] -} - -# Add a registry item to a menu, if supported. -proc addRegistryToMenu {m} { - if {$::tcl_platform(platform) eq "windows"} { - if {![catch {package require registry}]} { - $m add separator - $m add command -label "Setup Registry" -underline 6 \ - -command makeRegistryWin - } - } -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2005, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# preferences.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -# Save default options -proc saveOptions {} { - if {[catch {set ch [open "~/.nagelfarrc" w]}]} { - errEcho "Could not create options file." - return - } - - foreach i [array names ::Prefs] { - puts $ch [list set ::Prefs($i) $::Prefs($i)] - } - close $ch -} - -# Fill in default options and load user's saved file -proc getOptions {} { - array set ::Prefs { - warnBraceExpr 2 - warnShortSub 1 - strictAppend 0 - forceElse 1 - noVar 0 - severity N - editFileBackup 1 - editFileFont {Courier 10} - resultFont {Courier 10} - editor internal - extensions {.tcl .test .adp .tk} - exitcode 0 - html 0 - htmlprefix "" - } - - # Do not load anything during test - if {[info exists ::_nagelfar_test]} return - - foreach candidate {.nagelfarrc ~/.nagelfarrc} { - if {[file exists $candidate]} { - interp create -safe loadinterp - interp expose loadinterp source - interp eval loadinterp source $candidate - array set ::Prefs [interp eval loadinterp array get ::Prefs] - interp delete loadinterp - break - } - } -} - -# Add an "Options" cascade to a menu -proc addOptionsMenu {m} { - $m add cascade -label "Options" -underline 0 -menu $m.mo - menu $m.mo - - $m.mo add cascade -label "Result Window Font" -menu $m.mo.mo - menu $m.mo.mo - $m.mo.mo add radiobutton -label "Small" \ - -variable ::Prefs(resultFont) -value "Courier 8" \ - -command {font configure ResultFont -size 8} - $m.mo.mo add radiobutton -label "Medium" \ - -variable ::Prefs(resultFont) -value "Courier 10" \ - -command {font configure ResultFont -size 10} - $m.mo.mo add radiobutton -label "Large" \ - -variable ::Prefs(resultFont) -value "Courier 14" \ - -command {font configure ResultFont -size 14} - - $m.mo add cascade -label "Editor" -menu $m.mo.med - menu $m.mo.med - $m.mo.med add radiobutton -label "Internal" \ - -variable ::Prefs(editor) -value internal - $m.mo.med add radiobutton -label "Emacs" \ - -variable ::Prefs(editor) -value emacs - $m.mo.med add radiobutton -label "Vim" \ - -variable ::Prefs(editor) -value vim - - if {$::tcl_platform(platform) == "windows"} { - $m.mo.med add radiobutton -label "Pfe" \ - -variable ::Prefs(editor) -value pfe - } - - $m.mo add separator - - $m.mo add cascade -label "Severity level" -menu $m.mo.ms - menu $m.mo.ms - $m.mo.ms add radiobutton -label "Show All (E/W/N)" \ - -variable ::Prefs(severity) -value N - $m.mo.ms add radiobutton -label {Show Warnings (E/W)} \ - -variable ::Prefs(severity) -value W - $m.mo.ms add radiobutton -label {Show Errors (E)} \ - -variable ::Prefs(severity) -value E - - $m.mo add checkbutton -label "Warn about shortened subcommands" \ - -variable ::Prefs(warnShortSub) - $m.mo add cascade -label "Braced expressions" -menu $m.mo.mb - menu $m.mo.mb - $m.mo.mb add radiobutton -label "Allow unbraced" \ - -variable ::Prefs(warnBraceExpr) -value 0 - $m.mo.mb add radiobutton -label {Allow 'if [cmd] {xxx}'} \ - -variable ::Prefs(warnBraceExpr) -value 1 - $m.mo.mb add radiobutton -label "Warn on any unbraced" \ - -variable ::Prefs(warnBraceExpr) -value 2 - $m.mo add checkbutton -label "Enforce else keyword" \ - -variable ::Prefs(forceElse) - $m.mo add checkbutton -label "Strict (l)append" \ - -variable ::Prefs(strictAppend) - $m.mo add checkbutton -label "Disable variable checking" \ - -variable ::Prefs(noVar) - - $m.mo add cascade -label "Script encoding" -menu $m.mo.me - menu $m.mo.me - $m.mo.me add radiobutton -label "Ascii" \ - -variable ::Nagelfar(encoding) -value ascii - $m.mo.me add radiobutton -label "Iso8859-1" \ - -variable ::Nagelfar(encoding) -value iso8859-1 - $m.mo.me add radiobutton -label "System ([encoding system])" \ - -variable ::Nagelfar(encoding) -value system - - - $m.mo add separator - $m.mo add command -label "Save Options" -command saveOptions - -} -#---------------------------------------------------------------------- -# Nagelfar, a syntax checker for Tcl. -# Copyright (c) 1999-2005, Peter Spjuth -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. -# -#---------------------------------------------------------------------- -# startup.tcl -#---------------------------------------------------------------------- -# 681841ad4a1a26488afde69b583fed85b564c9d7 -#---------------------------------------------------------------------- - -# Output usage info and exit -proc usage {} { - puts $::version - puts {Usage: nagelfar [options] scriptfile ... - -help : Show usage. - -gui : Start with GUI even when files are specified. - -s : Include a database file. (More than one is allowed.) - -encoding : Read script with this encoding. - -filter

: Any message that matches the glob pattern is suppressed. - -severity : Set severity level filter to N/W/E (default N). - -html : Generate html-output. - -prefix : Prefix for line anchors (html output) - -novar : Disable variable checking. - -WexprN : Sets expression warning level to N. - 2 (def) = Warn about any unbraced expression. - 1 = Don't warn on single commands. "if [apa] {...}" is ok. - -WsubN : Sets subcommand warning level to N. - 1 (def) = Warn about shortened subcommands. - -WelseN : Enforce else keyword. Default 1. - -strictappend : Enforce having an initialised variable in (l)append. - -tab : Tab size, default is 8. - -header : Create a "header" file with syntax info for scriptfiles. - -instrument : Instrument source file for code coverage. - -markup : Markup source file with code coverage result. - -quiet : Suppress non-syntax output. - -glob : Add matching files to scriptfiles to check. - -exitcode : Return status code 2 for any error or 1 for warning.} - exit -} - -# Initialise global variables with defaults. -proc StartUp {} { - set ::Nagelfar(db) {} - set ::Nagelfar(files) {} - set ::Nagelfar(gui) 0 - set ::Nagelfar(quiet) 0 - set ::Nagelfar(filter) {} - set ::Nagelfar(2pass) 1 - set ::Nagelfar(encoding) system - set ::Nagelfar(dbpicky) 0 - set ::Nagelfar(withCtext) 0 - set ::Nagelfar(instrument) 0 - set ::Nagelfar(header) "" - set ::Nagelfar(tabReg) { {0,7}\t| {8,8}} - set ::Nagelfar(tabSub) [string repeat " " 8] - set ::Nagelfar(tabMap) [list \t $::Nagelfar(tabSub)] - set ::Nagelfar(procs) {} - set ::Nagelfar(stop) 0 - if {![info exists ::Nagelfar(embedded)]} { - set ::Nagelfar(embedded) 0 - } - - getOptions -} - -# Procedure to perform a check when embedded. -proc synCheck {fpath dbPath} { - set ::Nagelfar(files) [list $fpath] - set ::Nagelfar(allDb) {} - set ::Nagelfar(allDbView) {} - set ::Nagelfar(allDb) [list $dbPath] - set ::Nagelfar(allDbView) [list [file tail $dbPath] "(app)"] - set ::Nagelfar(db) [list $dbPath] - set ::Nagelfar(embedded) 1 - set ::Nagelfar(chkResult) "" - doCheck - return $::Nagelfar(chkResult) -} - - -# Global code is only run first time to allow re-sourcing -if {![info exists gurka]} { - set gurka 1 - - StartUp - - if {[info exists _nagelfar_test]} return - # To use Nagelfar embedded, set ::Nagelfar(embedded) 1 - # before sourcing nagelfar.tcl. - if {$::Nagelfar(embedded)} return - - # Locate default syntax database(s) - set ::Nagelfar(allDb) {} - set ::Nagelfar(allDbView) {} - set apa {} - lappend apa [file join [pwd] syntaxdb.tcl] - eval lappend apa [glob -nocomplain [file join [pwd] syntaxdb*.tcl]] - - lappend apa [file join $thisDir syntaxdb.tcl] - eval lappend apa [glob -nocomplain [file join $thisDir syntaxdb*.tcl]] - - foreach file $apa { - if {[file isfile $file] && [file readable $file] && \ - [lsearch $::Nagelfar(allDb) $file] == -1} { - lappend ::Nagelfar(allDb) $file - if {[file dirname $file] == $::thisDir} { - lappend ::Nagelfar(allDbView) "[file tail $file] (app)" - } else { - lappend ::Nagelfar(allDbView) [fileRelative [pwd] $file] - } - } - } - - # Parse command line options - for {set i 0} {$i < $argc} {incr i} { - set arg [lindex $argv $i] - switch -glob -- $arg { - --h* - - -h - -hel* { - usage - } - -s { - incr i - set arg [lindex $argv $i] - if {[file isfile $arg] && [file readable $arg]} { - lappend ::Nagelfar(db) $arg - lappend ::Nagelfar(allDb) $arg - lappend ::Nagelfar(allDbView) $arg - } else { - # Look through allDb for a match - set found 0 - foreach db $::Nagelfar(allDb) { - if {$arg eq $db || $arg eq [file tail $db]} { - lappend ::Nagelfar(db) $db - set found 1 - break - } - } - if {!$found} { - puts stderr "Cannot read \"$arg\"" - } - } - } - -editor { - incr i - set arg [lindex $argv $i] - switch -glob -- $arg { - ema* {set ::Prefs(editor) emacs} - inte* {set ::Prefs(editor) internal} - vi* {set ::Prefs(editor) vim} - default { - puts stderr "Bad -editor option: \"$arg\"" - } - } - } - -encoding { - incr i - set enc [lindex $argv $i] - if {$enc eq ""} {set enc system} - if {[lsearch -exact [encoding names] $enc] < 0} { - puts stderr "Bad encoding name: \"$enc\"" - set enc system - } - set ::Nagelfar(encoding) $enc - } - -exitcode { - set ::Prefs(exitcode) 1 - } - -2pass { - set ::Nagelfar(2pass) 1 - } - -gui { - set ::Nagelfar(gui) 1 - } - -quiet { - set ::Nagelfar(quiet) 1 - } - -header { - incr i - set arg [lindex $argv $i] - set ::Nagelfar(header) $arg - # Put checks down as much as possible - array set ::Prefs { - warnBraceExpr 0 - warnShortSub 0 - strictAppend 0 - forceElse 0 - severity E - } - } - -instrument { - set ::Nagelfar(instrument) 1 - # Put checks down as much as possible - array set ::Prefs { - warnBraceExpr 0 - warnShortSub 0 - strictAppend 0 - forceElse 0 - noVar 1 - severity E - } - } - -markup { - incr i - if {$i < $argc} { - lappend ::Nagelfar(files) [lindex $argv $i] - } - instrumentMarkup [lindex $::Nagelfar(files) 0] - exit - } - -novar { - set ::Prefs(noVar) 1 - } - -dbpicky { # A debug thing to help make a more complete database - set ::Nagelfar(dbpicky) 1 - } - -Wexpr* { - set ::Prefs(warnBraceExpr) [string range $arg 6 end] - } - -Wsub* { - set ::Prefs(warnShortSub) [string range $arg 5 end] - } - -Welse* { - set ::Prefs(forceElse) [string range $arg 6 end] - } - -strictappend { - set ::Prefs(strictAppend) 1 - } - -filter { - incr i - addFilter [lindex $argv $i] - } - -severity { - incr i - set ::Prefs(severity) [lindex $argv $i] - if {![regexp {^[EWN]$} $::Prefs(severity)]} { - puts "Bad severity level '$::Prefs(severity)',\ - should be E/W/N." - exit - } - } - -html { - set ::Prefs(html) 1 - } - -prefix { - incr i - set ::Prefs(htmlprefix) [lindex $argv $i] - } - -tab { - incr i - set arg [lindex $argv $i] - if {![string is integer -strict $arg] || \ - $arg < 2 || $arg > 20} { - puts "Bad tab value '$arg'" - exit - } - set ::Nagelfar(tabReg) " {0,[expr {$arg - 1}]}\t| {$arg,$arg}" - set ::Nagelfar(tabSub) [string repeat " " $arg] - set ::Nagelfar(tabMap) [list \t $::Nagelfar(tabSub)] - } - -glob { - incr i - set files [glob -nocomplain [lindex $argv $i]] - set ::Nagelfar(files) [concat $::Nagelfar(files) $files] - } - -* { - puts "Unknown option $arg" - usage - } - default { - lappend ::Nagelfar(files) $arg - } - } - } - - # Use default database if none were given - if {[llength $::Nagelfar(db)] == 0} { - if {[llength $::Nagelfar(allDb)] != 0} { - lappend ::Nagelfar(db) [lindex $::Nagelfar(allDb) 0] - } - } - - # If we are on Windows and Tk is already loaded it means we run in - # wish, and there is no stdout. Thus non-gui is pointless. - if {!$::Nagelfar(gui) && $::tcl_platform(platform) eq "windows" && - [package provide Tk] ne ""} { - set ::Nagelfar(gui) 1 - } - - # If there is no file specified, try invoking a GUI - if {$::Nagelfar(gui) || [llength $::Nagelfar(files)] == 0} { - if {[catch {package require Tk}]} { - if {$::Nagelfar(gui)} { - puts stderr "Failed to start GUI" - exit 1 - } else { - puts stderr "No files specified" - exit 1 - } - } - # use ctext if available - if {![catch {package require ctext}]} { - if {![catch {package require ctext_tcl}]} { - if {[info procs ctext::setHighlightTcl] ne ""} { - set ::Nagelfar(withCtext) 1 - proc ctext::update {} {::update} - } - } - } - - catch {package require textSearch} - set ::Nagelfar(gui) 1 - makeWin - vwait forever - exit - } - - doCheck - - #_dumplogme - #if {[array size _stats] > 0} { - # array set _apa [array get _stats] - # parray _apa - # set sum 0 - # foreach name [array names _apa] { - # incr sum $_apa($name) - # } - # puts "Total $sum" - #} - exit [expr {$::Prefs(exitcode) ? $::Nagelfar(exitstatus) : 0}] -} diff --git a/etc/soft/nagelfar/nagelfar_changes b/etc/soft/nagelfar/nagelfar_changes deleted file mode 100644 index 21a3472..0000000 --- a/etc/soft/nagelfar/nagelfar_changes +++ /dev/null @@ -1,305 +0,0 @@ ---- ./nag 2010-10-24 00:33:30.000000000 +0600 -+++ ./nagelfar.tcl 2010-10-24 00:43:01.000000000 +0600 -@@ -317,7 +317,7 @@ - if {[string match "##nagelfar *" $str]} { - set rest [string range $str 11 end] - if {[catch {llength $rest}]} { -- errorMsg N "Bad list in ##nagelfar comment" $index -+ errorMsg W "Bad list in ##nagelfar comment" $index - return - } - if {[llength $rest] == 0} return -@@ -380,7 +380,7 @@ - } - } - default { -- errorMsg N "Bad type in ##nagelfar comment" $index -+ errorMsg W "Bad type in ##nagelfar comment" $index - return - } - } -@@ -455,7 +455,7 @@ - set i $ni - set si2 $i - } else { -- errorMsg N "Standalone {*} can be confusing. I recommend \"*\"." $i -+ errorMsg W "Standalone {*} can be confusing. I recommend \"*\"." $i - } - } - } -@@ -605,7 +605,7 @@ - } - set check [info exists option($cmd)] - if {!$check && $::Nagelfar(dbpicky)} { -- errorMsg N "DB: Missing options for command \"$cmd\"" 0 -+ errorMsg W "DB: Missing options for command \"$cmd\"" 0 - } - set i 0 - set used 0 -@@ -893,7 +893,7 @@ - return "" - } - # FIXA: Use markVariable -- if {![info exists knownVars(known,$var)] && !$::Prefs(noVar)} { -+ if {![info exists knownVars(known,$var)] && !$::Prefs(noVar) && ![regexp {[\w]*::[\w]+} $var]} { - if {[string match "*::*" $var]} { - set tail [namespace tail $var] - set ns [namespace qualifiers $var] -@@ -983,11 +983,11 @@ - if {[string equal $c "\]"] && $i == ($len - 1)} { - # Note unescaped bracket at end of word since it's - # likely to mean it should not be there. -- errorMsg N "Unescaped end bracket" [expr {$index + $i}] -+ errorMsg W "Unescaped end bracket" [expr {$index + $i}] - } elseif {[string equal $c "\""] && $i == ($len - 1)} { - # Note unescaped quote at end of word since it's - # likely to mean it should not be there. -- errorMsg N "Unescaped quote" [expr {$index + $i}] -+ errorMsg W "Unescaped quote" [expr {$index + $i}] - } - } - } else { -@@ -1047,7 +1047,7 @@ - # Warn if the called command is expr - set body [string range $str $si $i] - if {[string match "expr*" $body]} { -- errorMsg N "Expr called in expression" \ -+ errorMsg W "Expr called in expression" \ - [expr {$index + $si}] - } - parseBody $body [expr {$index + $si}] knownVars 1 -@@ -1089,7 +1089,7 @@ - while {[set si [string first \# $word $si]] >= 0} { - # Is it first in a line? - if {[string index $word [expr {$si - 1}]] eq "\n"} { -- errorMsg N "Suspicious \# char. Possibly a bad comment." \ -+ errorMsg W "Suspicious \# char. Possibly a bad comment." \ - [expr {$index + $si}] - break - } -@@ -1286,7 +1286,7 @@ - # corresponding object command - #decho "$tok $tokCount $mod" - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant -- errorMsg N "Non constant definition \"[lindex $argv $i]\".\ -+ errorMsg W "Non constant definition \"[lindex $argv $i]\".\ - Skipping." [lindex $indices $i] - } else { - set copyFrom [string range $mod 1 end] -@@ -1356,7 +1356,7 @@ - # FIXA: Maybe accept substitutions as part of namespace? - foreach ws [lrange $wordstatus $i $iplus2] { - if {($ws & 1) == 0} { -- errorMsg N "Non constant argument to proc \"[lindex $argv $i]\".\ -+ errorMsg W "Non constant argument to proc \"[lindex $argv $i]\".\ - Skipping." $index - return - } -@@ -1534,7 +1534,7 @@ - } - lappend constantsDontCheck $i - if {([lindex $wordstatus $i] & 1) == 0} { # Non constant -- errorMsg N "Non static subcommand to \"$cmd\"" \ -+ errorMsg W "Non static subcommand to \"$cmd\"" \ - [lindex $indices $i] - } else { - set arg [lindex $argv $i] -@@ -1564,7 +1564,7 @@ - } - } - } elseif {$::Nagelfar(dbpicky)} { -- errorMsg N "DB: Missing subcommands for \"$cmd\"" 0 -+ errorMsg W "DB: Missing subcommands for \"$cmd\"" 0 - } - # Are there any syntax definition for this subcommand? - set sub "$cmd $arg" -@@ -1578,7 +1578,7 @@ - set i $argc - break - } elseif {$::Nagelfar(dbpicky)} { -- errorMsg N "DB: Missing syntax for subcommand $sub" 0 -+ errorMsg W "DB: Missing syntax for subcommand $sub" 0 - } - } - incr i -@@ -1723,7 +1723,7 @@ - } - } - if {$wordtype ne "varName"} { -- errorMsg N "Suspicious variable name \"$var\"" $index -+ errorMsg W "Suspicious variable name \"$var\"" $index - } - return 0 - } -@@ -1942,7 +1942,7 @@ - } - # Detect bracketed command - if {[llength $words2] == 1 && [string index $cmd 0] eq "\["} { -- errorMsg N "Suspicious brackets around command" $index -+ errorMsg W "Suspicious brackets around command" $index - } - return - } -@@ -1987,7 +1987,7 @@ - set knownVars(namespace,$var) "" - set knownVars(type,$var) "" - } else { -- errorMsg N "Non constant argument to $cmd: $var" $index -+ errorMsg W "Non constant argument to $cmd: $var" $index - } - } - set noConstantCheck 1 -@@ -2022,7 +2022,7 @@ - } - lappend constantsDontCheck $i - } else { -- errorMsg N "Non constant argument to $cmd: $var" \ -+ errorMsg W "Non constant argument to $cmd: $var" \ - $index - } - } -@@ -2057,7 +2057,7 @@ - # Assume it is not a level unless odd number of args. - if {$oddA} { - # Warn here? FIXA -- errorMsg N "Non constant level to $cmd: \"$level\"" $index -+ errorMsg W "Non constant level to $cmd: \"$level\"" $index - set hasLevel 1 - set level "" - } else { -@@ -2077,7 +2077,7 @@ - foreach {other var} $tmp {wsO wsV} $tmpWS { - if {($wsV & 1) == 0} { - # The variable name contains substitutions -- errorMsg N "Suspicious upvar variable \"$var\"" $index -+ errorMsg W "Suspicious upvar variable \"$var\"" $index - } else { - set knownVars(known,$var) 1 - set knownVars(type,$var) "" -@@ -2282,7 +2282,7 @@ - } - if {[lindex $wordstatus $i] & 1 == 1} { - # First argument to switch is constant, suspiscious -- errorMsg N "String argument to switch is constant" \ -+ errorMsg W "String argument to switch is constant" \ - [lindex $indices $i] - } - incr i -@@ -2428,7 +2428,7 @@ - popNamespace - } else { - if {!$::Nagelfar(firstpass)} { # Messages in second pass -- errorMsg N "Only braced namespace evals are checked." \ -+ errorMsg W "Only braced namespace evals are checked." \ - [lindex $indices 0] - } - } -@@ -2496,7 +2496,7 @@ - $wordtype $indices] - } - } else { -- errorMsg N "No superclass found for 'next'" $index -+ errorMsg W "No superclass found for 'next'" $index - } - } - tailcall { -@@ -2554,7 +2554,7 @@ - set type [checkCommand $cmd $index $argv $wordstatus \ - $wordtype $indices] - } elseif {$::Nagelfar(dbpicky)} { -- errorMsg N "DB: Missing syntax for command \"$cmd\"" 0 -+ errorMsg W "DB: Missing syntax for command \"$cmd\"" 0 - } - } - } -@@ -2725,7 +2725,7 @@ - if {$tmp != $closeBrace} { - # Only do this if there is a free open brace - if {[regexp "\{\n" $tryline]} { -- errorMsg N "Close brace not aligned with line\ -+ errorMsg W "Close brace not aligned with line\ - [calcLineNo $index] ($tmp $closeBrace)" \ - $closeBraceIx - } -@@ -2743,7 +2743,7 @@ - # If it does not end the statement, there is probably a - # brace mismatch. - # When inside a namespace eval block, this is probably ok. -- errorMsg N "Found non indented close brace that did not end\ -+ errorMsg W "Found non indented close brace that did not end\ - statement." $closeBraceIx - contMsg "This may indicate a brace mismatch." - } -@@ -2820,7 +2820,7 @@ - foreach statement [lrange $statements 0 end-1] \ - stmtIndex [lrange $indices 0 end-1] { - if {[string index $statement end] eq "\n"} { -- errorMsg N "Newline in command substitution" $stmtIndex -+ errorMsg W "Newline in command substitution" $stmtIndex - break - } - } -@@ -2863,7 +2863,7 @@ - if {[llength $a] > 1} { - set seenDefault 1 - } elseif {$seenDefault && !$::Nagelfar(firstpass) && $var ne "args"} { -- errorMsg N "Non-default arg after default arg" $indexArgs -+ errorMsg W "Non-default arg after default arg" $indexArgs - # Reset to avoid further messages - set seenDefault 0 - } -@@ -2882,14 +2882,14 @@ - # Check for non-last "args" - set i [lsearch $procArgs "args"] - if {$i >= 0 && $i != [llength $procArgs] - 1} { -- errorMsg N "Argument 'args' used before last, which can be confusing" \ -+ errorMsg W "Argument 'args' used before last, which can be confusing" \ - $indexArgs - } - # Check for duplicates - set l1 [lsort $procArgs] - set l2 [lsort -unique $procArgs] - if {$l1 ne $l2} { -- errorMsg N "Duplicate proc arguments" $indexArgs -+ errorMsg W "Duplicate proc arguments" $indexArgs - } - } - } -@@ -3040,7 +3040,7 @@ - if {$isMethod} { - set currentObj [currentObject] - if {$currentObj eq ""} { -- errorMsg N "Method definition without a current object" \ -+ errorMsg W "Method definition without a current object" \ - [lindex $indices 0] - set isMethod 0 - } else { -@@ -3317,7 +3317,7 @@ - } - if {!$found} { - # Close brace is reported elsewhere -- if {$cmd ne "\}"} { -+ if {$cmd ne "\}" && ![regexp {::} $cmd]} { - # Different messages depending on name - if {[regexp {^(?:(?:[\w',:.]+)|(?:%W))$} $cmd]} { - errorMsg W "Unknown command \"$cmd\"" $index -@@ -3363,7 +3363,7 @@ - parseScript $script - if {$i >= 0} { - # Add a note about the Ctrl-Z -- errorMsg N "Aborted script due to end-of-file marker" \ -+ errorMsg W "Aborted script due to end-of-file marker" \ - [expr {[string length $::instrumenting(script)] - 1}] - } - flushMsg -@@ -3876,9 +3876,7 @@ - } else { - foreach f $::Nagelfar(files) { - if {$::Nagelfar(stop)} break -- if {$::Nagelfar(gui) || [llength $::Nagelfar(files)] > 1} { -- set ::currentFile $f -- } -+ set ::currentFile $f - set syntaxfile [file rootname $f].syntax - if {[file exists $syntaxfile]} { - if {!$::Nagelfar(quiet)} { diff --git a/etc/soft/nagelfar/syntaxbuild.tcl b/etc/soft/nagelfar/syntaxbuild.tcl deleted file mode 100644 index 31c0e18..0000000 --- a/etc/soft/nagelfar/syntaxbuild.tcl +++ /dev/null @@ -1,808 +0,0 @@ -# This script is intended to be run in a Tcl interpreter to extract -# information for the Nagelfar syntax checker. -# -# This file contains hardcoded syntax info for many commands that it -# adds to the resulting syntax database, plus it tries to extract info -# from the interpreter about things like subcommands. - -# Autoload stuff to have them available -catch {parray} ; catch {tk_dialog} ; catch {package require msgcat} -foreach gurkmeja [array names auto_index] { - if {[info procs $gurkmeja] == ""} { - catch {eval $auto_index($gurkmeja)} - } -} -if {[info exists gurkmeja]} { - unset gurkmeja -} - - -# First get some data about the system - -set ::kG [lsort [info globals]] -set ::kC [info commands] -foreach pat {{tcl::[a-z]*} {msgcat::[a-z]*} {oo::[a-z]*}} { - foreach p [info commands $pat] { - if {[string match ::* $p]} { - set p [string range $p 2 end] - } - lappend ::kC $p - } -} - -# Collect exported namespace commands -if 0 { # Not working yet - set todo [namespace children ::] - while {[llength $todo] > 0} { - set ns [lindex $todo 0] - set todo [lrange $todo 1 end] - eval lappend todo [namespace children $ns] - - set exports [namespace eval $ns {namespace export}] - foreach pat $exports { - foreach p [info commands ${ns}::$pat] { - # Do not include the first :: in the name - if {[string match ::* $p]} { - set p [string range $p 2 end] - } - lappend ::kC $p - } - } - } -} - -# Function to get an option or subcommand list from an error message. -proc getSubCmds {args} { - catch {uplevel 1 $args} err - - lappend regexps {option .* must be (.*)$} - lappend regexps {option .* should be one of (.*)$} - lappend regexps {bad .* must be (.*)$} - lappend regexps {: must be (.*)$} - lappend regexps {: should be (.*)$} - - foreach re $regexps { - if {[regexp $re $err -> apa]} { - regsub -all {( or )|(, or )|(, )} $apa " " apa - return [lsort -dictionary [lrange $apa 0 end]] - } - } - #puts "Error '$err' from '$args'" - return {} -} - -# Create a syntax description for a procedure -proc createSyntax {procName} { - set args [info args $procName] - - set min 0 - set unlim 0 - - if {[lindex $args end] == "args"} { - set unlim 1 - } - set i 1 - foreach a $args { - if {$a != "args"} { - if {![info default $procName $a dummy]} { - set min $i - } - } - incr i - } - if {$unlim} { - set result "r $min" - } elseif {$min == [llength $args]} { - set result $min - } else { - set result [list r $min [llength $args]] - } - return $result -} - -proc markCmdAsKnown {args} { - foreach cmd $args { - if {[lsearch $::kC $cmd] == -1} { - lappend ::kC $cmd - } - } -} - -# Build a syntax database and write it to a channel -proc buildDb {ch} { - set patch [info patchlevel] - set ver [package present Tcl] - - puts $ch "# Automatically generated syntax database." - puts $ch "" - - set useTk [expr {![catch {package present Tk}]}] - set dbstring "Tcl $patch $::tcl_platform(platform)" - if {$useTk} { - append dbstring ", Tk $::tk_patchLevel" - if {![catch {tk windowingsystem}]} { - append dbstring " [tk windowingsystem]" - } - } - - # Below is the hardcoded syntax for many core commands. - # It is defined using the "language" below. - # TODO: Add all core commands. - - # An entry should be a valid list of tokens as described below. - - # If the first token ends with : it means that there are different - # syntax descriptions for different number of arguments. - # Any token ending with : starts a syntax for the number of arguments - # that the number preceding it says. A lone : starts the default syntax. - # Example "1: x 2: n n : e x*" - - # If a token is an integer, just check the number of arguments against it. - # r min ?max? Specifies a range for number of arguments - - # x Any - # o Option, i.e anything starting with - - # p Option+Any (p as in option Pair) - # s Subcommand - # d Definition. That arg defines a new command - # If followed by =cmd, it copies syntax from cmd. - # e Expression - # E Expression that should be in braces - # c Code, checked in surrounding context - # cg Code, checked in global context - # cn Code, checked in virtual namespace - # cl Code, checked in its own local context - # cv Code, checked in its own local context, preceded by variable list - # n, v and l all marks variable names. Those arguments will not be - # checked against known variables to detect missing $. - # n The variable does not have to exist, and is set by the command. - # v The variable must exist. It is not marked as set. - # l Does not have to exist. It will be marked as known, but not set. - - # Modifiers that apply to some of the above - # ? Zero or One - # * Zero or more - # . One or nothing at all - - # * after x swallows all the rest and must be last - # s may only have . - # e and c may not have any modifier - - # If a syntax for a subcommand is defined, it is used to check the rest - - - # Syntax for Tcl core commands - - set syntax(after) "r 1" - # FIXA: handle after's id/subcommand thing. - set syntax(append) "n x*" - set syntax(array) "s v x?" - set syntax(array\ exists) "l" - set syntax(array\ names) "v x? x?" - set syntax(array\ set) "n x" - set syntax(array\ size) "v" - set syntax(array\ statistics) "v" - set syntax(array\ unset) "l x?" - #set syntax(bgerror) 1 - set syntax(binary) "s x*" - set syntax(binary\ scan) "x x n n*" - set syntax(break) 0 - set syntax(case) "x*" - set syntax(catch) "c n?" - set syntax(cd) "r 0 1" - set syntax(clock) "s x*" - set syntax(clock\ clicks) "o?" - set syntax(clock\ format) "x p*" - set syntax(clock\ scan) "x p*" - set syntax(clock\ seconds) 0 - set syntax(close) 1 - set syntax(concat) "r 0" - set syntax(continue) 0 - set syntax(encoding) "s x*" - set syntax(encoding\ convertfrom) "r 1 2" - set syntax(encoding\ convertto) "r 1 2" - set syntax(encoding\ names) 0 - set syntax(encoding\ system) "r 0 1" - set syntax(eof) 1 - set syntax(error) "r 1 3" - set special(eval) 1 - set syntax(exec) "o* x x*" - set syntax(exit) "r 0 1" - set special(expr) 1 - set syntax(fblocked) 1 - set syntax(fconfigure) "x o. x. p*" - set syntax(fcopy) "x x p*" - set syntax(file) "s x*" - set syntax(file\ atime) "x x?" - set syntax(file\ attributes) "x o. x. p*" - set syntax(file\ channels) "x?" - set syntax(file\ copy) "o* x x x*" - set syntax(file\ delete) "o* x x*" - set syntax(file\ dirname) "x" - set syntax(file\ executable) "x" - set syntax(file\ exists) "x" - set syntax(file\ extension) "x" - set syntax(file\ isdirectory) "x" - set syntax(file\ isfile) "x" - set syntax(file\ join) "x x*" - set syntax(file\ link) "o? x x?" - set syntax(file\ lstat) "x n" - set syntax(file\ mkdir) "x x*" - set syntax(file\ mtime) "x x?" - set syntax(file\ nativename) "x" - set syntax(file\ normalize) "x" - set syntax(file\ owned) "x" - set syntax(file\ pathtype) "x" - set syntax(file\ readable) "x" - set syntax(file\ readlink) "x" - set syntax(file\ rename) "o* x x x*" - set syntax(file\ rootname) "x" - set syntax(file\ separator) "x?" - set syntax(file\ size) "x" - set syntax(file\ split) "x" - set syntax(file\ stat) "x n" - set syntax(file\ system) "x" - set syntax(file\ tail) "x" - set syntax(file\ type) "x" - set syntax(file\ volumes) 0 - set syntax(file\ writable) "x" - set syntax(fileevent) "x x x?" - set syntax(flush) 1 - set syntax(for) "c E c c" - set special(foreach) 1 - set syntax(format) "r 1" - set syntax(gets) "x n?" - set syntax(glob) "o* x x*" - set special(global) 1 - # "if" is handled specially, but is added here to not disturb header gen. - set syntax(if) "e c" - set syntax(incr) "v x?" - set syntax(info) "s x*" ;# FIXA: All subcommands - set syntax(info\ exists) "l" - set syntax(info\ default) "x x n" - # "interp" is handled specially - set syntax(interp) "s x*" - set syntax(interp\ invokehidden) "x o* x x*" - set syntax(join) "r 1 2" - set syntax(lappend) "n x*" - if {[catch {lindex apa 0 0}]} { - set syntax(lindex) 2 ;# Pre 8.4 - } else { - set syntax(lindex) "r 2" - } - set syntax(linsert) "r 3" - set syntax(list) "r 0" - set syntax(llength) 1 - set syntax(load) "r 1 3" - set syntax(lrange) 3 - set syntax(lreplace) "r 3" - if {[catch {lsearch -all -glob apa bepa}]} { - set syntax(lsearch) "o? x x" ;# Pre 8.4 - } else { - set syntax(lsearch) "o* x x" - } - set syntax(lset) "n x x x*" - set syntax(lsort) "o* x" - # "namespace" is handled specially - set syntax(namespace) "s x*" ;# FIXA: All subcommands - set syntax(namespace\ import) "o* x*" - set syntax(namespace\ which) "o* x?" - set option(namespace\ which) "-variable -command" - set option(namespace\ which\ -variable) v - set syntax(open) "r 1 3" - # "package" is handled specially - set syntax(package) "s x*" ;# FIXA: All subcommands - set syntax(pid) "r 0 1" - set syntax(proc) dp - set syntax(puts) "1: x : o? x x?" - set syntax(pwd) 0 - set syntax(read) "r 1 2" - set syntax(regexp) "o* x x n*" - set syntax(regsub) "o* x x x n?" - set syntax(rename) 2 ;# Maybe treat rename specially? - set syntax(return) "p* x?" - set syntax(scan) "x x n*" - set syntax(seek) "r 2 3" - set syntax(set) "1: v : n x" - set syntax(socket) "r 2" - set syntax(source) 1 - set syntax(split) "r 1 2" - set syntax(string) "s x x*" - set syntax(string\ bytelength) 1 - set syntax(string\ compare) "o* x x" - set syntax(string\ equal) "o* x x" - set syntax(string\ first) "r 2 3" - set syntax(string\ index) 2 - set syntax(string\ is) "s o* x" - set syntax(string\ last) "r 2 3" - set syntax(string\ length) 1 - set syntax(string\ map) "o? x x" - set syntax(string\ match) "o? x x" - set syntax(string\ range) 3 - set syntax(string\ repeat) 2 - set syntax(string\ replace) "r 3 4" - set syntax(string\ tolower) "r 1 3" - set syntax(string\ totitle) "r 1 3" - set syntax(string\ toupper) "r 1 3" - set syntax(string\ trim) "r 1 2" - set syntax(string\ trimleft) "r 1 2" - set syntax(string\ trimright) "r 1 2" - set syntax(string\ wordend) 2 - set syntax(string\ wordstart) 2 - set syntax(subst) "o* x" - set special(switch) 1 - set syntax(tell) 1 - set syntax(time) "c x?" - set syntax(trace) "s x x*" - set syntax(trace\ add) "s x x x" - set syntax(trace\ add\ command) "x x c3" - set syntax(trace\ add\ execution) "x x c2" - set syntax(trace\ add\ variable) "v x c3" - set syntax(trace\ remove) "s x x x" - set syntax(trace\ remove\ command) "x x x" - set syntax(trace\ remove\ execution) "x x x" - set syntax(trace\ remove\ variable) "v x x" - set syntax(trace\ info) "s x x x" - set syntax(trace\ info\ command) "x" - set syntax(trace\ info\ execution) "x" - set syntax(trace\ info\ variable) "v" - set syntax(trace\ variable) "n x x" - set syntax(trace\ vinfo) "l" - set syntax(trace\ vdelete) "v x x" - set syntax(unset) "o* l l*" - set syntax(update) "s." - set special(uplevel) 1 - set special(upvar) 1 - set special(variable) 1 - set syntax(vwait) "n" - set syntax(while) "E c" - - # Things added in 8.5 - if {[info commands dict] ne ""} { - set syntax(dict) "s x*" - set syntax(dict\ append) "n x x*" - set syntax(dict\ incr) "n x x*" - set syntax(dict\ filter) "x x x" - set syntax(dict\ lappend) "n x x*" - set syntax(dict\ set) "n x x*" - set syntax(dict\ unset) "n x x*" - # FIXA: handle this style: - set syntax(dict\ update) "n x x x* c" - set syntax(dict\ with) "n x* c" - # FIXA: handle variables in dict for - set syntax(dict\ for) "x x c" - - # Initialising incr - set syntax(incr) "n x?" - set syntax(lassign) "x n n*" - set syntax(lrepeat) "r 2" - set syntax(lreverse) "1" - set syntax(string\ reverse) "1" - set syntax(unload) "o* x x*" - set syntax(chan) "s x*" - set syntax(chan\ blocked) "x" - set syntax(chan\ close) "x" - set syntax(chan\ configure) "x o. x. p*" - set syntax(chan\ copy) "x x p*" - set syntax(chan\ create) "x x" - set syntax(chan\ eof) "x" - set syntax(chan\ event) "x x cg?" - set syntax(chan\ flush) "x" - set syntax(chan\ gets) "x n?" - set syntax(chan\ names) "x?" - set syntax(chan\ pending) "x x" - set syntax(chan\ postevent) "x x" - set syntax(chan\ puts) "1: x : o? x x?" - set syntax(chan\ read) "x x?" - set syntax(chan\ seek) $syntax(seek) - set syntax(chan\ tell) $syntax(tell) - set syntax(chan\ truncate) "x x?" - set syntax(apply) "x x*" - set syntax(source) "p* x" - set option(interp\ invokehidden\ -namespace) 1 - } - - # Things added in 8.6 - if {[info commands try] ne ""} { - # Changed commands - set syntax(catch) "c n? n?" ;# FIXA make a test for this - set syntax(close) "x x?" - set syntax(chan\ close) "x x?" - set syntax(dict\ filter) "x x x*" - # Do nothing gracefully - set syntax(file\ delete) "o* x*" - set syntax(file\ mkdir) "x*" - set syntax(glob) "o* x*" - set syntax(lassign) "x n*" - set syntax(linsert) "r 2" - set syntax(lrepeat) "r 1" - # New subcommands - set syntax(binary\ decode) "s x*" - set syntax(binary\ decode\ base64) "o* x" - set syntax(binary\ decode\ hex) "o* x" - set syntax(binary\ decode\ uuencode) "o* x" - set syntax(binary\ encode) "s x*" - set syntax(binary\ encode\ base64) "p* x" - set syntax(binary\ encode\ hex) "x" - set syntax(binary\ encode\ uuencode) "p* x" - set syntax(chan\ pipe) 0 - set syntax(chan\ pop) "x" - set syntax(chan\ push) "x c" - set syntax(file\ tempfile) "n? x?*" - set syntax(info\ coroutine) 0 - set syntax(interp\ cancel) "o* x? x?" - # New commands - set syntax(try) "r 0" - set syntax(throw) "2" - set syntax(coroutine) "x x x*" - set special(tailcall) 1 - set special(next) 1 - set syntax(yield) "x?" - set syntax(zlib) "s x*" - set syntax(zlib\ adler32) "x x?" - set syntax(zlib\ compress) "x x?" - set syntax(zlib\ crc32) "x x?" - set syntax(zlib\ decompress) "x x?" - set syntax(zlib\ deflate) "x x?" - set syntax(zlib\ gzip) "x p*" - set syntax(zlib\ gunzip) "x p*" - set syntax(zlib\ inflate) "x x?" - set syntax(zlib\ push) "s x*" - set syntax(zlib\ stream) "s x*" - set syntax(tcl::prefix) "s x*" - set syntax(tcl::prefix\ all) "x x" - set syntax(tcl::prefix\ longest) "x x" - set syntax(tcl::prefix\ match) "o* x x" - set option(tcl::prefix\ match\ -message) x - set option(tcl::prefix\ match\ -error) x - set syntax(oo::class) "s x*" - set syntax(oo::class\ create) "do=_stdclass_oo cn?" - set syntax(oo::class\ create::constructor) dk ;# Define constructor - set syntax(oo::class\ create::superclass) di ;# Define inheritance - set syntax(oo::class\ create::method) "dm" ;# Define method - set syntax(oo::class\ create::destructor) c - set syntax(_stdclass_oo) "s x*" - set subCmd(_stdclass_oo) "create new destroy variable" - set syntax(_stdclass_oo\ create) "dc=_obj,_stdclass_oo x?" - set return(_stdclass_oo\ create) _obj,_stdclass_oo - set syntax(_stdclass_oo\ new) 0 - set return(_stdclass_oo\ new) _obj,_stdclass_oo - set syntax(_stdclass_oo\ destroy) 0 - set syntax(_stdclass_oo\ variable) n* - set syntax(info\ object) "s x x*" - set syntax(info\ class) "s x x*" - set syntax(oo::copy) "x x?" - - # FIXA: all oo::define - set syntax(oo::define) "2: x cn : x s x x*" - set syntax(oo::objdefine) "2: x cn : x s x x*" - set syntax(oo::define::method) "x cv" - set syntax(oo::objdefine::method) "x cv" - set syntax(oo::define\ method) "x cv" - set syntax(oo::objdefine\ method) "x cv" - set syntax(oo::define::constructor) "cv" - set syntax(oo::objdefine::constructor) "cv" - set syntax(oo::define\ constructor) "cv" - set syntax(oo::objdefine\ constructor) "cv" - set syntax(oo::define::denstructor) "cl" - set syntax(oo::objdefine::destructor) "cl" - set syntax(oo::define\ destructor) "cl" - set syntax(oo::objdefine\ destructor) "cl" - set syntax(oo::define::forward) "x x x*" - set syntax(oo::objdefine::forward) "x x x*" - set syntax(oo::define::unexport) "x x*" - set syntax(oo::objdefine::unexport) "x x*" - - set syntax(oo::object) "s x*" ;# FIXA? - # Set up basic checking of self/my - set syntax(my) "s x*" - set syntax(my\ variable) "n*" - set syntax(self) "s?" - lappend ::kC self my - oo::class create miffo { - constructor {} { - upvar 1 subCmd subCmd - set subCmd(self) [getSubCmds self gurkmeja] - } - } - # Run constructor to get info about self - [miffo new] destroy - # New options - set option(lsort\ -stride) 1 - } - - - # Some special Tcl commands - set syntax(dde) "o? s x*" ;# FIXA: is this correct? - set syntax(history) "s x*" - set syntax(parray) "v x?" - - # FIXA: Type checking is still experimental - set return(linsert) list - set return(list) list - set return(llength) int - set return(lrange) list - set return(lreplace) list - set return(lsort) list - - # Syntax for Tk commands - - if {$useTk} { - set syntax(bell) "o* x*" - set syntax(bind) "x x? cg?" - set syntax(bindtags) "x x?" - set syntax(clipboard) "s x*" - set syntax(console) "r 1" - set syntax(destroy) "x*" - set syntax(event) "s x*" - set syntax(focus) "o? x?" - set syntax(font) "s x*" - set syntax(image) "s x*" - set syntax(grab) "x x*" ;# FIXA, how to check subcommands here? - set syntax(grid) "x x*" ;# FIXA, how to check subcommands here? - set syntax(lower) "x x?" - set syntax(option) "s x*" - set syntax(pack) "x x*" - set syntax(place) "x x*" - set syntax(raise) "x x?" - set syntax(selection) "s x*" - set syntax(send) "o* x x x*" - set syntax(tk) "s x*" - set syntax(tkwait) "s x" - set syntax(tkwait\ variable) "l" ;# Global variable? - set syntax(winfo) "s x x*" - set syntax(wm) "s x x*" - - set syntax(tk_chooseColor) "p*" - set syntax(tk_chooseDirectory) "p*" - #set syntax(tk_dialog) "r 6" - set syntax(tk_getOpenFile) "p*" - set syntax(tk_getSaveFile) "p*" - set syntax(tk_messageBox) "p*" - set syntax(tk_popup) "r 3 4" - set syntax(.) "s x*" - set syntax(.\ configure) "o. x. p*" - set syntax(.\ cget) "o" - - # FIXA: Starting on better Tk support - set classCmds {frame entry label button checkbutton radiobutton \ - listbox labelframe spinbox panedwindow toplevel menu message \ - scrollbar text canvas scale menubutton} - # Handle tk::xxx usage - foreach cmd $classCmds { - if {[info commands tk::$cmd] ne ""} { - lappend classCmds tk::$cmd - } - } - if {[info commands ttk::frame] ne ""} { - lappend classCmds ttk::scale ttk::label ttk::panedwindow - lappend classCmds ttk::separator ttk::menubutton - lappend classCmds ttk::entry ttk::radiobutton ttk::frame - lappend classCmds ttk::labelframe ttk::button ttk::sizegrip - lappend classCmds ttk::combobox ttk::notebook - lappend classCmds ttk::progressbar ttk::checkbutton - lappend classCmds ttk::treeview ttk::scrollbar - set syntax(ttk::style) "s x*" - set syntax(ttk::style\ configure) "x o. x. p*" - set syntax(ttk::style\ map) "x p*" - set syntax(ttk::style\ lookup) "r 2 4" - set syntax(ttk::style\ layout) "x x?" - set syntax(ttk::style\ element) "s x*" - set syntax(ttk::style\ element\ create) "x x x*" - set syntax(ttk::style\ element\ names) 0 - set syntax(ttk::style\ element\ options) x - set syntax(ttk::style\ theme) "s x*" - set syntax(ttk::style\ theme\ create) "x p*" - set syntax(ttk::style\ theme\ settings) 2 - set syntax(ttk::style\ theme\ names) 0 - set syntax(ttk::style\ theme\ use) x - set syntax(ttk::themes) x? - set syntax(ttk::setTheme) x - markCmdAsKnown ttk::style ttk::themes ttk::setTheme - } - foreach class $classCmds { - destroy .w - if {[catch {$class .w}]} continue - markCmdAsKnown $class - set syntax($class) "x p*" - set return($class) _obj,$class - set option($class) {} - foreach opt [.w configure] { - set opt [lindex $opt 0] - lappend option($class) $opt - if {[string match *variable $opt]} { - set option($class\ $opt) n - set option(_obj,$class\ configure\ $opt) n - } - } - set syntax(_obj,$class) "s x*" - set subCmd(_obj,$class) [getSubCmds .w gurkmeja] - set syntax(_obj,$class\ configure) "o. x. p*" - set option(_obj,$class\ configure) $option($class) - set syntax(_obj,$class\ cget) "o" - set option(_obj,$class\ cget) $option($class) - switch $class { - listbox { - set syntax(_obj,$class\ selection) "s x x?" - set subCmd(_obj,$class\ selection) \ - [getSubCmds .w selection gurkmeja 0] - } - } - } - set option(.\ configure) $option(toplevel) - set option(.\ cget) $option(toplevel) - } - - # Build a database of options and subcommands - - # subCmd(cmd) contains a list of all allowed subcommands - - # Get subcommands for commands that can't use the standard loop below - set subCmd(wm) [getSubCmds wm gurkmeja .] - - # Get subcommands for any commands defining "s" - foreach cmd [array names syntax] { - if {[info exists subCmd($cmd)]} continue - set syn $syntax($cmd) - set oi [lsearch -glob $syn "s*"] - if {$oi >= 0} { - set syn [lreplace $syn $oi $oi gurkmeja] - # If the subcmd is after a :, handle it - set ci [lsearch -exact $syn ":"] - if {$ci >= 0 && $ci < $oi} { - set syn [lrange $syn [expr {$ci + 1}] end] - } - set opts [eval getSubCmds $cmd $syn] - if {[llength $opts] > 0} { - set subCmd($cmd) $opts - #puts "AutoSub: $cmd $subCmd($cmd)" - } else { - #puts "Failed AutoSub: $cmd $syn" - } - } - } - - # option(cmd) contains a list of all allowed options - # option(cmd subcmd) defines options for subcommands - - # Get options for commands that can't use the standard loop below. - set option(switch) [getSubCmds switch -gurkmeja x x] - set option(fconfigure) [getSubCmds fconfigure stdin -gurkmeja] - set option(fcopy) [getSubCmds fcopy stdin stdout -gurkmeja x] - set option(unset) [list -nocomplain --] - set option(clock\ format) [getSubCmds clock format 1 -gurkmeja x] - - # Add additonal fconfigure, known for serial channels - lappend option(fconfigure) -mode -handshake -queue -timeout -ttycontrol -ttystatus -xchar -pollinterval -sysbuffer -lasterror - # For socket channels - lappend option(fconfigure) -error -peername -sockname - set option(fconfigure) [lsort -uniq -dictionary $option(fconfigure)] - - # Get options for any commands defining "o" or "p" - foreach cmd [array names syntax] { - if {[info exists option($cmd)]} continue - set syn $syntax($cmd) - if {[set i [lsearch -exact $syn ":"]] >= 0} { - # Handle a syn like "1: x : o? x x?" - # Just do the it the simple way of ignoring all but the last - set syn [lrange $syn [expr {$i + 1}] end] - } - set oi [lsearch -glob $syn "o*"] - if {$oi >= 0} { - set syn [lreplace $syn $oi $oi -gurkmeja] - } - set pi [lsearch -glob $syn "p*"] - if {$pi >= 0} { - set syn [lreplace $syn $pi $pi -gurkmeja apa] - } - if {$oi >= 0 || $pi >= 0} { - set opts [eval getSubCmds $cmd $syn] - if {[llength $opts] > 0} { - set option($cmd) $opts - #puts "Autoopt: $cmd $option($cmd)" - } else { - #puts "Failed Autoopt: $cmd" - } - } - } - - # A fix since puts still gives an unhelpful error - if {![info exists option(puts)] || [lsearch $option(puts) "-nonewline"] < 0} { - set option(puts) [list -nonewline] - # Also chan puts if present - if {[info exists syntax(chan\ puts)]} { - set option(chan\ puts) [list -nonewline] - } - } - - # The default for options is not to take a value unless 'p' is - # used in the syntax definition. - # If option(cmd opt) is set, the option is followed by a value. - # The value of option(cmd opt) may also be any of the syntax chars - # c/n/v/l and will be used to check the option. - set option(lsort\ -index) 1 - set option(lsort\ -command) 1 - set option(lsearch\ -index) 1 - set option(lsearch\ -start) 1 - set option(string\ is\ -failindex) n - set option(string\ compare\ -length) 1 - set option(string\ equal\ -length) 1 - set option(regexp\ -start) 1 - set option(regsub\ -start) 1 - set option(glob\ -directory) 1 - set option(glob\ -path) 1 - set option(glob\ -types) 1 - set option(send\ -displayof) 1 - - # Clean up unused options - foreach item [array names option] { - if {[string match "-*" [lindex $item end]]} { - set opt [lindex $item end] - set cmd [lrange $item 0 end-1] - if {[lsearch -exact $option($cmd) $opt] < 0} { - #puts "Deleting option($item)" - unset option($item) - } - } - } - - # Build syntax info for procs - foreach apa $::kC { - if {![info exists syntax($apa)]} { - # Is it a proc? - if {[info procs $apa] != ""} { - set syntax($apa) [createSyntax $apa] - } elseif {![info exists special($apa)]} { - # Debug helper - #puts "No syntax defined for cmd '$apa'" - } - } - } - - # Output the data - puts $ch [list lappend ::dbInfo $dbstring] - puts $ch [list set ::dbTclVersion $::tcl_version] - puts $ch [list set ::knownGlobals $::kG] - puts $ch [list set ::knownCommands [lsort $::kC]] - - foreach a {syntax return subCmd option} { - foreach i [lsort [array names $a]] { - set v [set ${a}($i)] - if {[llength $v] != 0} { - set first [lindex [split $i] 0] - if {![string match _* $first] && \ - ![string match *::* $first] && \ - [lsearch $::kC $first] == -1} { - puts stderr "Skipping ${a}($i) since $i is not known." - } else { - puts $ch [list set ::${a}($i) $v] - } - } - } - puts $ch "" - } -} - -# Build a syntax database and write it to a file -proc buildFile {filename} { - set ch [open $filename w] - buildDb $ch - close $ch -} - -# This file can be sourced into an interactive interpreter. -# source syntaxbuild.tcl -# buildFile - -if {[info exists tcl_interactive] && !$tcl_interactive} { - if {$argc == 0 && $tcl_platform(platform) == "windows"} { - set argc 1 - set argv [list syntaxdb.tcl] - } - if {$argc == 0} { - buildDb stdout - } else { - buildFile [lindex $argv 0] - } - exit -} diff --git a/etc/soft/nagelfar/syntaxdb.tcl b/etc/soft/nagelfar/syntaxdb.tcl deleted file mode 100644 index 745fc68..0000000 --- a/etc/soft/nagelfar/syntaxdb.tcl +++ /dev/null @@ -1,934 +0,0 @@ -# Automatically generated syntax database. - -lappend ::dbInfo {Tcl 8.5.9 unix, Tk 8.5.9 x11} -set ::dbTclVersion 8.5 -set ::knownGlobals {argc argv argv0 auto_index auto_path env errorCode errorInfo tcl_interactive tcl_library tcl_nonwordchars tcl_patchLevel tcl_pkgPath tcl_platform tcl_rcFileName tcl_version tcl_wordchars tk_library tk_patchLevel tk_strictMotif tk_version} -set ::knownCommands {. EvalAttached after append apply array auto_execok auto_import auto_load auto_load_index auto_mkindex auto_mkindex_old auto_qualify auto_reset bell bgerror binary bind bindtags break button canvas case catch cd chan checkbutton clipboard clock close concat continue destroy dict encoding entry eof error eval event exec exit expr fblocked fconfigure fcopy file fileevent flush focus font for foreach format frame gets glob global grab grid history if image incr info interp join label labelframe lappend lassign lindex linsert list listbox llength load lower lrange lrepeat lreplace lreverse lsearch lset lsort menu menubutton message msgcat::mc msgcat::mcload msgcat::mclocale msgcat::mcmax msgcat::mcmset msgcat::mcpreferences msgcat::mcset msgcat::mcunknown namespace open option pack package panedwindow parray pid pkg_mkIndex place proc puts pwd radiobutton raise read regexp regsub rename return scale scan scrollbar seek selection send set socket source spinbox split string subst switch tcl::pkgconfig tclListValidFlags tclLog tclParseConfigSpec tclPkgSetup tclPkgUnknown tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tell text thread_load thread_source time tk tk::button tk::canvas tk::checkbutton tk::entry tk::frame tk::label tk::labelframe tk::listbox tk::menubutton tk::message tk::panedwindow tk::radiobutton tk::scale tk::scrollbar tk::spinbox tk::text tk::toplevel tk_bindForTraversal tk_bisque tk_chooseColor tk_chooseDirectory tk_dialog tk_focusFollowsMouse tk_focusNext tk_focusPrev tk_getFileType tk_getOpenFile tk_getSaveFile tk_menuBar tk_menuSetFocus tk_messageBox tk_optionMenu tk_popup tk_setPalette tk_textCopy tk_textCut tk_textPaste tkwait toplevel trace ttk::button ttk::checkbutton ttk::combobox ttk::entry ttk::frame ttk::label ttk::labelframe ttk::menubutton ttk::notebook ttk::panedwindow ttk::progressbar ttk::radiobutton ttk::scale ttk::scrollbar ttk::separator ttk::setTheme ttk::sizegrip ttk::style ttk::themes ttk::treeview unknown unload unset update uplevel upvar variable vwait while winfo wm} -set ::syntax(.) {s x*} -set {::syntax(. cget)} o -set {::syntax(. configure)} {o. x. p*} -set ::syntax(_obj,button) {s x*} -set {::syntax(_obj,button cget)} o -set {::syntax(_obj,button configure)} {o. x. p*} -set ::syntax(_obj,canvas) {s x*} -set {::syntax(_obj,canvas cget)} o -set {::syntax(_obj,canvas configure)} {o. x. p*} -set ::syntax(_obj,checkbutton) {s x*} -set {::syntax(_obj,checkbutton cget)} o -set {::syntax(_obj,checkbutton configure)} {o. x. p*} -set ::syntax(_obj,entry) {s x*} -set {::syntax(_obj,entry cget)} o -set {::syntax(_obj,entry configure)} {o. x. p*} -set ::syntax(_obj,frame) {s x*} -set {::syntax(_obj,frame cget)} o -set {::syntax(_obj,frame configure)} {o. x. p*} -set ::syntax(_obj,label) {s x*} -set {::syntax(_obj,label cget)} o -set {::syntax(_obj,label configure)} {o. x. p*} -set ::syntax(_obj,labelframe) {s x*} -set {::syntax(_obj,labelframe cget)} o -set {::syntax(_obj,labelframe configure)} {o. x. p*} -set ::syntax(_obj,listbox) {s x*} -set {::syntax(_obj,listbox cget)} o -set {::syntax(_obj,listbox configure)} {o. x. p*} -set {::syntax(_obj,listbox selection)} {s x x?} -set ::syntax(_obj,menu) {s x*} -set {::syntax(_obj,menu cget)} o -set {::syntax(_obj,menu configure)} {o. x. p*} -set ::syntax(_obj,menubutton) {s x*} -set {::syntax(_obj,menubutton cget)} o -set {::syntax(_obj,menubutton configure)} {o. x. p*} -set ::syntax(_obj,message) {s x*} -set {::syntax(_obj,message cget)} o -set {::syntax(_obj,message configure)} {o. x. p*} -set ::syntax(_obj,panedwindow) {s x*} -set {::syntax(_obj,panedwindow cget)} o -set {::syntax(_obj,panedwindow configure)} {o. x. p*} -set ::syntax(_obj,radiobutton) {s x*} -set {::syntax(_obj,radiobutton cget)} o -set {::syntax(_obj,radiobutton configure)} {o. x. p*} -set ::syntax(_obj,scale) {s x*} -set {::syntax(_obj,scale cget)} o -set {::syntax(_obj,scale configure)} {o. x. p*} -set ::syntax(_obj,scrollbar) {s x*} -set {::syntax(_obj,scrollbar cget)} o -set {::syntax(_obj,scrollbar configure)} {o. x. p*} -set ::syntax(_obj,spinbox) {s x*} -set {::syntax(_obj,spinbox cget)} o -set {::syntax(_obj,spinbox configure)} {o. x. p*} -set ::syntax(_obj,text) {s x*} -set {::syntax(_obj,text cget)} o -set {::syntax(_obj,text configure)} {o. x. p*} -set ::syntax(_obj,tk::button) {s x*} -set {::syntax(_obj,tk::button cget)} o -set {::syntax(_obj,tk::button configure)} {o. x. p*} -set ::syntax(_obj,tk::canvas) {s x*} -set {::syntax(_obj,tk::canvas cget)} o -set {::syntax(_obj,tk::canvas configure)} {o. x. p*} -set ::syntax(_obj,tk::checkbutton) {s x*} -set {::syntax(_obj,tk::checkbutton cget)} o -set {::syntax(_obj,tk::checkbutton configure)} {o. x. p*} -set ::syntax(_obj,tk::entry) {s x*} -set {::syntax(_obj,tk::entry cget)} o -set {::syntax(_obj,tk::entry configure)} {o. x. p*} -set ::syntax(_obj,tk::frame) {s x*} -set {::syntax(_obj,tk::frame cget)} o -set {::syntax(_obj,tk::frame configure)} {o. x. p*} -set ::syntax(_obj,tk::label) {s x*} -set {::syntax(_obj,tk::label cget)} o -set {::syntax(_obj,tk::label configure)} {o. x. p*} -set ::syntax(_obj,tk::labelframe) {s x*} -set {::syntax(_obj,tk::labelframe cget)} o -set {::syntax(_obj,tk::labelframe configure)} {o. x. p*} -set ::syntax(_obj,tk::listbox) {s x*} -set {::syntax(_obj,tk::listbox cget)} o -set {::syntax(_obj,tk::listbox configure)} {o. x. p*} -set ::syntax(_obj,tk::menubutton) {s x*} -set {::syntax(_obj,tk::menubutton cget)} o -set {::syntax(_obj,tk::menubutton configure)} {o. x. p*} -set ::syntax(_obj,tk::message) {s x*} -set {::syntax(_obj,tk::message cget)} o -set {::syntax(_obj,tk::message configure)} {o. x. p*} -set ::syntax(_obj,tk::panedwindow) {s x*} -set {::syntax(_obj,tk::panedwindow cget)} o -set {::syntax(_obj,tk::panedwindow configure)} {o. x. p*} -set ::syntax(_obj,tk::radiobutton) {s x*} -set {::syntax(_obj,tk::radiobutton cget)} o -set {::syntax(_obj,tk::radiobutton configure)} {o. x. p*} -set ::syntax(_obj,tk::scale) {s x*} -set {::syntax(_obj,tk::scale cget)} o -set {::syntax(_obj,tk::scale configure)} {o. x. p*} -set ::syntax(_obj,tk::scrollbar) {s x*} -set {::syntax(_obj,tk::scrollbar cget)} o -set {::syntax(_obj,tk::scrollbar configure)} {o. x. p*} -set ::syntax(_obj,tk::spinbox) {s x*} -set {::syntax(_obj,tk::spinbox cget)} o -set {::syntax(_obj,tk::spinbox configure)} {o. x. p*} -set ::syntax(_obj,tk::text) {s x*} -set {::syntax(_obj,tk::text cget)} o -set {::syntax(_obj,tk::text configure)} {o. x. p*} -set ::syntax(_obj,tk::toplevel) {s x*} -set {::syntax(_obj,tk::toplevel cget)} o -set {::syntax(_obj,tk::toplevel configure)} {o. x. p*} -set ::syntax(_obj,toplevel) {s x*} -set {::syntax(_obj,toplevel cget)} o -set {::syntax(_obj,toplevel configure)} {o. x. p*} -set ::syntax(_obj,ttk::button) {s x*} -set {::syntax(_obj,ttk::button cget)} o -set {::syntax(_obj,ttk::button configure)} {o. x. p*} -set ::syntax(_obj,ttk::checkbutton) {s x*} -set {::syntax(_obj,ttk::checkbutton cget)} o -set {::syntax(_obj,ttk::checkbutton configure)} {o. x. p*} -set ::syntax(_obj,ttk::combobox) {s x*} -set {::syntax(_obj,ttk::combobox cget)} o -set {::syntax(_obj,ttk::combobox configure)} {o. x. p*} -set ::syntax(_obj,ttk::entry) {s x*} -set {::syntax(_obj,ttk::entry cget)} o -set {::syntax(_obj,ttk::entry configure)} {o. x. p*} -set ::syntax(_obj,ttk::frame) {s x*} -set {::syntax(_obj,ttk::frame cget)} o -set {::syntax(_obj,ttk::frame configure)} {o. x. p*} -set ::syntax(_obj,ttk::label) {s x*} -set {::syntax(_obj,ttk::label cget)} o -set {::syntax(_obj,ttk::label configure)} {o. x. p*} -set ::syntax(_obj,ttk::labelframe) {s x*} -set {::syntax(_obj,ttk::labelframe cget)} o -set {::syntax(_obj,ttk::labelframe configure)} {o. x. p*} -set ::syntax(_obj,ttk::menubutton) {s x*} -set {::syntax(_obj,ttk::menubutton cget)} o -set {::syntax(_obj,ttk::menubutton configure)} {o. x. p*} -set ::syntax(_obj,ttk::notebook) {s x*} -set {::syntax(_obj,ttk::notebook cget)} o -set {::syntax(_obj,ttk::notebook configure)} {o. x. p*} -set ::syntax(_obj,ttk::panedwindow) {s x*} -set {::syntax(_obj,ttk::panedwindow cget)} o -set {::syntax(_obj,ttk::panedwindow configure)} {o. x. p*} -set ::syntax(_obj,ttk::progressbar) {s x*} -set {::syntax(_obj,ttk::progressbar cget)} o -set {::syntax(_obj,ttk::progressbar configure)} {o. x. p*} -set ::syntax(_obj,ttk::radiobutton) {s x*} -set {::syntax(_obj,ttk::radiobutton cget)} o -set {::syntax(_obj,ttk::radiobutton configure)} {o. x. p*} -set ::syntax(_obj,ttk::scale) {s x*} -set {::syntax(_obj,ttk::scale cget)} o -set {::syntax(_obj,ttk::scale configure)} {o. x. p*} -set ::syntax(_obj,ttk::scrollbar) {s x*} -set {::syntax(_obj,ttk::scrollbar cget)} o -set {::syntax(_obj,ttk::scrollbar configure)} {o. x. p*} -set ::syntax(_obj,ttk::separator) {s x*} -set {::syntax(_obj,ttk::separator cget)} o -set {::syntax(_obj,ttk::separator configure)} {o. x. p*} -set ::syntax(_obj,ttk::sizegrip) {s x*} -set {::syntax(_obj,ttk::sizegrip cget)} o -set {::syntax(_obj,ttk::sizegrip configure)} {o. x. p*} -set ::syntax(_obj,ttk::treeview) {s x*} -set {::syntax(_obj,ttk::treeview cget)} o -set {::syntax(_obj,ttk::treeview configure)} {o. x. p*} -set ::syntax(after) {r 1} -set ::syntax(append) {n x*} -set ::syntax(apply) {x x*} -set ::syntax(array) {s v x?} -set {::syntax(array exists)} l -set {::syntax(array names)} {v x? x?} -set {::syntax(array set)} {n x} -set {::syntax(array size)} v -set {::syntax(array statistics)} v -set {::syntax(array unset)} {l x?} -set ::syntax(auto_execok) 1 -set ::syntax(auto_import) 1 -set ::syntax(auto_load) {r 1 2} -set ::syntax(auto_load_index) 0 -set ::syntax(auto_mkindex) {r 1} -set ::syntax(auto_mkindex_old) {r 1} -set ::syntax(auto_qualify) 2 -set ::syntax(auto_reset) 0 -set ::syntax(bell) {o* x*} -set ::syntax(bgerror) 1 -set ::syntax(binary) {s x*} -set {::syntax(binary scan)} {x x n n*} -set ::syntax(bind) {x x? cg?} -set ::syntax(bindtags) {x x?} -set ::syntax(break) 0 -set ::syntax(button) {x p*} -set ::syntax(canvas) {x p*} -set ::syntax(case) x* -set ::syntax(catch) {c n?} -set ::syntax(cd) {r 0 1} -set ::syntax(chan) {s x*} -set {::syntax(chan blocked)} x -set {::syntax(chan close)} x -set {::syntax(chan configure)} {x o. x. p*} -set {::syntax(chan copy)} {x x p*} -set {::syntax(chan create)} {x x} -set {::syntax(chan eof)} x -set {::syntax(chan event)} {x x cg?} -set {::syntax(chan flush)} x -set {::syntax(chan gets)} {x n?} -set {::syntax(chan names)} x? -set {::syntax(chan pending)} {x x} -set {::syntax(chan postevent)} {x x} -set {::syntax(chan puts)} {1: x : o? x x?} -set {::syntax(chan read)} {x x?} -set {::syntax(chan seek)} {r 2 3} -set {::syntax(chan tell)} 1 -set {::syntax(chan truncate)} {x x?} -set ::syntax(checkbutton) {x p*} -set ::syntax(clipboard) {s x*} -set ::syntax(clock) {s x*} -set {::syntax(clock clicks)} o? -set {::syntax(clock format)} {x p*} -set {::syntax(clock scan)} {x p*} -set {::syntax(clock seconds)} 0 -set ::syntax(close) 1 -set ::syntax(concat) {r 0} -set ::syntax(continue) 0 -set ::syntax(destroy) x* -set ::syntax(dict) {s x*} -set {::syntax(dict append)} {n x x*} -set {::syntax(dict filter)} {x x x} -set {::syntax(dict for)} {x x c} -set {::syntax(dict incr)} {n x x*} -set {::syntax(dict lappend)} {n x x*} -set {::syntax(dict set)} {n x x*} -set {::syntax(dict unset)} {n x x*} -set {::syntax(dict update)} {n x x x* c} -set {::syntax(dict with)} {n x* c} -set ::syntax(encoding) {s x*} -set {::syntax(encoding convertfrom)} {r 1 2} -set {::syntax(encoding convertto)} {r 1 2} -set {::syntax(encoding names)} 0 -set {::syntax(encoding system)} {r 0 1} -set ::syntax(entry) {x p*} -set ::syntax(eof) 1 -set ::syntax(error) {r 1 3} -set ::syntax(event) {s x*} -set ::syntax(exec) {o* x x*} -set ::syntax(exit) {r 0 1} -set ::syntax(fblocked) 1 -set ::syntax(fconfigure) {x o. x. p*} -set ::syntax(fcopy) {x x p*} -set ::syntax(file) {s x*} -set {::syntax(file atime)} {x x?} -set {::syntax(file attributes)} {x o. x. p*} -set {::syntax(file channels)} x? -set {::syntax(file copy)} {o* x x x*} -set {::syntax(file delete)} {o* x x*} -set {::syntax(file dirname)} x -set {::syntax(file executable)} x -set {::syntax(file exists)} x -set {::syntax(file extension)} x -set {::syntax(file isdirectory)} x -set {::syntax(file isfile)} x -set {::syntax(file join)} {x x*} -set {::syntax(file link)} {o? x x?} -set {::syntax(file lstat)} {x n} -set {::syntax(file mkdir)} {x x*} -set {::syntax(file mtime)} {x x?} -set {::syntax(file nativename)} x -set {::syntax(file normalize)} x -set {::syntax(file owned)} x -set {::syntax(file pathtype)} x -set {::syntax(file readable)} x -set {::syntax(file readlink)} x -set {::syntax(file rename)} {o* x x x*} -set {::syntax(file rootname)} x -set {::syntax(file separator)} x? -set {::syntax(file size)} x -set {::syntax(file split)} x -set {::syntax(file stat)} {x n} -set {::syntax(file system)} x -set {::syntax(file tail)} x -set {::syntax(file type)} x -set {::syntax(file volumes)} 0 -set {::syntax(file writable)} x -set ::syntax(fileevent) {x x x?} -set ::syntax(flush) 1 -set ::syntax(focus) {o? x?} -set ::syntax(font) {s x*} -set ::syntax(for) {c E c c} -set ::syntax(format) {r 1} -set ::syntax(frame) {x p*} -set ::syntax(gets) {x n?} -set ::syntax(glob) {o* x x*} -set ::syntax(grab) {x x*} -set ::syntax(grid) {x x*} -set ::syntax(history) {s x*} -set ::syntax(if) {e c} -set ::syntax(image) {s x*} -set ::syntax(incr) {n x?} -set ::syntax(info) {s x*} -set {::syntax(info default)} {x x n} -set {::syntax(info exists)} l -set ::syntax(interp) {s x*} -set {::syntax(interp invokehidden)} {x o* x x*} -set ::syntax(join) {r 1 2} -set ::syntax(label) {x p*} -set ::syntax(labelframe) {x p*} -set ::syntax(lappend) {n x*} -set ::syntax(lassign) {x n n*} -set ::syntax(lindex) {r 2} -set ::syntax(linsert) {r 3} -set ::syntax(list) {r 0} -set ::syntax(listbox) {x p*} -set ::syntax(llength) 1 -set ::syntax(load) {r 1 3} -set ::syntax(lower) {x x?} -set ::syntax(lrange) 3 -set ::syntax(lrepeat) {r 2} -set ::syntax(lreplace) {r 3} -set ::syntax(lreverse) 1 -set ::syntax(lsearch) {o* x x} -set ::syntax(lset) {n x x x*} -set ::syntax(lsort) {o* x} -set ::syntax(menu) {x p*} -set ::syntax(menubutton) {x p*} -set ::syntax(message) {x p*} -set ::syntax(msgcat::mc) {r 1} -set ::syntax(msgcat::mcload) 1 -set ::syntax(msgcat::mclocale) {r 0} -set ::syntax(msgcat::mcmax) {r 0} -set ::syntax(msgcat::mcmset) 2 -set ::syntax(msgcat::mcpreferences) 0 -set ::syntax(msgcat::mcset) {r 2 3} -set ::syntax(msgcat::mcunknown) {r 2} -set ::syntax(namespace) {s x*} -set {::syntax(namespace import)} {o* x*} -set {::syntax(namespace which)} {o* x?} -set ::syntax(open) {r 1 3} -set ::syntax(option) {s x*} -set ::syntax(pack) {x x*} -set ::syntax(package) {s x*} -set ::syntax(panedwindow) {x p*} -set ::syntax(parray) {v x?} -set ::syntax(pid) {r 0 1} -set ::syntax(pkg_mkIndex) {r 0} -set ::syntax(place) {x x*} -set ::syntax(proc) dp -set ::syntax(puts) {1: x : o? x x?} -set ::syntax(pwd) 0 -set ::syntax(radiobutton) {x p*} -set ::syntax(raise) {x x?} -set ::syntax(read) {r 1 2} -set ::syntax(regexp) {o* x x n*} -set ::syntax(regsub) {o* x x x n?} -set ::syntax(rename) 2 -set ::syntax(return) {p* x?} -set ::syntax(scale) {x p*} -set ::syntax(scan) {x x n*} -set ::syntax(scrollbar) {x p*} -set ::syntax(seek) {r 2 3} -set ::syntax(selection) {s x*} -set ::syntax(send) {o* x x x*} -set ::syntax(set) {1: v : n x} -set ::syntax(socket) {r 2} -set ::syntax(source) {p* x} -set ::syntax(spinbox) {x p*} -set ::syntax(split) {r 1 2} -set ::syntax(string) {s x x*} -set {::syntax(string bytelength)} 1 -set {::syntax(string compare)} {o* x x} -set {::syntax(string equal)} {o* x x} -set {::syntax(string first)} {r 2 3} -set {::syntax(string index)} 2 -set {::syntax(string is)} {s o* x} -set {::syntax(string last)} {r 2 3} -set {::syntax(string length)} 1 -set {::syntax(string map)} {o? x x} -set {::syntax(string match)} {o? x x} -set {::syntax(string range)} 3 -set {::syntax(string repeat)} 2 -set {::syntax(string replace)} {r 3 4} -set {::syntax(string reverse)} 1 -set {::syntax(string tolower)} {r 1 3} -set {::syntax(string totitle)} {r 1 3} -set {::syntax(string toupper)} {r 1 3} -set {::syntax(string trim)} {r 1 2} -set {::syntax(string trimleft)} {r 1 2} -set {::syntax(string trimright)} {r 1 2} -set {::syntax(string wordend)} 2 -set {::syntax(string wordstart)} 2 -set ::syntax(subst) {o* x} -set ::syntax(tclListValidFlags) 1 -set ::syntax(tclLog) 1 -set ::syntax(tclParseConfigSpec) 4 -set ::syntax(tclPkgSetup) 4 -set ::syntax(tclPkgUnknown) {r 1} -set ::syntax(tcl_endOfWord) 2 -set ::syntax(tcl_findLibrary) 6 -set ::syntax(tcl_startOfNextWord) 2 -set ::syntax(tcl_startOfPreviousWord) 2 -set ::syntax(tcl_wordBreakAfter) 2 -set ::syntax(tcl_wordBreakBefore) 2 -set ::syntax(tell) 1 -set ::syntax(text) {x p*} -set ::syntax(thread_load) 1 -set ::syntax(thread_source) 1 -set ::syntax(time) {c x?} -set ::syntax(tk) {s x*} -set ::syntax(tk::button) {x p*} -set ::syntax(tk::canvas) {x p*} -set ::syntax(tk::checkbutton) {x p*} -set ::syntax(tk::entry) {x p*} -set ::syntax(tk::frame) {x p*} -set ::syntax(tk::label) {x p*} -set ::syntax(tk::labelframe) {x p*} -set ::syntax(tk::listbox) {x p*} -set ::syntax(tk::menubutton) {x p*} -set ::syntax(tk::message) {x p*} -set ::syntax(tk::panedwindow) {x p*} -set ::syntax(tk::radiobutton) {x p*} -set ::syntax(tk::scale) {x p*} -set ::syntax(tk::scrollbar) {x p*} -set ::syntax(tk::spinbox) {x p*} -set ::syntax(tk::text) {x p*} -set ::syntax(tk::toplevel) {x p*} -set ::syntax(tk_bindForTraversal) {r 0} -set ::syntax(tk_bisque) 0 -set ::syntax(tk_chooseColor) p* -set ::syntax(tk_chooseDirectory) p* -set ::syntax(tk_dialog) {r 5} -set ::syntax(tk_focusFollowsMouse) 0 -set ::syntax(tk_focusNext) 1 -set ::syntax(tk_focusPrev) 1 -set ::syntax(tk_getFileType) 0 -set ::syntax(tk_getOpenFile) p* -set ::syntax(tk_getSaveFile) p* -set ::syntax(tk_menuBar) {r 0} -set ::syntax(tk_menuSetFocus) 1 -set ::syntax(tk_messageBox) p* -set ::syntax(tk_optionMenu) {r 3} -set ::syntax(tk_popup) {r 3 4} -set ::syntax(tk_setPalette) {r 0} -set ::syntax(tk_textCopy) 1 -set ::syntax(tk_textCut) 1 -set ::syntax(tk_textPaste) 1 -set ::syntax(tkwait) {s x} -set {::syntax(tkwait variable)} l -set ::syntax(toplevel) {x p*} -set ::syntax(trace) {s x x*} -set {::syntax(trace add)} {s x x x} -set {::syntax(trace add command)} {x x c3} -set {::syntax(trace add execution)} {x x c2} -set {::syntax(trace add variable)} {v x c3} -set {::syntax(trace info)} {s x x x} -set {::syntax(trace info command)} x -set {::syntax(trace info execution)} x -set {::syntax(trace info variable)} v -set {::syntax(trace remove)} {s x x x} -set {::syntax(trace remove command)} {x x x} -set {::syntax(trace remove execution)} {x x x} -set {::syntax(trace remove variable)} {v x x} -set {::syntax(trace variable)} {n x x} -set {::syntax(trace vdelete)} {v x x} -set {::syntax(trace vinfo)} l -set ::syntax(ttk::button) {x p*} -set ::syntax(ttk::checkbutton) {x p*} -set ::syntax(ttk::combobox) {x p*} -set ::syntax(ttk::entry) {x p*} -set ::syntax(ttk::frame) {x p*} -set ::syntax(ttk::label) {x p*} -set ::syntax(ttk::labelframe) {x p*} -set ::syntax(ttk::menubutton) {x p*} -set ::syntax(ttk::notebook) {x p*} -set ::syntax(ttk::panedwindow) {x p*} -set ::syntax(ttk::progressbar) {x p*} -set ::syntax(ttk::radiobutton) {x p*} -set ::syntax(ttk::scale) {x p*} -set ::syntax(ttk::scrollbar) {x p*} -set ::syntax(ttk::separator) {x p*} -set ::syntax(ttk::setTheme) x -set ::syntax(ttk::sizegrip) {x p*} -set ::syntax(ttk::style) {s x*} -set {::syntax(ttk::style configure)} {x o. x. p*} -set {::syntax(ttk::style element)} {s x*} -set {::syntax(ttk::style element create)} {x x x*} -set {::syntax(ttk::style element names)} 0 -set {::syntax(ttk::style element options)} x -set {::syntax(ttk::style layout)} {x x?} -set {::syntax(ttk::style lookup)} {r 2 4} -set {::syntax(ttk::style map)} {x p*} -set {::syntax(ttk::style theme)} {s x*} -set {::syntax(ttk::style theme create)} {x p*} -set {::syntax(ttk::style theme names)} 0 -set {::syntax(ttk::style theme settings)} 2 -set {::syntax(ttk::style theme use)} x -set ::syntax(ttk::themes) x? -set ::syntax(ttk::treeview) {x p*} -set ::syntax(unknown) {r 0} -set ::syntax(unload) {o* x x*} -set ::syntax(unset) {o* l l*} -set ::syntax(update) s. -set ::syntax(vwait) n -set ::syntax(while) {E c} -set ::syntax(winfo) {s x x*} -set ::syntax(wm) {s x x*} - -set ::return(button) _obj,button -set ::return(canvas) _obj,canvas -set ::return(checkbutton) _obj,checkbutton -set ::return(entry) _obj,entry -set ::return(frame) _obj,frame -set ::return(label) _obj,label -set ::return(labelframe) _obj,labelframe -set ::return(linsert) list -set ::return(list) list -set ::return(listbox) _obj,listbox -set ::return(llength) int -set ::return(lrange) list -set ::return(lreplace) list -set ::return(lsort) list -set ::return(menu) _obj,menu -set ::return(menubutton) _obj,menubutton -set ::return(message) _obj,message -set ::return(panedwindow) _obj,panedwindow -set ::return(radiobutton) _obj,radiobutton -set ::return(scale) _obj,scale -set ::return(scrollbar) _obj,scrollbar -set ::return(spinbox) _obj,spinbox -set ::return(text) _obj,text -set ::return(tk::button) _obj,tk::button -set ::return(tk::canvas) _obj,tk::canvas -set ::return(tk::checkbutton) _obj,tk::checkbutton -set ::return(tk::entry) _obj,tk::entry -set ::return(tk::frame) _obj,tk::frame -set ::return(tk::label) _obj,tk::label -set ::return(tk::labelframe) _obj,tk::labelframe -set ::return(tk::listbox) _obj,tk::listbox -set ::return(tk::menubutton) _obj,tk::menubutton -set ::return(tk::message) _obj,tk::message -set ::return(tk::panedwindow) _obj,tk::panedwindow -set ::return(tk::radiobutton) _obj,tk::radiobutton -set ::return(tk::scale) _obj,tk::scale -set ::return(tk::scrollbar) _obj,tk::scrollbar -set ::return(tk::spinbox) _obj,tk::spinbox -set ::return(tk::text) _obj,tk::text -set ::return(tk::toplevel) _obj,tk::toplevel -set ::return(toplevel) _obj,toplevel -set ::return(ttk::button) _obj,ttk::button -set ::return(ttk::checkbutton) _obj,ttk::checkbutton -set ::return(ttk::combobox) _obj,ttk::combobox -set ::return(ttk::entry) _obj,ttk::entry -set ::return(ttk::frame) _obj,ttk::frame -set ::return(ttk::label) _obj,ttk::label -set ::return(ttk::labelframe) _obj,ttk::labelframe -set ::return(ttk::menubutton) _obj,ttk::menubutton -set ::return(ttk::notebook) _obj,ttk::notebook -set ::return(ttk::panedwindow) _obj,ttk::panedwindow -set ::return(ttk::progressbar) _obj,ttk::progressbar -set ::return(ttk::radiobutton) _obj,ttk::radiobutton -set ::return(ttk::scale) _obj,ttk::scale -set ::return(ttk::scrollbar) _obj,ttk::scrollbar -set ::return(ttk::separator) _obj,ttk::separator -set ::return(ttk::sizegrip) _obj,ttk::sizegrip -set ::return(ttk::treeview) _obj,ttk::treeview - -set ::subCmd(.) {cget configure} -set ::subCmd(_obj,button) {cget configure flash invoke} -set ::subCmd(_obj,canvas) {addtag bbox bind canvasx canvasy cget configure coords create dchars delete dtag find focus gettags icursor index insert itemcget itemconfigure lower move postscript raise scale scan select type xview yview} -set ::subCmd(_obj,checkbutton) {cget configure deselect flash invoke select toggle} -set ::subCmd(_obj,entry) {bbox cget configure delete get icursor index insert scan selection validate xview} -set ::subCmd(_obj,frame) {cget configure} -set ::subCmd(_obj,label) {cget configure} -set ::subCmd(_obj,labelframe) {cget configure} -set ::subCmd(_obj,listbox) {activate bbox cget configure curselection delete get index insert itemcget itemconfigure nearest scan see selection size xview yview} -set {::subCmd(_obj,listbox selection)} {anchor clear includes set} -set ::subCmd(_obj,menu) {activate add cget clone configure delete entrycget entryconfigure index insert invoke post postcascade type unpost xposition yposition} -set ::subCmd(_obj,menubutton) {cget configure} -set ::subCmd(_obj,message) {cget configure} -set ::subCmd(_obj,panedwindow) {add cget configure forget identify panecget paneconfigure panes proxy sash} -set ::subCmd(_obj,radiobutton) {cget configure deselect flash invoke select} -set ::subCmd(_obj,scale) {cget configure coords get identify set} -set ::subCmd(_obj,scrollbar) {activate cget configure delta fraction get identify set} -set ::subCmd(_obj,spinbox) {bbox cget configure delete get icursor identify index insert invoke scan selection set validate xview} -set ::subCmd(_obj,text) {bbox cget compare configure count debug delete dlineinfo dump edit get image index insert mark peer replace scan search see tag window xview yview} -set ::subCmd(_obj,tk::button) {cget configure flash invoke} -set ::subCmd(_obj,tk::canvas) {addtag bbox bind canvasx canvasy cget configure coords create dchars delete dtag find focus gettags icursor index insert itemcget itemconfigure lower move postscript raise scale scan select type xview yview} -set ::subCmd(_obj,tk::checkbutton) {cget configure deselect flash invoke select toggle} -set ::subCmd(_obj,tk::entry) {bbox cget configure delete get icursor index insert scan selection validate xview} -set ::subCmd(_obj,tk::frame) {cget configure} -set ::subCmd(_obj,tk::label) {cget configure} -set ::subCmd(_obj,tk::labelframe) {cget configure} -set ::subCmd(_obj,tk::listbox) {activate bbox cget configure curselection delete get index insert itemcget itemconfigure nearest scan see selection size xview yview} -set ::subCmd(_obj,tk::menubutton) {cget configure} -set ::subCmd(_obj,tk::message) {cget configure} -set ::subCmd(_obj,tk::panedwindow) {add cget configure forget identify panecget paneconfigure panes proxy sash} -set ::subCmd(_obj,tk::radiobutton) {cget configure deselect flash invoke select} -set ::subCmd(_obj,tk::scale) {cget configure coords get identify set} -set ::subCmd(_obj,tk::scrollbar) {activate cget configure delta fraction get identify set} -set ::subCmd(_obj,tk::spinbox) {bbox cget configure delete get icursor identify index insert invoke scan selection set validate xview} -set ::subCmd(_obj,tk::text) {bbox cget compare configure count debug delete dlineinfo dump edit get image index insert mark peer replace scan search see tag window xview yview} -set ::subCmd(_obj,tk::toplevel) {cget configure} -set ::subCmd(_obj,toplevel) {cget configure} -set ::subCmd(_obj,ttk::button) {cget configure identify instate invoke state} -set ::subCmd(_obj,ttk::checkbutton) {cget configure identify instate invoke state} -set ::subCmd(_obj,ttk::combobox) {bbox cget configure current delete get icursor identify index insert instate selection set state xview} -set ::subCmd(_obj,ttk::entry) {bbox cget configure delete get icursor identify index insert instate selection state validate xview} -set ::subCmd(_obj,ttk::frame) {cget configure identify instate state} -set ::subCmd(_obj,ttk::label) {cget configure identify instate state} -set ::subCmd(_obj,ttk::labelframe) {cget configure identify instate state} -set ::subCmd(_obj,ttk::menubutton) {cget configure identify instate state} -set ::subCmd(_obj,ttk::notebook) {add cget configure forget hide identify index insert instate select state tab tabs} -set ::subCmd(_obj,ttk::panedwindow) {add cget configure forget identify insert instate pane panes sashpos state} -set ::subCmd(_obj,ttk::progressbar) {cget configure identify instate start state step stop} -set ::subCmd(_obj,ttk::radiobutton) {cget configure identify instate invoke state} -set ::subCmd(_obj,ttk::scale) {cget configure coords get identify instate set state} -set ::subCmd(_obj,ttk::scrollbar) {cget configure delta fraction get identify instate set state} -set ::subCmd(_obj,ttk::separator) {cget configure identify instate state} -set ::subCmd(_obj,ttk::sizegrip) {cget configure identify instate state} -set ::subCmd(_obj,ttk::treeview) {bbox cget children column configure delete detach drag exists focus heading identify index insert instate item move next parent prev see selection set state tag xview yview} -set ::subCmd(array) {anymore donesearch exists get names nextelement set size startsearch statistics unset} -set ::subCmd(binary) {format scan} -set ::subCmd(chan) {blocked close configure copy create eof event flush gets names pending postevent puts read seek tell truncate} -set ::subCmd(clipboard) {append clear get} -set ::subCmd(clock) {add clicks format microseconds milliseconds scan seconds} -set ::subCmd(dict) {append create exists filter for get incr info keys lappend merge remove replace set size unset update values with} -set ::subCmd(encoding) {convertfrom convertto dirs names system} -set ::subCmd(event) {add delete generate info} -set ::subCmd(file) {atime attributes channels copy delete dirname executable exists extension isdirectory isfile join link lstat mkdir mtime nativename normalize owned pathtype readable readlink rename rootname separator size split stat system tail type volumes writable} -set ::subCmd(font) {actual configure create delete families measure metrics names} -set ::subCmd(history) {add change clear event info keep nextid redo} -set ::subCmd(image) {create delete height inuse names type types width} -set ::subCmd(info) {args body cmdcount commands complete default exists frame functions globals hostname level library loaded locals nameofexecutable patchlevel procs script sharedlibextension tclversion vars} -set ::subCmd(interp) {alias aliases bgerror create delete eval exists expose hidden hide invokehidden issafe limit marktrusted recursionlimit share slaves target transfer} -set ::subCmd(namespace) {children code current delete ensemble eval exists export forget import inscope origin parent path qualifiers tail unknown upvar which} -set ::subCmd(option) {add clear get readfile} -set ::subCmd(package) {forget ifneeded names prefer present provide require unknown vcompare versions vsatisfies} -set ::subCmd(selection) {clear get handle own} -set ::subCmd(string) {bytelength compare equal first index is last length map match range repeat replace reverse tolower totitle toupper trim trimleft trimright wordend wordstart} -set {::subCmd(string is)} {alnum alpha ascii boolean control digit double false graph integer list lower print punct space true upper wideinteger wordchar xdigit} -set ::subCmd(tk) {appname caret inactive scaling useinputmethods windowingsystem} -set ::subCmd(tkwait) {variable visibility window} -set ::subCmd(trace) {add info remove variable vdelete vinfo} -set {::subCmd(trace add)} {command execution variable} -set {::subCmd(trace info)} {command execution variable} -set {::subCmd(trace remove)} {command execution variable} -set ::subCmd(ttk::style) {configure element layout lookup map theme} -set {::subCmd(ttk::style element)} {create names options} -set {::subCmd(ttk::style theme)} {create names settings use} -set ::subCmd(update) idletasks -set ::subCmd(winfo) {atom atomname cells children class colormapfull containing depth exists fpixels geometry height id interps ismapped manager name parent pathname pixels pointerx pointerxy pointery reqheight reqwidth rgb rootx rooty screen screencells screendepth screenheight screenmmheight screenmmwidth screenvisual screenwidth server toplevel viewable visual visualid visualsavailable vrootheight vrootwidth vrootx vrooty width x y} -set ::subCmd(wm) {aspect attributes client colormapwindows command deiconify focusmodel forget frame geometry grid group iconbitmap iconify iconmask iconname iconphoto iconposition iconwindow manage maxsize minsize overrideredirect positionfrom protocol resizable sizefrom stackorder state title transient withdraw} - -set {::option(. cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(. configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,button cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,button configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,button configure -textvariable)} n -set {::option(_obj,canvas cget)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,canvas configure)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,checkbutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,checkbutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,checkbutton configure -textvariable)} n -set {::option(_obj,checkbutton configure -variable)} n -set {::option(_obj,entry cget)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,entry configure)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,entry configure -textvariable)} n -set {::option(_obj,frame cget)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,frame configure)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,label cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,label configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,label configure -textvariable)} n -set {::option(_obj,labelframe cget)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,labelframe configure)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,listbox cget)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,listbox configure)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,listbox configure -listvariable)} n -set {::option(_obj,menu cget)} {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set {::option(_obj,menu configure)} {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set {::option(_obj,menubutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,menubutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,menubutton configure -textvariable)} n -set {::option(_obj,message cget)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,message configure)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,message configure -textvariable)} n -set {::option(_obj,panedwindow cget)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,panedwindow configure)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,radiobutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,radiobutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,radiobutton configure -textvariable)} n -set {::option(_obj,radiobutton configure -variable)} n -set {::option(_obj,scale cget)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,scale configure)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,scale configure -variable)} n -set {::option(_obj,scrollbar cget)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,scrollbar configure)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,spinbox cget)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,spinbox configure)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,spinbox configure -textvariable)} n -set {::option(_obj,text cget)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,text configure)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,tk::button cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::button configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::button configure -textvariable)} n -set {::option(_obj,tk::canvas cget)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,tk::canvas configure)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,tk::checkbutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,tk::checkbutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,tk::checkbutton configure -textvariable)} n -set {::option(_obj,tk::checkbutton configure -variable)} n -set {::option(_obj,tk::entry cget)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,tk::entry configure)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,tk::entry configure -textvariable)} n -set {::option(_obj,tk::frame cget)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::frame configure)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::label cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::label configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::label configure -textvariable)} n -set {::option(_obj,tk::labelframe cget)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::labelframe configure)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::listbox cget)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,tk::listbox configure)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,tk::listbox configure -listvariable)} n -set {::option(_obj,tk::menubutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::menubutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::menubutton configure -textvariable)} n -set {::option(_obj,tk::message cget)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,tk::message configure)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,tk::message configure -textvariable)} n -set {::option(_obj,tk::panedwindow cget)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,tk::panedwindow configure)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,tk::radiobutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,tk::radiobutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,tk::radiobutton configure -textvariable)} n -set {::option(_obj,tk::radiobutton configure -variable)} n -set {::option(_obj,tk::scale cget)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,tk::scale configure)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,tk::scale configure -variable)} n -set {::option(_obj,tk::scrollbar cget)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,tk::scrollbar configure)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,tk::spinbox cget)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,tk::spinbox configure)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,tk::spinbox configure -textvariable)} n -set {::option(_obj,tk::text cget)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,tk::text configure)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,tk::toplevel cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::toplevel configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,toplevel cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,toplevel configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,ttk::button cget)} {-takefocus -command -default -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::button configure)} {-takefocus -command -default -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::button configure -textvariable)} n -set {::option(_obj,ttk::checkbutton cget)} {-takefocus -variable -onvalue -offvalue -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::checkbutton configure)} {-takefocus -variable -onvalue -offvalue -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::checkbutton configure -textvariable)} n -set {::option(_obj,ttk::checkbutton configure -variable)} n -set {::option(_obj,ttk::combobox cget)} {-height -postcommand -values -takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::combobox configure)} {-height -postcommand -values -takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::combobox configure -textvariable)} n -set {::option(_obj,ttk::entry cget)} {-takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::entry configure)} {-takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::entry configure -textvariable)} n -set {::option(_obj,ttk::frame cget)} {-borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::frame configure)} {-borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::label cget)} {-background -foreground -font -borderwidth -relief -anchor -justify -wraplength -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::label configure)} {-background -foreground -font -borderwidth -relief -anchor -justify -wraplength -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::label configure -textvariable)} n -set {::option(_obj,ttk::labelframe cget)} {-labelanchor -text -underline -labelwidget -borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::labelframe configure)} {-labelanchor -text -underline -labelwidget -borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::menubutton cget)} {-takefocus -menu -direction -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::menubutton configure)} {-takefocus -menu -direction -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::menubutton configure -textvariable)} n -set {::option(_obj,ttk::notebook cget)} {-takefocus -width -height -padding -takefocus -cursor -style -class} -set {::option(_obj,ttk::notebook configure)} {-takefocus -width -height -padding -takefocus -cursor -style -class} -set {::option(_obj,ttk::panedwindow cget)} {-orient -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::panedwindow configure)} {-orient -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::progressbar cget)} {-orient -length -mode -maximum -variable -value -phase -takefocus -cursor -style -class} -set {::option(_obj,ttk::progressbar configure)} {-orient -length -mode -maximum -variable -value -phase -takefocus -cursor -style -class} -set {::option(_obj,ttk::progressbar configure -variable)} n -set {::option(_obj,ttk::radiobutton cget)} {-takefocus -variable -value -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::radiobutton configure)} {-takefocus -variable -value -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::radiobutton configure -textvariable)} n -set {::option(_obj,ttk::radiobutton configure -variable)} n -set {::option(_obj,ttk::scale cget)} {-takefocus -command -variable -orient -from -to -value -length -takefocus -cursor -style -class} -set {::option(_obj,ttk::scale configure)} {-takefocus -command -variable -orient -from -to -value -length -takefocus -cursor -style -class} -set {::option(_obj,ttk::scale configure -variable)} n -set {::option(_obj,ttk::scrollbar cget)} {-command -orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::scrollbar configure)} {-command -orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::separator cget)} {-orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::separator configure)} {-orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::sizegrip cget)} {-takefocus -cursor -style -class} -set {::option(_obj,ttk::sizegrip configure)} {-takefocus -cursor -style -class} -set {::option(_obj,ttk::treeview cget)} {-takefocus -columns -displaycolumns -show -selectmode -height -padding -xscrollcommand -yscrollcommand -takefocus -cursor -style -class} -set {::option(_obj,ttk::treeview configure)} {-takefocus -columns -displaycolumns -show -selectmode -height -padding -xscrollcommand -yscrollcommand -takefocus -cursor -style -class} -set ::option(bell) {-displayof -nice} -set ::option(button) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(button -textvariable)} n -set ::option(canvas) {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(chan puts)} -nonewline -set ::option(checkbutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(checkbutton -textvariable)} n -set {::option(checkbutton -variable)} n -set {::option(clock clicks)} {-microseconds -milliseconds} -set {::option(clock format)} {-format -gmt -locale -timezone} -set {::option(clock scan)} {-base -format -gmt -locale -timezone} -set ::option(entry) {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(entry -textvariable)} n -set ::option(exec) {-- -ignorestderr -keepnewline} -set ::option(fconfigure) {-blocking -buffering -buffersize -encoding -eofchar -error -handshake -lasterror -mode -peername -pollinterval -queue -sockname -sysbuffer -timeout -translation -ttycontrol -ttystatus -xchar} -set ::option(fcopy) {-command -size} -set {::option(file attributes)} {-group -owner -permissions} -set {::option(file copy)} {-- -force} -set {::option(file delete)} {-- -force} -set {::option(file link)} {-hard -symbolic} -set {::option(file rename)} {-- -force} -set ::option(focus) {-displayof -force -lastfor} -set ::option(frame) {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(glob) {-- -directory -join -nocomplain -path -tails -types} -set {::option(glob -directory)} 1 -set {::option(glob -path)} 1 -set {::option(glob -types)} 1 -set {::option(interp invokehidden)} {-- -global -namespace} -set {::option(interp invokehidden -namespace)} 1 -set ::option(label) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(label -textvariable)} n -set ::option(labelframe) {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(listbox) {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(listbox -listvariable)} n -set ::option(lsearch) {-all -ascii -decreasing -dictionary -exact -glob -increasing -index -inline -integer -nocase -not -real -regexp -sorted -start -subindices} -set {::option(lsearch -index)} 1 -set {::option(lsearch -start)} 1 -set ::option(lsort) {-ascii -command -decreasing -dictionary -increasing -index -indices -integer -nocase -real -unique} -set {::option(lsort -command)} 1 -set {::option(lsort -index)} 1 -set ::option(menu) {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set ::option(menubutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(menubutton -textvariable)} n -set ::option(message) {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(message -textvariable)} n -set {::option(namespace which)} {-variable -command} -set {::option(namespace which -variable)} v -set ::option(panedwindow) {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set ::option(puts) -nonewline -set ::option(radiobutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(radiobutton -textvariable)} n -set {::option(radiobutton -variable)} n -set ::option(regexp) {-- -about -all -expanded -indices -inline -line -lineanchor -linestop -nocase -start} -set {::option(regexp -start)} 1 -set ::option(regsub) {-- -all -expanded -line -lineanchor -linestop -nocase -start} -set {::option(regsub -start)} 1 -set ::option(scale) {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(scale -variable)} n -set ::option(scrollbar) {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set ::option(send) {-- -async -displayof} -set {::option(send -displayof)} 1 -set ::option(source) -encoding -set ::option(spinbox) {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(spinbox -textvariable)} n -set {::option(string compare)} {-length -nocase} -set {::option(string compare -length)} 1 -set {::option(string equal)} {-length -nocase} -set {::option(string equal -length)} 1 -set {::option(string is)} {-failindex -strict} -set {::option(string is -failindex)} n -set {::option(string map)} -nocase -set {::option(string match)} -nocase -set ::option(subst) {-nobackslashes -nocommands -novariables} -set ::option(switch) {-- -exact -glob -indexvar -matchvar -nocase -regexp} -set ::option(text) {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set ::option(tk::button) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(tk::button -textvariable)} n -set ::option(tk::canvas) {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set ::option(tk::checkbutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(tk::checkbutton -textvariable)} n -set {::option(tk::checkbutton -variable)} n -set ::option(tk::entry) {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(tk::entry -textvariable)} n -set ::option(tk::frame) {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(tk::label) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(tk::label -textvariable)} n -set ::option(tk::labelframe) {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(tk::listbox) {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(tk::listbox -listvariable)} n -set ::option(tk::menubutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(tk::menubutton -textvariable)} n -set ::option(tk::message) {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(tk::message -textvariable)} n -set ::option(tk::panedwindow) {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set ::option(tk::radiobutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(tk::radiobutton -textvariable)} n -set {::option(tk::radiobutton -variable)} n -set ::option(tk::scale) {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(tk::scale -variable)} n -set ::option(tk::scrollbar) {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set ::option(tk::spinbox) {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(tk::spinbox -textvariable)} n -set ::option(tk::text) {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set ::option(tk::toplevel) {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(tk_chooseColor) {-initialcolor -parent -title} -set ::option(tk_chooseDirectory) {-initialdir -mustexist -parent -title} -set ::option(tk_getOpenFile) {-defaultextension -filetypes -initialdir -initialfile -multiple -parent -title -typevariable} -set ::option(tk_getSaveFile) {-defaultextension -filetypes -initialdir -initialfile -parent -title -typevariable} -set ::option(tk_messageBox) {-default -detail -icon -message -parent -title -type} -set ::option(toplevel) {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(ttk::button) {-takefocus -command -default -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::button -textvariable)} n -set ::option(ttk::checkbutton) {-takefocus -variable -onvalue -offvalue -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::checkbutton -textvariable)} n -set {::option(ttk::checkbutton -variable)} n -set ::option(ttk::combobox) {-height -postcommand -values -takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(ttk::combobox -textvariable)} n -set ::option(ttk::entry) {-takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(ttk::entry -textvariable)} n -set ::option(ttk::frame) {-borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set ::option(ttk::label) {-background -foreground -font -borderwidth -relief -anchor -justify -wraplength -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::label -textvariable)} n -set ::option(ttk::labelframe) {-labelanchor -text -underline -labelwidget -borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set ::option(ttk::menubutton) {-takefocus -menu -direction -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::menubutton -textvariable)} n -set ::option(ttk::notebook) {-takefocus -width -height -padding -takefocus -cursor -style -class} -set ::option(ttk::panedwindow) {-orient -width -height -takefocus -cursor -style -class} -set ::option(ttk::progressbar) {-orient -length -mode -maximum -variable -value -phase -takefocus -cursor -style -class} -set {::option(ttk::progressbar -variable)} n -set ::option(ttk::radiobutton) {-takefocus -variable -value -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::radiobutton -textvariable)} n -set {::option(ttk::radiobutton -variable)} n -set ::option(ttk::scale) {-takefocus -command -variable -orient -from -to -value -length -takefocus -cursor -style -class} -set {::option(ttk::scale -variable)} n -set ::option(ttk::scrollbar) {-command -orient -takefocus -cursor -style -class} -set ::option(ttk::separator) {-orient -takefocus -cursor -style -class} -set ::option(ttk::sizegrip) {-takefocus -cursor -style -class} -set {::option(ttk::style theme create)} {-parent -settings} -set ::option(ttk::treeview) {-takefocus -columns -displaycolumns -show -selectmode -height -padding -xscrollcommand -yscrollcommand -takefocus -cursor -style -class} -set ::option(unload) {-- -keeplibrary -nocomplain} -set ::option(unset) {-nocomplain --} - diff --git a/etc/soft/nagelfar/syntaxdb84.tcl b/etc/soft/nagelfar/syntaxdb84.tcl deleted file mode 100644 index 9ee774e..0000000 --- a/etc/soft/nagelfar/syntaxdb84.tcl +++ /dev/null @@ -1,524 +0,0 @@ -# Automatically generated syntax database. - -lappend ::dbInfo {Tcl 8.4.18 unix, Tk 8.4.18 x11} -set ::dbTclVersion 8.4 -set ::knownGlobals {argc argv argv0 auto_index auto_oldpath auto_path env errorCode errorInfo tcl_interactive tcl_libPath tcl_library tcl_nonwordchars tcl_patchLevel tcl_pkgPath tcl_platform tcl_rcFileName tcl_version tcl_wordchars tk_library tk_patchLevel tk_strictMotif tk_version} -set ::knownCommands {. EvalAttached after append array auto_execok auto_import auto_load auto_load_index auto_mkindex auto_mkindex_old auto_qualify auto_reset bell bgerror binary bind bindtags break button canvas case catch cd checkbutton clipboard clock close concat continue destroy encoding entry eof error eval event exec exit expr fblocked fconfigure fcopy file fileevent flush focus font for foreach format frame gets glob global grab grid history if image incr info interp join label labelframe lappend lindex linsert list listbox llength load lower lrange lreplace lsearch lset lsort menu menubutton message msgcat::mc msgcat::mcload msgcat::mclocale msgcat::mcmax msgcat::mcmset msgcat::mcpreferences msgcat::mcset msgcat::mcunknown namespace open option pack package panedwindow parray pid pkg_compareExtension pkg_mkIndex place proc puts pwd radiobutton raise read regexp regsub rename return scale scan scrollbar seek selection send set socket source spinbox split string subst switch tclLdAout tclListValidFlags tclLog tclParseConfigSpec tclPkgSetup tclPkgUnknown tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tell text thread_load thread_source time tk tk_bindForTraversal tk_bisque tk_chooseColor tk_chooseDirectory tk_dialog tk_focusFollowsMouse tk_focusNext tk_focusPrev tk_getFileType tk_getOpenFile tk_getSaveFile tk_menuBar tk_menuSetFocus tk_messageBox tk_optionMenu tk_popup tk_setPalette tk_textCopy tk_textCut tk_textPaste tkwait toplevel trace unknown unset update uplevel upvar variable vwait while winfo wm} -set ::syntax(.) {s x*} -set {::syntax(. cget)} o -set {::syntax(. configure)} {o. x. p*} -set ::syntax(_obj,button) {s x*} -set {::syntax(_obj,button cget)} o -set {::syntax(_obj,button configure)} {o. x. p*} -set ::syntax(_obj,canvas) {s x*} -set {::syntax(_obj,canvas cget)} o -set {::syntax(_obj,canvas configure)} {o. x. p*} -set ::syntax(_obj,checkbutton) {s x*} -set {::syntax(_obj,checkbutton cget)} o -set {::syntax(_obj,checkbutton configure)} {o. x. p*} -set ::syntax(_obj,entry) {s x*} -set {::syntax(_obj,entry cget)} o -set {::syntax(_obj,entry configure)} {o. x. p*} -set ::syntax(_obj,frame) {s x*} -set {::syntax(_obj,frame cget)} o -set {::syntax(_obj,frame configure)} {o. x. p*} -set ::syntax(_obj,label) {s x*} -set {::syntax(_obj,label cget)} o -set {::syntax(_obj,label configure)} {o. x. p*} -set ::syntax(_obj,labelframe) {s x*} -set {::syntax(_obj,labelframe cget)} o -set {::syntax(_obj,labelframe configure)} {o. x. p*} -set ::syntax(_obj,listbox) {s x*} -set {::syntax(_obj,listbox cget)} o -set {::syntax(_obj,listbox configure)} {o. x. p*} -set {::syntax(_obj,listbox selection)} {s x x?} -set ::syntax(_obj,menu) {s x*} -set {::syntax(_obj,menu cget)} o -set {::syntax(_obj,menu configure)} {o. x. p*} -set ::syntax(_obj,menubutton) {s x*} -set {::syntax(_obj,menubutton cget)} o -set {::syntax(_obj,menubutton configure)} {o. x. p*} -set ::syntax(_obj,message) {s x*} -set {::syntax(_obj,message cget)} o -set {::syntax(_obj,message configure)} {o. x. p*} -set ::syntax(_obj,panedwindow) {s x*} -set {::syntax(_obj,panedwindow cget)} o -set {::syntax(_obj,panedwindow configure)} {o. x. p*} -set ::syntax(_obj,radiobutton) {s x*} -set {::syntax(_obj,radiobutton cget)} o -set {::syntax(_obj,radiobutton configure)} {o. x. p*} -set ::syntax(_obj,scale) {s x*} -set {::syntax(_obj,scale cget)} o -set {::syntax(_obj,scale configure)} {o. x. p*} -set ::syntax(_obj,scrollbar) {s x*} -set {::syntax(_obj,scrollbar cget)} o -set {::syntax(_obj,scrollbar configure)} {o. x. p*} -set ::syntax(_obj,spinbox) {s x*} -set {::syntax(_obj,spinbox cget)} o -set {::syntax(_obj,spinbox configure)} {o. x. p*} -set ::syntax(_obj,text) {s x*} -set {::syntax(_obj,text cget)} o -set {::syntax(_obj,text configure)} {o. x. p*} -set ::syntax(_obj,toplevel) {s x*} -set {::syntax(_obj,toplevel cget)} o -set {::syntax(_obj,toplevel configure)} {o. x. p*} -set ::syntax(after) {r 1} -set ::syntax(append) {n x*} -set ::syntax(array) {s v x?} -set {::syntax(array exists)} l -set {::syntax(array names)} {v x? x?} -set {::syntax(array set)} {n x} -set {::syntax(array size)} v -set {::syntax(array statistics)} v -set {::syntax(array unset)} {l x?} -set ::syntax(auto_execok) 1 -set ::syntax(auto_import) 1 -set ::syntax(auto_load) {r 1 2} -set ::syntax(auto_load_index) 0 -set ::syntax(auto_mkindex) {r 1} -set ::syntax(auto_mkindex_old) {r 1} -set ::syntax(auto_qualify) 2 -set ::syntax(auto_reset) 0 -set ::syntax(bell) {o* x*} -set ::syntax(bgerror) 1 -set ::syntax(binary) {s x*} -set {::syntax(binary scan)} {x x n n*} -set ::syntax(bind) {x x? cg?} -set ::syntax(bindtags) {x x?} -set ::syntax(break) 0 -set ::syntax(button) {x p*} -set ::syntax(canvas) {x p*} -set ::syntax(case) x* -set ::syntax(catch) {c n?} -set ::syntax(cd) {r 0 1} -set ::syntax(checkbutton) {x p*} -set ::syntax(clipboard) {s x*} -set ::syntax(clock) {s x*} -set {::syntax(clock clicks)} o? -set {::syntax(clock format)} {x p*} -set {::syntax(clock scan)} {x p*} -set {::syntax(clock seconds)} 0 -set ::syntax(close) 1 -set ::syntax(concat) {r 0} -set ::syntax(continue) 0 -set ::syntax(destroy) x* -set ::syntax(encoding) {s x*} -set {::syntax(encoding convertfrom)} {r 1 2} -set {::syntax(encoding convertto)} {r 1 2} -set {::syntax(encoding names)} 0 -set {::syntax(encoding system)} {r 0 1} -set ::syntax(entry) {x p*} -set ::syntax(eof) 1 -set ::syntax(error) {r 1 3} -set ::syntax(event) {s x*} -set ::syntax(exec) {o* x x*} -set ::syntax(exit) {r 0 1} -set ::syntax(fblocked) 1 -set ::syntax(fconfigure) {x o. x. p*} -set ::syntax(fcopy) {x x p*} -set ::syntax(file) {s x*} -set {::syntax(file atime)} {x x?} -set {::syntax(file attributes)} {x o. x. p*} -set {::syntax(file channels)} x? -set {::syntax(file copy)} {o* x x x*} -set {::syntax(file delete)} {o* x x*} -set {::syntax(file dirname)} x -set {::syntax(file executable)} x -set {::syntax(file exists)} x -set {::syntax(file extension)} x -set {::syntax(file isdirectory)} x -set {::syntax(file isfile)} x -set {::syntax(file join)} {x x*} -set {::syntax(file link)} {o? x x?} -set {::syntax(file lstat)} {x n} -set {::syntax(file mkdir)} {x x*} -set {::syntax(file mtime)} {x x?} -set {::syntax(file nativename)} x -set {::syntax(file normalize)} x -set {::syntax(file owned)} x -set {::syntax(file pathtype)} x -set {::syntax(file readable)} x -set {::syntax(file readlink)} x -set {::syntax(file rename)} {o* x x x*} -set {::syntax(file rootname)} x -set {::syntax(file separator)} x? -set {::syntax(file size)} x -set {::syntax(file split)} x -set {::syntax(file stat)} {x n} -set {::syntax(file system)} x -set {::syntax(file tail)} x -set {::syntax(file type)} x -set {::syntax(file volumes)} 0 -set {::syntax(file writable)} x -set ::syntax(fileevent) {x x x?} -set ::syntax(flush) 1 -set ::syntax(focus) {o? x?} -set ::syntax(font) {s x*} -set ::syntax(for) {c E c c} -set ::syntax(format) {r 1} -set ::syntax(frame) {x p*} -set ::syntax(gets) {x n?} -set ::syntax(glob) {o* x x*} -set ::syntax(grab) {x x*} -set ::syntax(grid) {x x*} -set ::syntax(history) {s x*} -set ::syntax(if) {e c} -set ::syntax(image) {s x*} -set ::syntax(incr) {v x?} -set ::syntax(info) {s x*} -set {::syntax(info default)} {x x n} -set {::syntax(info exists)} l -set ::syntax(interp) {s x*} -set {::syntax(interp invokehidden)} {x o* x x*} -set ::syntax(join) {r 1 2} -set ::syntax(label) {x p*} -set ::syntax(labelframe) {x p*} -set ::syntax(lappend) {n x*} -set ::syntax(lindex) {r 2} -set ::syntax(linsert) {r 3} -set ::syntax(list) {r 0} -set ::syntax(listbox) {x p*} -set ::syntax(llength) 1 -set ::syntax(load) {r 1 3} -set ::syntax(lower) {x x?} -set ::syntax(lrange) 3 -set ::syntax(lreplace) {r 3} -set ::syntax(lsearch) {o* x x} -set ::syntax(lset) {n x x x*} -set ::syntax(lsort) {o* x} -set ::syntax(menu) {x p*} -set ::syntax(menubutton) {x p*} -set ::syntax(message) {x p*} -set ::syntax(msgcat::mc) {r 1} -set ::syntax(msgcat::mcload) 1 -set ::syntax(msgcat::mclocale) {r 0} -set ::syntax(msgcat::mcmax) {r 0} -set ::syntax(msgcat::mcmset) 2 -set ::syntax(msgcat::mcpreferences) 0 -set ::syntax(msgcat::mcset) {r 2 3} -set ::syntax(msgcat::mcunknown) {r 2} -set ::syntax(namespace) {s x*} -set {::syntax(namespace import)} {o* x*} -set {::syntax(namespace which)} {o* x?} -set ::syntax(open) {r 1 3} -set ::syntax(option) {s x*} -set ::syntax(pack) {x x*} -set ::syntax(package) {s x*} -set ::syntax(panedwindow) {x p*} -set ::syntax(parray) {v x?} -set ::syntax(pid) {r 0 1} -set ::syntax(pkg_compareExtension) {r 1 2} -set ::syntax(pkg_mkIndex) {r 0} -set ::syntax(place) {x x*} -set ::syntax(proc) dp -set ::syntax(puts) {1: x : o? x x?} -set ::syntax(pwd) 0 -set ::syntax(radiobutton) {x p*} -set ::syntax(raise) {x x?} -set ::syntax(read) {r 1 2} -set ::syntax(regexp) {o* x x n*} -set ::syntax(regsub) {o* x x x n?} -set ::syntax(rename) 2 -set ::syntax(return) {p* x?} -set ::syntax(scale) {x p*} -set ::syntax(scan) {x x n*} -set ::syntax(scrollbar) {x p*} -set ::syntax(seek) {r 2 3} -set ::syntax(selection) {s x*} -set ::syntax(send) {o* x x x*} -set ::syntax(set) {1: v : n x} -set ::syntax(socket) {r 2} -set ::syntax(source) 1 -set ::syntax(spinbox) {x p*} -set ::syntax(split) {r 1 2} -set ::syntax(string) {s x x*} -set {::syntax(string bytelength)} 1 -set {::syntax(string compare)} {o* x x} -set {::syntax(string equal)} {o* x x} -set {::syntax(string first)} {r 2 3} -set {::syntax(string index)} 2 -set {::syntax(string is)} {s o* x} -set {::syntax(string last)} {r 2 3} -set {::syntax(string length)} 1 -set {::syntax(string map)} {o? x x} -set {::syntax(string match)} {o? x x} -set {::syntax(string range)} 3 -set {::syntax(string repeat)} 2 -set {::syntax(string replace)} {r 3 4} -set {::syntax(string tolower)} {r 1 3} -set {::syntax(string totitle)} {r 1 3} -set {::syntax(string toupper)} {r 1 3} -set {::syntax(string trim)} {r 1 2} -set {::syntax(string trimleft)} {r 1 2} -set {::syntax(string trimright)} {r 1 2} -set {::syntax(string wordend)} 2 -set {::syntax(string wordstart)} 2 -set ::syntax(subst) {o* x} -set ::syntax(tclLdAout) {r 0 3} -set ::syntax(tclListValidFlags) 1 -set ::syntax(tclLog) 1 -set ::syntax(tclParseConfigSpec) 4 -set ::syntax(tclPkgSetup) 4 -set ::syntax(tclPkgUnknown) {r 2 3} -set ::syntax(tcl_endOfWord) 2 -set ::syntax(tcl_findLibrary) 6 -set ::syntax(tcl_startOfNextWord) 2 -set ::syntax(tcl_startOfPreviousWord) 2 -set ::syntax(tcl_wordBreakAfter) 2 -set ::syntax(tcl_wordBreakBefore) 2 -set ::syntax(tell) 1 -set ::syntax(text) {x p*} -set ::syntax(thread_load) 1 -set ::syntax(thread_source) 1 -set ::syntax(time) {c x?} -set ::syntax(tk) {s x*} -set ::syntax(tk_bindForTraversal) {r 0} -set ::syntax(tk_bisque) 0 -set ::syntax(tk_chooseColor) p* -set ::syntax(tk_chooseDirectory) p* -set ::syntax(tk_dialog) {r 5} -set ::syntax(tk_focusFollowsMouse) 0 -set ::syntax(tk_focusNext) 1 -set ::syntax(tk_focusPrev) 1 -set ::syntax(tk_getFileType) 0 -set ::syntax(tk_getOpenFile) p* -set ::syntax(tk_getSaveFile) p* -set ::syntax(tk_menuBar) {r 0} -set ::syntax(tk_menuSetFocus) 1 -set ::syntax(tk_messageBox) p* -set ::syntax(tk_optionMenu) {r 3} -set ::syntax(tk_popup) {r 3 4} -set ::syntax(tk_setPalette) {r 0} -set ::syntax(tk_textCopy) 1 -set ::syntax(tk_textCut) 1 -set ::syntax(tk_textPaste) 1 -set ::syntax(tkwait) {s x} -set {::syntax(tkwait variable)} l -set ::syntax(toplevel) {x p*} -set ::syntax(trace) {s x x*} -set {::syntax(trace add)} {s x x x} -set {::syntax(trace add command)} {x x c3} -set {::syntax(trace add execution)} {x x c2} -set {::syntax(trace add variable)} {v x c3} -set {::syntax(trace info)} {s x x x} -set {::syntax(trace info command)} x -set {::syntax(trace info execution)} x -set {::syntax(trace info variable)} v -set {::syntax(trace remove)} {s x x x} -set {::syntax(trace remove command)} {x x x} -set {::syntax(trace remove execution)} {x x x} -set {::syntax(trace remove variable)} {v x x} -set {::syntax(trace variable)} {n x x} -set {::syntax(trace vdelete)} {v x x} -set {::syntax(trace vinfo)} l -set ::syntax(unknown) {r 0} -set ::syntax(unset) {o* l l*} -set ::syntax(update) s. -set ::syntax(vwait) n -set ::syntax(while) {E c} -set ::syntax(winfo) {s x x*} -set ::syntax(wm) {s x x*} - -set ::return(button) _obj,button -set ::return(canvas) _obj,canvas -set ::return(checkbutton) _obj,checkbutton -set ::return(entry) _obj,entry -set ::return(frame) _obj,frame -set ::return(label) _obj,label -set ::return(labelframe) _obj,labelframe -set ::return(linsert) list -set ::return(list) list -set ::return(listbox) _obj,listbox -set ::return(llength) int -set ::return(lrange) list -set ::return(lreplace) list -set ::return(lsort) list -set ::return(menu) _obj,menu -set ::return(menubutton) _obj,menubutton -set ::return(message) _obj,message -set ::return(panedwindow) _obj,panedwindow -set ::return(radiobutton) _obj,radiobutton -set ::return(scale) _obj,scale -set ::return(scrollbar) _obj,scrollbar -set ::return(spinbox) _obj,spinbox -set ::return(text) _obj,text -set ::return(toplevel) _obj,toplevel - -set ::subCmd(.) {cget configure} -set ::subCmd(_obj,button) {cget configure flash invoke} -set ::subCmd(_obj,canvas) {addtag bbox bind canvasx canvasy cget configure coords create dchars delete dtag find focus gettags icursor index insert itemcget itemconfigure lower move postscript raise scale scan select type xview yview} -set ::subCmd(_obj,checkbutton) {cget configure deselect flash invoke select toggle} -set ::subCmd(_obj,entry) {bbox cget configure delete get icursor index insert scan selection validate xview} -set ::subCmd(_obj,frame) {cget configure} -set ::subCmd(_obj,label) {cget configure} -set ::subCmd(_obj,labelframe) {cget configure} -set ::subCmd(_obj,listbox) {activate bbox cget configure curselection delete get index insert itemcget itemconfigure nearest scan see selection size xview yview} -set {::subCmd(_obj,listbox selection)} {anchor clear includes set} -set ::subCmd(_obj,menu) {activate add cget clone configure delete entrycget entryconfigure index insert invoke post postcascade type unpost yposition} -set ::subCmd(_obj,menubutton) {cget configure} -set ::subCmd(_obj,message) {cget configure} -set ::subCmd(_obj,panedwindow) {add cget configure forget identify panecget paneconfigure panes proxy sash} -set ::subCmd(_obj,radiobutton) {cget configure deselect flash invoke select} -set ::subCmd(_obj,scale) {cget configure coords get identify set} -set ::subCmd(_obj,scrollbar) {activate cget configure delta fraction get identify set} -set ::subCmd(_obj,spinbox) {bbox cget configure delete get icursor identify index insert invoke scan selection set validate xview} -set ::subCmd(_obj,text) {bbox cget compare configure debug delete dlineinfo dump edit get image index insert mark scan search see tag window xview yview} -set ::subCmd(_obj,toplevel) {cget configure} -set ::subCmd(array) {anymore donesearch exists get names nextelement set size startsearch statistics unset} -set ::subCmd(binary) {format scan} -set ::subCmd(clipboard) {append clear get} -set ::subCmd(clock) {clicks format scan seconds} -set ::subCmd(encoding) {convertfrom convertto names system} -set ::subCmd(event) {add delete generate info} -set ::subCmd(file) {atime attributes channels copy delete dirname executable exists extension isdirectory isfile join link lstat mkdir mtime nativename normalize owned pathtype readable readlink rename rootname separator size split stat system tail type volumes writable} -set ::subCmd(font) {actual configure create delete families measure metrics names} -set ::subCmd(history) {add change clear event info keep nextid redo} -set ::subCmd(image) {create delete height inuse names type types width} -set ::subCmd(info) {args body cmdcount commands complete default exists functions globals hostname level library loaded locals nameofexecutable patchlevel procs script sharedlibextension tclversion vars} -set ::subCmd(interp) {alias aliases create delete eval exists expose hidden hide invokehidden issafe marktrusted recursionlimit share slaves target transfer} -set ::subCmd(namespace) {children code current delete eval exists export forget import inscope origin parent qualifiers tail which} -set ::subCmd(option) {add clear get readfile} -set ::subCmd(package) {forget ifneeded names present provide require unknown vcompare versions vsatisfies} -set ::subCmd(selection) {clear get handle own} -set ::subCmd(string) {bytelength compare equal first index is last length map match range repeat replace tolower totitle toupper trim trimleft trimright wordend wordstart} -set {::subCmd(string is)} {alnum alpha ascii boolean control digit double false graph integer lower print punct space true upper wordchar xdigit} -set ::subCmd(tk) {appname caret scaling useinputmethods windowingsystem} -set ::subCmd(tkwait) {variable visibility window} -set ::subCmd(trace) {add info remove variable vdelete vinfo} -set {::subCmd(trace add)} {command execution variable} -set {::subCmd(trace info)} {command execution variable} -set {::subCmd(trace remove)} {command execution variable} -set ::subCmd(update) idletasks -set ::subCmd(winfo) {atom atomname cells children class colormapfull containing depth exists fpixels geometry height id interps ismapped manager name parent pathname pixels pointerx pointerxy pointery reqheight reqwidth rgb rootx rooty screen screencells screendepth screenheight screenmmheight screenmmwidth screenvisual screenwidth server toplevel viewable visual visualid visualsavailable vrootheight vrootwidth vrootx vrooty width x y} -set ::subCmd(wm) {aspect attributes client colormapwindows command deiconify focusmodel frame geometry grid group iconbitmap iconify iconmask iconname iconphoto iconposition iconwindow maxsize minsize overrideredirect positionfrom protocol resizable sizefrom stackorder state title transient withdraw} - -set {::option(. cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(. configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,button cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,button configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,button configure -textvariable)} n -set {::option(_obj,canvas cget)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,canvas configure)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,checkbutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -underline -variable -width -wraplength} -set {::option(_obj,checkbutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -underline -variable -width -wraplength} -set {::option(_obj,checkbutton configure -textvariable)} n -set {::option(_obj,checkbutton configure -variable)} n -set {::option(_obj,entry cget)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,entry configure)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,entry configure -textvariable)} n -set {::option(_obj,frame cget)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,frame configure)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,label cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,label configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,label configure -textvariable)} n -set {::option(_obj,labelframe cget)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,labelframe configure)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,listbox cget)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,listbox configure)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,listbox configure -listvariable)} n -set {::option(_obj,menu cget)} {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set {::option(_obj,menu configure)} {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set {::option(_obj,menubutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,menubutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,menubutton configure -textvariable)} n -set {::option(_obj,message cget)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,message configure)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,message configure -textvariable)} n -set {::option(_obj,panedwindow cget)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,panedwindow configure)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,radiobutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -underline -value -variable -width -wraplength} -set {::option(_obj,radiobutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -underline -value -variable -width -wraplength} -set {::option(_obj,radiobutton configure -textvariable)} n -set {::option(_obj,radiobutton configure -variable)} n -set {::option(_obj,scale cget)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,scale configure)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,scale configure -variable)} n -set {::option(_obj,scrollbar cget)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,scrollbar configure)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,spinbox cget)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,spinbox configure)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,spinbox configure -textvariable)} n -set {::option(_obj,text cget)} {-autoseparators -background -bd -bg -borderwidth -cursor -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -state -tabs -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,text configure)} {-autoseparators -background -bd -bg -borderwidth -cursor -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -state -tabs -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,toplevel cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,toplevel configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(bell) {-displayof -nice} -set ::option(button) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(button -textvariable)} n -set ::option(canvas) {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set ::option(checkbutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -underline -variable -width -wraplength} -set {::option(checkbutton -textvariable)} n -set {::option(checkbutton -variable)} n -set {::option(clock clicks)} -milliseconds -set {::option(clock format)} {-format -gmt} -set {::option(clock scan)} {-base -gmt} -set ::option(entry) {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(entry -textvariable)} n -set ::option(exec) {-- -keepnewline} -set ::option(fconfigure) {-blocking -buffering -buffersize -encoding -eofchar -error -handshake -lasterror -mode -peername -pollinterval -queue -sockname -sysbuffer -timeout -translation -ttycontrol -ttystatus -xchar} -set ::option(fcopy) {-command -size} -set {::option(file attributes)} {-group -owner -permissions} -set {::option(file copy)} {-- -force} -set {::option(file delete)} {-- -force} -set {::option(file link)} {-hard -symbolic} -set {::option(file rename)} {-- -force} -set ::option(focus) {-displayof -force -lastfor} -set ::option(frame) {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(glob) {-- -directory -join -nocomplain -path -tails -types} -set {::option(glob -directory)} 1 -set {::option(glob -path)} 1 -set {::option(glob -types)} 1 -set {::option(interp invokehidden)} {-- -global} -set ::option(label) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(label -textvariable)} n -set ::option(labelframe) {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(listbox) {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(listbox -listvariable)} n -set ::option(lsearch) {-all -ascii -decreasing -dictionary -exact -glob -increasing -inline -integer -not -real -regexp -sorted -start} -set {::option(lsearch -start)} 1 -set ::option(lsort) {-ascii -command -decreasing -dictionary -increasing -index -integer -real -unique} -set {::option(lsort -command)} 1 -set {::option(lsort -index)} 1 -set ::option(menu) {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set ::option(menubutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(menubutton -textvariable)} n -set ::option(message) {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(message -textvariable)} n -set {::option(namespace which)} {-variable -command} -set {::option(namespace which -variable)} v -set ::option(panedwindow) {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set ::option(puts) -nonewline -set ::option(radiobutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -underline -value -variable -width -wraplength} -set {::option(radiobutton -textvariable)} n -set {::option(radiobutton -variable)} n -set ::option(regexp) {-- -about -all -expanded -indices -inline -line -lineanchor -linestop -nocase -start} -set {::option(regexp -start)} 1 -set ::option(regsub) {-- -all -expanded -line -lineanchor -linestop -nocase -start} -set {::option(regsub -start)} 1 -set ::option(return) {-code -errorcode -errorinfo} -set ::option(scale) {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(scale -variable)} n -set ::option(scrollbar) {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set ::option(send) {-- -async -displayof} -set {::option(send -displayof)} 1 -set ::option(spinbox) {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(spinbox -textvariable)} n -set {::option(string compare)} {-length -nocase} -set {::option(string compare -length)} 1 -set {::option(string equal)} {-length -nocase} -set {::option(string equal -length)} 1 -set {::option(string is)} {-failindex -strict} -set {::option(string is -failindex)} n -set {::option(string map)} -nocase -set {::option(string match)} -nocase -set ::option(subst) {-nobackslashes -nocommands -novariables} -set ::option(switch) {-- -exact -glob -regexp} -set ::option(text) {-autoseparators -background -bd -bg -borderwidth -cursor -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -state -tabs -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set ::option(tk_chooseColor) {-initialcolor -parent -title} -set ::option(tk_chooseDirectory) {-initialdir -mustexist -parent -title} -set ::option(tk_getOpenFile) {-defaultextension -filetypes -initialdir -initialfile -multiple -parent -title} -set ::option(tk_getSaveFile) {-defaultextension -filetypes -initialdir -initialfile -parent -title} -set ::option(tk_messageBox) {-default -icon -message -parent -title -type} -set ::option(toplevel) {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(unset) {-nocomplain --} - diff --git a/etc/soft/nagelfar/syntaxdb86.tcl b/etc/soft/nagelfar/syntaxdb86.tcl deleted file mode 100644 index 4b26f4e..0000000 --- a/etc/soft/nagelfar/syntaxdb86.tcl +++ /dev/null @@ -1,1029 +0,0 @@ -# Automatically generated syntax database. - -lappend ::dbInfo {Tcl 8.6b1.2 unix, Tk 8.6b1.2 x11} -set ::dbTclVersion 8.6 -set ::knownGlobals {argc argv argv0 auto_index auto_path env errorCode errorInfo tcl_interactive tcl_library tcl_nonwordchars tcl_patchLevel tcl_pkgPath tcl_platform tcl_rcFileName tcl_version tcl_wordchars tk_library tk_patchLevel tk_strictMotif tk_version} -set ::knownCommands {. EvalAttached after append apply array auto_execok auto_import auto_load auto_load_index auto_mkindex auto_mkindex_old auto_qualify auto_reset bell bgerror binary bind bindtags break button canvas case catch cd chan checkbutton clipboard clock close concat continue coroutine destroy dict encoding entry eof error eval event exec exit expr fblocked fconfigure fcopy file fileevent flush focus font for foreach format frame gets glob global grab grid history if image image1 image2 image3 incr info interp join label labelframe lappend lassign lindex linsert list listbox llength load lower lrange lrepeat lreplace lreverse lsearch lset lsort menu menubutton message msgcat::mc msgcat::mcload msgcat::mclocale msgcat::mcmax msgcat::mcmset msgcat::mcpreferences msgcat::mcset msgcat::mcunknown my namespace oo::class oo::copy oo::define oo::objdefine oo::object open option pack package panedwindow parray pid pkg_mkIndex place proc puts pwd radiobutton raise read regexp regsub rename return scale scan scrollbar seek selection self send set socket source spinbox split string subst switch tailcall tcl::history tcl::pkgconfig tcl::prefix tclListValidFlags tclLog tclParseConfigSpec tclPkgSetup tclPkgUnknown tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tell text thread_load thread_source throw time tk tk::button tk::canvas tk::checkbutton tk::entry tk::frame tk::label tk::labelframe tk::listbox tk::menubutton tk::message tk::panedwindow tk::radiobutton tk::scale tk::scrollbar tk::spinbox tk::text tk::toplevel tk_bindForTraversal tk_bisque tk_chooseColor tk_chooseDirectory tk_dialog tk_focusFollowsMouse tk_focusNext tk_focusPrev tk_getFileType tk_getOpenFile tk_getSaveFile tk_menuBar tk_menuSetFocus tk_messageBox tk_optionMenu tk_popup tk_setPalette tk_textCopy tk_textCut tk_textPaste tkwait toplevel trace try ttk::button ttk::checkbutton ttk::combobox ttk::entry ttk::frame ttk::label ttk::labelframe ttk::menubutton ttk::notebook ttk::panedwindow ttk::progressbar ttk::radiobutton ttk::scale ttk::scrollbar ttk::separator ttk::setTheme ttk::sizegrip ttk::style ttk::themes ttk::treeview unknown unload unset update uplevel upvar variable vwait while winfo wm yield zlib} -set ::syntax(.) {s x*} -set {::syntax(. cget)} o -set {::syntax(. configure)} {o. x. p*} -set ::syntax(_obj,button) {s x*} -set {::syntax(_obj,button cget)} o -set {::syntax(_obj,button configure)} {o. x. p*} -set ::syntax(_obj,canvas) {s x*} -set {::syntax(_obj,canvas cget)} o -set {::syntax(_obj,canvas configure)} {o. x. p*} -set ::syntax(_obj,checkbutton) {s x*} -set {::syntax(_obj,checkbutton cget)} o -set {::syntax(_obj,checkbutton configure)} {o. x. p*} -set ::syntax(_obj,entry) {s x*} -set {::syntax(_obj,entry cget)} o -set {::syntax(_obj,entry configure)} {o. x. p*} -set ::syntax(_obj,frame) {s x*} -set {::syntax(_obj,frame cget)} o -set {::syntax(_obj,frame configure)} {o. x. p*} -set ::syntax(_obj,label) {s x*} -set {::syntax(_obj,label cget)} o -set {::syntax(_obj,label configure)} {o. x. p*} -set ::syntax(_obj,labelframe) {s x*} -set {::syntax(_obj,labelframe cget)} o -set {::syntax(_obj,labelframe configure)} {o. x. p*} -set ::syntax(_obj,listbox) {s x*} -set {::syntax(_obj,listbox cget)} o -set {::syntax(_obj,listbox configure)} {o. x. p*} -set {::syntax(_obj,listbox selection)} {s x x?} -set ::syntax(_obj,menu) {s x*} -set {::syntax(_obj,menu cget)} o -set {::syntax(_obj,menu configure)} {o. x. p*} -set ::syntax(_obj,menubutton) {s x*} -set {::syntax(_obj,menubutton cget)} o -set {::syntax(_obj,menubutton configure)} {o. x. p*} -set ::syntax(_obj,message) {s x*} -set {::syntax(_obj,message cget)} o -set {::syntax(_obj,message configure)} {o. x. p*} -set ::syntax(_obj,panedwindow) {s x*} -set {::syntax(_obj,panedwindow cget)} o -set {::syntax(_obj,panedwindow configure)} {o. x. p*} -set ::syntax(_obj,radiobutton) {s x*} -set {::syntax(_obj,radiobutton cget)} o -set {::syntax(_obj,radiobutton configure)} {o. x. p*} -set ::syntax(_obj,scale) {s x*} -set {::syntax(_obj,scale cget)} o -set {::syntax(_obj,scale configure)} {o. x. p*} -set ::syntax(_obj,scrollbar) {s x*} -set {::syntax(_obj,scrollbar cget)} o -set {::syntax(_obj,scrollbar configure)} {o. x. p*} -set ::syntax(_obj,spinbox) {s x*} -set {::syntax(_obj,spinbox cget)} o -set {::syntax(_obj,spinbox configure)} {o. x. p*} -set ::syntax(_obj,text) {s x*} -set {::syntax(_obj,text cget)} o -set {::syntax(_obj,text configure)} {o. x. p*} -set ::syntax(_obj,tk::button) {s x*} -set {::syntax(_obj,tk::button cget)} o -set {::syntax(_obj,tk::button configure)} {o. x. p*} -set ::syntax(_obj,tk::canvas) {s x*} -set {::syntax(_obj,tk::canvas cget)} o -set {::syntax(_obj,tk::canvas configure)} {o. x. p*} -set ::syntax(_obj,tk::checkbutton) {s x*} -set {::syntax(_obj,tk::checkbutton cget)} o -set {::syntax(_obj,tk::checkbutton configure)} {o. x. p*} -set ::syntax(_obj,tk::entry) {s x*} -set {::syntax(_obj,tk::entry cget)} o -set {::syntax(_obj,tk::entry configure)} {o. x. p*} -set ::syntax(_obj,tk::frame) {s x*} -set {::syntax(_obj,tk::frame cget)} o -set {::syntax(_obj,tk::frame configure)} {o. x. p*} -set ::syntax(_obj,tk::label) {s x*} -set {::syntax(_obj,tk::label cget)} o -set {::syntax(_obj,tk::label configure)} {o. x. p*} -set ::syntax(_obj,tk::labelframe) {s x*} -set {::syntax(_obj,tk::labelframe cget)} o -set {::syntax(_obj,tk::labelframe configure)} {o. x. p*} -set ::syntax(_obj,tk::listbox) {s x*} -set {::syntax(_obj,tk::listbox cget)} o -set {::syntax(_obj,tk::listbox configure)} {o. x. p*} -set ::syntax(_obj,tk::menubutton) {s x*} -set {::syntax(_obj,tk::menubutton cget)} o -set {::syntax(_obj,tk::menubutton configure)} {o. x. p*} -set ::syntax(_obj,tk::message) {s x*} -set {::syntax(_obj,tk::message cget)} o -set {::syntax(_obj,tk::message configure)} {o. x. p*} -set ::syntax(_obj,tk::panedwindow) {s x*} -set {::syntax(_obj,tk::panedwindow cget)} o -set {::syntax(_obj,tk::panedwindow configure)} {o. x. p*} -set ::syntax(_obj,tk::radiobutton) {s x*} -set {::syntax(_obj,tk::radiobutton cget)} o -set {::syntax(_obj,tk::radiobutton configure)} {o. x. p*} -set ::syntax(_obj,tk::scale) {s x*} -set {::syntax(_obj,tk::scale cget)} o -set {::syntax(_obj,tk::scale configure)} {o. x. p*} -set ::syntax(_obj,tk::scrollbar) {s x*} -set {::syntax(_obj,tk::scrollbar cget)} o -set {::syntax(_obj,tk::scrollbar configure)} {o. x. p*} -set ::syntax(_obj,tk::spinbox) {s x*} -set {::syntax(_obj,tk::spinbox cget)} o -set {::syntax(_obj,tk::spinbox configure)} {o. x. p*} -set ::syntax(_obj,tk::text) {s x*} -set {::syntax(_obj,tk::text cget)} o -set {::syntax(_obj,tk::text configure)} {o. x. p*} -set ::syntax(_obj,tk::toplevel) {s x*} -set {::syntax(_obj,tk::toplevel cget)} o -set {::syntax(_obj,tk::toplevel configure)} {o. x. p*} -set ::syntax(_obj,toplevel) {s x*} -set {::syntax(_obj,toplevel cget)} o -set {::syntax(_obj,toplevel configure)} {o. x. p*} -set ::syntax(_obj,ttk::button) {s x*} -set {::syntax(_obj,ttk::button cget)} o -set {::syntax(_obj,ttk::button configure)} {o. x. p*} -set ::syntax(_obj,ttk::checkbutton) {s x*} -set {::syntax(_obj,ttk::checkbutton cget)} o -set {::syntax(_obj,ttk::checkbutton configure)} {o. x. p*} -set ::syntax(_obj,ttk::combobox) {s x*} -set {::syntax(_obj,ttk::combobox cget)} o -set {::syntax(_obj,ttk::combobox configure)} {o. x. p*} -set ::syntax(_obj,ttk::entry) {s x*} -set {::syntax(_obj,ttk::entry cget)} o -set {::syntax(_obj,ttk::entry configure)} {o. x. p*} -set ::syntax(_obj,ttk::frame) {s x*} -set {::syntax(_obj,ttk::frame cget)} o -set {::syntax(_obj,ttk::frame configure)} {o. x. p*} -set ::syntax(_obj,ttk::label) {s x*} -set {::syntax(_obj,ttk::label cget)} o -set {::syntax(_obj,ttk::label configure)} {o. x. p*} -set ::syntax(_obj,ttk::labelframe) {s x*} -set {::syntax(_obj,ttk::labelframe cget)} o -set {::syntax(_obj,ttk::labelframe configure)} {o. x. p*} -set ::syntax(_obj,ttk::menubutton) {s x*} -set {::syntax(_obj,ttk::menubutton cget)} o -set {::syntax(_obj,ttk::menubutton configure)} {o. x. p*} -set ::syntax(_obj,ttk::notebook) {s x*} -set {::syntax(_obj,ttk::notebook cget)} o -set {::syntax(_obj,ttk::notebook configure)} {o. x. p*} -set ::syntax(_obj,ttk::panedwindow) {s x*} -set {::syntax(_obj,ttk::panedwindow cget)} o -set {::syntax(_obj,ttk::panedwindow configure)} {o. x. p*} -set ::syntax(_obj,ttk::progressbar) {s x*} -set {::syntax(_obj,ttk::progressbar cget)} o -set {::syntax(_obj,ttk::progressbar configure)} {o. x. p*} -set ::syntax(_obj,ttk::radiobutton) {s x*} -set {::syntax(_obj,ttk::radiobutton cget)} o -set {::syntax(_obj,ttk::radiobutton configure)} {o. x. p*} -set ::syntax(_obj,ttk::scale) {s x*} -set {::syntax(_obj,ttk::scale cget)} o -set {::syntax(_obj,ttk::scale configure)} {o. x. p*} -set ::syntax(_obj,ttk::scrollbar) {s x*} -set {::syntax(_obj,ttk::scrollbar cget)} o -set {::syntax(_obj,ttk::scrollbar configure)} {o. x. p*} -set ::syntax(_obj,ttk::separator) {s x*} -set {::syntax(_obj,ttk::separator cget)} o -set {::syntax(_obj,ttk::separator configure)} {o. x. p*} -set ::syntax(_obj,ttk::sizegrip) {s x*} -set {::syntax(_obj,ttk::sizegrip cget)} o -set {::syntax(_obj,ttk::sizegrip configure)} {o. x. p*} -set ::syntax(_obj,ttk::treeview) {s x*} -set {::syntax(_obj,ttk::treeview cget)} o -set {::syntax(_obj,ttk::treeview configure)} {o. x. p*} -set ::syntax(_stdclass_oo) {s x*} -set {::syntax(_stdclass_oo create)} {dc=_obj,_stdclass_oo x?} -set {::syntax(_stdclass_oo destroy)} 0 -set {::syntax(_stdclass_oo new)} 0 -set {::syntax(_stdclass_oo variable)} n* -set ::syntax(after) {r 1} -set ::syntax(append) {n x*} -set ::syntax(apply) {x x*} -set ::syntax(array) {s v x?} -set {::syntax(array exists)} l -set {::syntax(array names)} {v x? x?} -set {::syntax(array set)} {n x} -set {::syntax(array size)} v -set {::syntax(array statistics)} v -set {::syntax(array unset)} {l x?} -set ::syntax(auto_execok) 1 -set ::syntax(auto_import) 1 -set ::syntax(auto_load) {r 1 2} -set ::syntax(auto_load_index) 0 -set ::syntax(auto_mkindex) {r 1} -set ::syntax(auto_mkindex_old) {r 1} -set ::syntax(auto_qualify) 2 -set ::syntax(auto_reset) 0 -set ::syntax(bell) {o* x*} -set ::syntax(bgerror) 1 -set ::syntax(binary) {s x*} -set {::syntax(binary decode)} {s x*} -set {::syntax(binary decode base64)} {o* x} -set {::syntax(binary decode hex)} {o* x} -set {::syntax(binary decode uuencode)} {o* x} -set {::syntax(binary encode)} {s x*} -set {::syntax(binary encode base64)} {p* x} -set {::syntax(binary encode hex)} x -set {::syntax(binary encode uuencode)} {p* x} -set {::syntax(binary scan)} {x x n n*} -set ::syntax(bind) {x x? cg?} -set ::syntax(bindtags) {x x?} -set ::syntax(break) 0 -set ::syntax(button) {x p*} -set ::syntax(canvas) {x p*} -set ::syntax(case) x* -set ::syntax(catch) {c n? n?} -set ::syntax(cd) {r 0 1} -set ::syntax(chan) {s x*} -set {::syntax(chan blocked)} x -set {::syntax(chan close)} {x x?} -set {::syntax(chan configure)} {x o. x. p*} -set {::syntax(chan copy)} {x x p*} -set {::syntax(chan create)} {x x} -set {::syntax(chan eof)} x -set {::syntax(chan event)} {x x cg?} -set {::syntax(chan flush)} x -set {::syntax(chan gets)} {x n?} -set {::syntax(chan names)} x? -set {::syntax(chan pending)} {x x} -set {::syntax(chan pipe)} 0 -set {::syntax(chan pop)} x -set {::syntax(chan postevent)} {x x} -set {::syntax(chan push)} {x c} -set {::syntax(chan puts)} {1: x : o? x x?} -set {::syntax(chan read)} {x x?} -set {::syntax(chan seek)} {r 2 3} -set {::syntax(chan tell)} 1 -set {::syntax(chan truncate)} {x x?} -set ::syntax(checkbutton) {x p*} -set ::syntax(clipboard) {s x*} -set ::syntax(clock) {s x*} -set {::syntax(clock clicks)} o? -set {::syntax(clock format)} {x p*} -set {::syntax(clock scan)} {x p*} -set {::syntax(clock seconds)} 0 -set ::syntax(close) {x x?} -set ::syntax(concat) {r 0} -set ::syntax(continue) 0 -set ::syntax(coroutine) {x x x*} -set ::syntax(destroy) x* -set ::syntax(dict) {s x*} -set {::syntax(dict append)} {n x x*} -set {::syntax(dict filter)} {x x x*} -set {::syntax(dict for)} {x x c} -set {::syntax(dict incr)} {n x x*} -set {::syntax(dict lappend)} {n x x*} -set {::syntax(dict set)} {n x x*} -set {::syntax(dict unset)} {n x x*} -set {::syntax(dict update)} {n x x x* c} -set {::syntax(dict with)} {n x* c} -set ::syntax(encoding) {s x*} -set {::syntax(encoding convertfrom)} {r 1 2} -set {::syntax(encoding convertto)} {r 1 2} -set {::syntax(encoding names)} 0 -set {::syntax(encoding system)} {r 0 1} -set ::syntax(entry) {x p*} -set ::syntax(eof) 1 -set ::syntax(error) {r 1 3} -set ::syntax(event) {s x*} -set ::syntax(exec) {o* x x*} -set ::syntax(exit) {r 0 1} -set ::syntax(fblocked) 1 -set ::syntax(fconfigure) {x o. x. p*} -set ::syntax(fcopy) {x x p*} -set ::syntax(file) {s x*} -set {::syntax(file atime)} {x x?} -set {::syntax(file attributes)} {x o. x. p*} -set {::syntax(file channels)} x? -set {::syntax(file copy)} {o* x x x*} -set {::syntax(file delete)} {o* x*} -set {::syntax(file dirname)} x -set {::syntax(file executable)} x -set {::syntax(file exists)} x -set {::syntax(file extension)} x -set {::syntax(file isdirectory)} x -set {::syntax(file isfile)} x -set {::syntax(file join)} {x x*} -set {::syntax(file link)} {o? x x?} -set {::syntax(file lstat)} {x n} -set {::syntax(file mkdir)} x* -set {::syntax(file mtime)} {x x?} -set {::syntax(file nativename)} x -set {::syntax(file normalize)} x -set {::syntax(file owned)} x -set {::syntax(file pathtype)} x -set {::syntax(file readable)} x -set {::syntax(file readlink)} x -set {::syntax(file rename)} {o* x x x*} -set {::syntax(file rootname)} x -set {::syntax(file separator)} x? -set {::syntax(file size)} x -set {::syntax(file split)} x -set {::syntax(file stat)} {x n} -set {::syntax(file system)} x -set {::syntax(file tail)} x -set {::syntax(file tempfile)} {n? x?*} -set {::syntax(file type)} x -set {::syntax(file volumes)} 0 -set {::syntax(file writable)} x -set ::syntax(fileevent) {x x x?} -set ::syntax(flush) 1 -set ::syntax(focus) {o? x?} -set ::syntax(font) {s x*} -set ::syntax(for) {c E c c} -set ::syntax(format) {r 1} -set ::syntax(frame) {x p*} -set ::syntax(gets) {x n?} -set ::syntax(glob) {o* x*} -set ::syntax(grab) {x x*} -set ::syntax(grid) {x x*} -set ::syntax(history) {s x*} -set ::syntax(if) {e c} -set ::syntax(image) {s x*} -set ::syntax(incr) {n x?} -set ::syntax(info) {s x*} -set {::syntax(info class)} {s x x*} -set {::syntax(info coroutine)} 0 -set {::syntax(info default)} {x x n} -set {::syntax(info exists)} l -set {::syntax(info object)} {s x x*} -set ::syntax(interp) {s x*} -set {::syntax(interp cancel)} {o* x? x?} -set {::syntax(interp invokehidden)} {x o* x x*} -set ::syntax(join) {r 1 2} -set ::syntax(label) {x p*} -set ::syntax(labelframe) {x p*} -set ::syntax(lappend) {n x*} -set ::syntax(lassign) {x n*} -set ::syntax(lindex) {r 2} -set ::syntax(linsert) {r 2} -set ::syntax(list) {r 0} -set ::syntax(listbox) {x p*} -set ::syntax(llength) 1 -set ::syntax(load) {r 1 3} -set ::syntax(lower) {x x?} -set ::syntax(lrange) 3 -set ::syntax(lrepeat) {r 1} -set ::syntax(lreplace) {r 3} -set ::syntax(lreverse) 1 -set ::syntax(lsearch) {o* x x} -set ::syntax(lset) {n x x x*} -set ::syntax(lsort) {o* x} -set ::syntax(menu) {x p*} -set ::syntax(menubutton) {x p*} -set ::syntax(message) {x p*} -set ::syntax(msgcat::mc) {r 1} -set ::syntax(msgcat::mcload) 1 -set ::syntax(msgcat::mclocale) {r 0} -set ::syntax(msgcat::mcmax) {r 0} -set ::syntax(msgcat::mcmset) 2 -set ::syntax(msgcat::mcpreferences) 0 -set ::syntax(msgcat::mcset) {r 2 3} -set ::syntax(msgcat::mcunknown) {r 2} -set ::syntax(my) {s x*} -set {::syntax(my variable)} n* -set ::syntax(namespace) {s x*} -set {::syntax(namespace import)} {o* x*} -set {::syntax(namespace which)} {o* x?} -set ::syntax(oo::class) {s x*} -set {::syntax(oo::class create)} {do=_stdclass_oo cn?} -set {::syntax(oo::class create::constructor)} dk -set {::syntax(oo::class create::destructor)} c -set {::syntax(oo::class create::method)} dm -set {::syntax(oo::class create::superclass)} di -set ::syntax(oo::copy) {x x?} -set ::syntax(oo::define) {2: x cn : x s x x*} -set {::syntax(oo::define constructor)} cv -set {::syntax(oo::define destructor)} cl -set {::syntax(oo::define method)} {x cv} -set ::syntax(oo::define::constructor) cv -set ::syntax(oo::define::denstructor) cl -set ::syntax(oo::define::forward) {x x x*} -set ::syntax(oo::define::method) {x cv} -set ::syntax(oo::define::unexport) {x x*} -set ::syntax(oo::objdefine) {2: x cn : x s x x*} -set {::syntax(oo::objdefine constructor)} cv -set {::syntax(oo::objdefine destructor)} cl -set {::syntax(oo::objdefine method)} {x cv} -set ::syntax(oo::objdefine::constructor) cv -set ::syntax(oo::objdefine::destructor) cl -set ::syntax(oo::objdefine::forward) {x x x*} -set ::syntax(oo::objdefine::method) {x cv} -set ::syntax(oo::objdefine::unexport) {x x*} -set ::syntax(oo::object) {s x*} -set ::syntax(open) {r 1 3} -set ::syntax(option) {s x*} -set ::syntax(pack) {x x*} -set ::syntax(package) {s x*} -set ::syntax(panedwindow) {x p*} -set ::syntax(parray) {v x?} -set ::syntax(pid) {r 0 1} -set ::syntax(pkg_mkIndex) {r 0} -set ::syntax(place) {x x*} -set ::syntax(proc) dp -set ::syntax(puts) {1: x : o? x x?} -set ::syntax(pwd) 0 -set ::syntax(radiobutton) {x p*} -set ::syntax(raise) {x x?} -set ::syntax(read) {r 1 2} -set ::syntax(regexp) {o* x x n*} -set ::syntax(regsub) {o* x x x n?} -set ::syntax(rename) 2 -set ::syntax(return) {p* x?} -set ::syntax(scale) {x p*} -set ::syntax(scan) {x x n*} -set ::syntax(scrollbar) {x p*} -set ::syntax(seek) {r 2 3} -set ::syntax(selection) {s x*} -set ::syntax(self) s? -set ::syntax(send) {o* x x x*} -set ::syntax(set) {1: v : n x} -set ::syntax(socket) {r 2} -set ::syntax(source) {p* x} -set ::syntax(spinbox) {x p*} -set ::syntax(split) {r 1 2} -set ::syntax(string) {s x x*} -set {::syntax(string bytelength)} 1 -set {::syntax(string compare)} {o* x x} -set {::syntax(string equal)} {o* x x} -set {::syntax(string first)} {r 2 3} -set {::syntax(string index)} 2 -set {::syntax(string is)} {s o* x} -set {::syntax(string last)} {r 2 3} -set {::syntax(string length)} 1 -set {::syntax(string map)} {o? x x} -set {::syntax(string match)} {o? x x} -set {::syntax(string range)} 3 -set {::syntax(string repeat)} 2 -set {::syntax(string replace)} {r 3 4} -set {::syntax(string reverse)} 1 -set {::syntax(string tolower)} {r 1 3} -set {::syntax(string totitle)} {r 1 3} -set {::syntax(string toupper)} {r 1 3} -set {::syntax(string trim)} {r 1 2} -set {::syntax(string trimleft)} {r 1 2} -set {::syntax(string trimright)} {r 1 2} -set {::syntax(string wordend)} 2 -set {::syntax(string wordstart)} 2 -set ::syntax(subst) {o* x} -set ::syntax(tcl::prefix) {s x*} -set {::syntax(tcl::prefix all)} {x x} -set {::syntax(tcl::prefix longest)} {x x} -set {::syntax(tcl::prefix match)} {o* x x} -set ::syntax(tclListValidFlags) 1 -set ::syntax(tclLog) 1 -set ::syntax(tclParseConfigSpec) 4 -set ::syntax(tclPkgSetup) 4 -set ::syntax(tclPkgUnknown) {r 1} -set ::syntax(tcl_endOfWord) 2 -set ::syntax(tcl_findLibrary) 6 -set ::syntax(tcl_startOfNextWord) 2 -set ::syntax(tcl_startOfPreviousWord) 2 -set ::syntax(tcl_wordBreakAfter) 2 -set ::syntax(tcl_wordBreakBefore) 2 -set ::syntax(tell) 1 -set ::syntax(text) {x p*} -set ::syntax(thread_load) 1 -set ::syntax(thread_source) 1 -set ::syntax(throw) 2 -set ::syntax(time) {c x?} -set ::syntax(tk) {s x*} -set ::syntax(tk::button) {x p*} -set ::syntax(tk::canvas) {x p*} -set ::syntax(tk::checkbutton) {x p*} -set ::syntax(tk::entry) {x p*} -set ::syntax(tk::frame) {x p*} -set ::syntax(tk::label) {x p*} -set ::syntax(tk::labelframe) {x p*} -set ::syntax(tk::listbox) {x p*} -set ::syntax(tk::menubutton) {x p*} -set ::syntax(tk::message) {x p*} -set ::syntax(tk::panedwindow) {x p*} -set ::syntax(tk::radiobutton) {x p*} -set ::syntax(tk::scale) {x p*} -set ::syntax(tk::scrollbar) {x p*} -set ::syntax(tk::spinbox) {x p*} -set ::syntax(tk::text) {x p*} -set ::syntax(tk::toplevel) {x p*} -set ::syntax(tk_bindForTraversal) {r 0} -set ::syntax(tk_bisque) 0 -set ::syntax(tk_chooseColor) p* -set ::syntax(tk_chooseDirectory) p* -set ::syntax(tk_dialog) {r 5} -set ::syntax(tk_focusFollowsMouse) 0 -set ::syntax(tk_focusNext) 1 -set ::syntax(tk_focusPrev) 1 -set ::syntax(tk_getFileType) 0 -set ::syntax(tk_getOpenFile) p* -set ::syntax(tk_getSaveFile) p* -set ::syntax(tk_menuBar) {r 0} -set ::syntax(tk_menuSetFocus) 1 -set ::syntax(tk_messageBox) p* -set ::syntax(tk_optionMenu) {r 3} -set ::syntax(tk_popup) {r 3 4} -set ::syntax(tk_setPalette) {r 0} -set ::syntax(tk_textCopy) 1 -set ::syntax(tk_textCut) 1 -set ::syntax(tk_textPaste) 1 -set ::syntax(tkwait) {s x} -set {::syntax(tkwait variable)} l -set ::syntax(toplevel) {x p*} -set ::syntax(trace) {s x x*} -set {::syntax(trace add)} {s x x x} -set {::syntax(trace add command)} {x x c3} -set {::syntax(trace add execution)} {x x c2} -set {::syntax(trace add variable)} {v x c3} -set {::syntax(trace info)} {s x x x} -set {::syntax(trace info command)} x -set {::syntax(trace info execution)} x -set {::syntax(trace info variable)} v -set {::syntax(trace remove)} {s x x x} -set {::syntax(trace remove command)} {x x x} -set {::syntax(trace remove execution)} {x x x} -set {::syntax(trace remove variable)} {v x x} -set {::syntax(trace variable)} {n x x} -set {::syntax(trace vdelete)} {v x x} -set {::syntax(trace vinfo)} l -set ::syntax(try) {r 0} -set ::syntax(ttk::button) {x p*} -set ::syntax(ttk::checkbutton) {x p*} -set ::syntax(ttk::combobox) {x p*} -set ::syntax(ttk::entry) {x p*} -set ::syntax(ttk::frame) {x p*} -set ::syntax(ttk::label) {x p*} -set ::syntax(ttk::labelframe) {x p*} -set ::syntax(ttk::menubutton) {x p*} -set ::syntax(ttk::notebook) {x p*} -set ::syntax(ttk::panedwindow) {x p*} -set ::syntax(ttk::progressbar) {x p*} -set ::syntax(ttk::radiobutton) {x p*} -set ::syntax(ttk::scale) {x p*} -set ::syntax(ttk::scrollbar) {x p*} -set ::syntax(ttk::separator) {x p*} -set ::syntax(ttk::setTheme) x -set ::syntax(ttk::sizegrip) {x p*} -set ::syntax(ttk::style) {s x*} -set {::syntax(ttk::style configure)} {x o. x. p*} -set {::syntax(ttk::style element)} {s x*} -set {::syntax(ttk::style element create)} {x x x*} -set {::syntax(ttk::style element names)} 0 -set {::syntax(ttk::style element options)} x -set {::syntax(ttk::style layout)} {x x?} -set {::syntax(ttk::style lookup)} {r 2 4} -set {::syntax(ttk::style map)} {x p*} -set {::syntax(ttk::style theme)} {s x*} -set {::syntax(ttk::style theme create)} {x p*} -set {::syntax(ttk::style theme names)} 0 -set {::syntax(ttk::style theme settings)} 2 -set {::syntax(ttk::style theme use)} x -set ::syntax(ttk::themes) x? -set ::syntax(ttk::treeview) {x p*} -set ::syntax(unknown) {r 0} -set ::syntax(unload) {o* x x*} -set ::syntax(unset) {o* l l*} -set ::syntax(update) s. -set ::syntax(vwait) n -set ::syntax(while) {E c} -set ::syntax(winfo) {s x x*} -set ::syntax(wm) {s x x*} -set ::syntax(yield) x? -set ::syntax(zlib) {s x*} -set {::syntax(zlib adler32)} {x x?} -set {::syntax(zlib compress)} {x x?} -set {::syntax(zlib crc32)} {x x?} -set {::syntax(zlib decompress)} {x x?} -set {::syntax(zlib deflate)} {x x?} -set {::syntax(zlib gunzip)} {x p*} -set {::syntax(zlib gzip)} {x p*} -set {::syntax(zlib inflate)} {x x?} -set {::syntax(zlib push)} {s x*} -set {::syntax(zlib stream)} {s x*} - -set {::return(_stdclass_oo create)} _obj,_stdclass_oo -set {::return(_stdclass_oo new)} _obj,_stdclass_oo -set ::return(button) _obj,button -set ::return(canvas) _obj,canvas -set ::return(checkbutton) _obj,checkbutton -set ::return(entry) _obj,entry -set ::return(frame) _obj,frame -set ::return(label) _obj,label -set ::return(labelframe) _obj,labelframe -set ::return(linsert) list -set ::return(list) list -set ::return(listbox) _obj,listbox -set ::return(llength) int -set ::return(lrange) list -set ::return(lreplace) list -set ::return(lsort) list -set ::return(menu) _obj,menu -set ::return(menubutton) _obj,menubutton -set ::return(message) _obj,message -set ::return(panedwindow) _obj,panedwindow -set ::return(radiobutton) _obj,radiobutton -set ::return(scale) _obj,scale -set ::return(scrollbar) _obj,scrollbar -set ::return(spinbox) _obj,spinbox -set ::return(text) _obj,text -set ::return(tk::button) _obj,tk::button -set ::return(tk::canvas) _obj,tk::canvas -set ::return(tk::checkbutton) _obj,tk::checkbutton -set ::return(tk::entry) _obj,tk::entry -set ::return(tk::frame) _obj,tk::frame -set ::return(tk::label) _obj,tk::label -set ::return(tk::labelframe) _obj,tk::labelframe -set ::return(tk::listbox) _obj,tk::listbox -set ::return(tk::menubutton) _obj,tk::menubutton -set ::return(tk::message) _obj,tk::message -set ::return(tk::panedwindow) _obj,tk::panedwindow -set ::return(tk::radiobutton) _obj,tk::radiobutton -set ::return(tk::scale) _obj,tk::scale -set ::return(tk::scrollbar) _obj,tk::scrollbar -set ::return(tk::spinbox) _obj,tk::spinbox -set ::return(tk::text) _obj,tk::text -set ::return(tk::toplevel) _obj,tk::toplevel -set ::return(toplevel) _obj,toplevel -set ::return(ttk::button) _obj,ttk::button -set ::return(ttk::checkbutton) _obj,ttk::checkbutton -set ::return(ttk::combobox) _obj,ttk::combobox -set ::return(ttk::entry) _obj,ttk::entry -set ::return(ttk::frame) _obj,ttk::frame -set ::return(ttk::label) _obj,ttk::label -set ::return(ttk::labelframe) _obj,ttk::labelframe -set ::return(ttk::menubutton) _obj,ttk::menubutton -set ::return(ttk::notebook) _obj,ttk::notebook -set ::return(ttk::panedwindow) _obj,ttk::panedwindow -set ::return(ttk::progressbar) _obj,ttk::progressbar -set ::return(ttk::radiobutton) _obj,ttk::radiobutton -set ::return(ttk::scale) _obj,ttk::scale -set ::return(ttk::scrollbar) _obj,ttk::scrollbar -set ::return(ttk::separator) _obj,ttk::separator -set ::return(ttk::sizegrip) _obj,ttk::sizegrip -set ::return(ttk::treeview) _obj,ttk::treeview - -set ::subCmd(.) {cget configure} -set ::subCmd(_obj,button) {cget configure flash invoke} -set ::subCmd(_obj,canvas) {addtag bbox bind canvasx canvasy cget configure coords create dchars delete dtag find focus gettags icursor imove index insert itemcget itemconfigure lower move moveto postscript raise rchars scale scan select type xview yview} -set ::subCmd(_obj,checkbutton) {cget configure deselect flash invoke select toggle} -set ::subCmd(_obj,entry) {bbox cget configure delete get icursor index insert scan selection validate xview} -set ::subCmd(_obj,frame) {cget configure} -set ::subCmd(_obj,label) {cget configure} -set ::subCmd(_obj,labelframe) {cget configure} -set ::subCmd(_obj,listbox) {activate bbox cget configure curselection delete get index insert itemcget itemconfigure nearest scan see selection size xview yview} -set {::subCmd(_obj,listbox selection)} {anchor clear includes set} -set ::subCmd(_obj,menu) {activate add cget clone configure delete entrycget entryconfigure index insert invoke post postcascade type unpost xposition yposition} -set ::subCmd(_obj,menubutton) {cget configure} -set ::subCmd(_obj,message) {cget configure} -set ::subCmd(_obj,panedwindow) {add cget configure forget identify panecget paneconfigure panes proxy sash} -set ::subCmd(_obj,radiobutton) {cget configure deselect flash invoke select} -set ::subCmd(_obj,scale) {cget configure coords get identify set} -set ::subCmd(_obj,scrollbar) {activate cget configure delta fraction get identify set} -set ::subCmd(_obj,spinbox) {bbox cget configure delete get icursor identify index insert invoke scan selection set validate xview} -set ::subCmd(_obj,text) {bbox cget compare configure count debug delete dlineinfo dump edit get image index insert mark peer replace scan search see tag window xview yview} -set ::subCmd(_obj,tk::button) {cget configure flash invoke} -set ::subCmd(_obj,tk::canvas) {addtag bbox bind canvasx canvasy cget configure coords create dchars delete dtag find focus gettags icursor imove index insert itemcget itemconfigure lower move moveto postscript raise rchars scale scan select type xview yview} -set ::subCmd(_obj,tk::checkbutton) {cget configure deselect flash invoke select toggle} -set ::subCmd(_obj,tk::entry) {bbox cget configure delete get icursor index insert scan selection validate xview} -set ::subCmd(_obj,tk::frame) {cget configure} -set ::subCmd(_obj,tk::label) {cget configure} -set ::subCmd(_obj,tk::labelframe) {cget configure} -set ::subCmd(_obj,tk::listbox) {activate bbox cget configure curselection delete get index insert itemcget itemconfigure nearest scan see selection size xview yview} -set ::subCmd(_obj,tk::menubutton) {cget configure} -set ::subCmd(_obj,tk::message) {cget configure} -set ::subCmd(_obj,tk::panedwindow) {add cget configure forget identify panecget paneconfigure panes proxy sash} -set ::subCmd(_obj,tk::radiobutton) {cget configure deselect flash invoke select} -set ::subCmd(_obj,tk::scale) {cget configure coords get identify set} -set ::subCmd(_obj,tk::scrollbar) {activate cget configure delta fraction get identify set} -set ::subCmd(_obj,tk::spinbox) {bbox cget configure delete get icursor identify index insert invoke scan selection set validate xview} -set ::subCmd(_obj,tk::text) {bbox cget compare configure count debug delete dlineinfo dump edit get image index insert mark peer replace scan search see tag window xview yview} -set ::subCmd(_obj,tk::toplevel) {cget configure} -set ::subCmd(_obj,toplevel) {cget configure} -set ::subCmd(_obj,ttk::button) {cget configure identify instate invoke state} -set ::subCmd(_obj,ttk::checkbutton) {cget configure identify instate invoke state} -set ::subCmd(_obj,ttk::combobox) {bbox cget configure current delete get icursor identify index insert instate selection set state xview} -set ::subCmd(_obj,ttk::entry) {bbox cget configure delete get icursor identify index insert instate selection state validate xview} -set ::subCmd(_obj,ttk::frame) {cget configure identify instate state} -set ::subCmd(_obj,ttk::label) {cget configure identify instate state} -set ::subCmd(_obj,ttk::labelframe) {cget configure identify instate state} -set ::subCmd(_obj,ttk::menubutton) {cget configure identify instate state} -set ::subCmd(_obj,ttk::notebook) {add cget configure forget hide identify index insert instate select state tab tabs} -set ::subCmd(_obj,ttk::panedwindow) {add cget configure forget identify insert instate pane panes sashpos state} -set ::subCmd(_obj,ttk::progressbar) {cget configure identify instate start state step stop} -set ::subCmd(_obj,ttk::radiobutton) {cget configure identify instate invoke state} -set ::subCmd(_obj,ttk::scale) {cget configure coords get identify instate set state} -set ::subCmd(_obj,ttk::scrollbar) {cget configure delta fraction get identify instate set state} -set ::subCmd(_obj,ttk::separator) {cget configure identify instate state} -set ::subCmd(_obj,ttk::sizegrip) {cget configure identify instate state} -set ::subCmd(_obj,ttk::treeview) {bbox cget children column configure delete detach drag exists focus heading identify index insert instate item move next parent prev see selection set state tag xview yview} -set ::subCmd(_stdclass_oo) {create new destroy variable} -set ::subCmd(array) {anymore donesearch exists get names nextelement set size startsearch statistics unset} -set ::subCmd(binary) {decode encode format scan} -set {::subCmd(binary decode)} {base64 hex uuencode} -set {::subCmd(binary encode)} {base64 hex uuencode} -set ::subCmd(chan) {blocked close configure copy create eof event flush gets names pending pipe pop postevent push puts read seek tell truncate} -set ::subCmd(clipboard) {append clear get} -set ::subCmd(clock) {add clicks format microseconds milliseconds scan seconds} -set ::subCmd(dict) {append create exists filter for get incr info keys lappend merge remove replace set size unset update values with} -set ::subCmd(encoding) {convertfrom convertto dirs names system} -set ::subCmd(event) {add delete generate info} -set ::subCmd(file) {atime attributes channels copy delete dirname executable exists extension isdirectory isfile join link lstat mkdir mtime nativename normalize owned pathtype readable readlink rename rootname separator size split stat system tail tempfile type volumes writable} -set ::subCmd(font) {actual configure create delete families measure metrics names} -set ::subCmd(history) {add change clear event info keep nextid redo} -set ::subCmd(image) {create delete height inuse names type types width} -set ::subCmd(info) {args body class cmdcount commands complete coroutine default errorstack exists frame functions globals hostname level library loaded locals nameofexecutable object patchlevel procs script sharedlibextension tclversion vars} -set {::subCmd(info class)} {constructor definition destructor filters forward instances methods methodtype mixins subclasses superclasses variables} -set {::subCmd(info object)} {class definition filters forward isa methods methodtype mixins namespace variables vars} -set ::subCmd(interp) {alias aliases bgerror cancel create delete eval exists expose hidden hide invokehidden issafe limit marktrusted recursionlimit share slaves target transfer} -set ::subCmd(namespace) {children code current delete ensemble eval exists export forget import inscope origin parent path qualifiers tail unknown upvar which} -set ::subCmd(oo::class) {create destroy} -set ::subCmd(oo::object) {create destroy new} -set ::subCmd(option) {add clear get readfile} -set ::subCmd(package) {forget ifneeded names prefer present provide require unknown vcompare versions vsatisfies} -set ::subCmd(selection) {clear get handle own} -set ::subCmd(self) {caller class filter method namespace next object target} -set ::subCmd(string) {bytelength compare equal first index is last length map match range repeat replace reverse tolower totitle toupper trim trimleft trimright wordend wordstart} -set {::subCmd(string is)} {alnum alpha ascii boolean control digit double false graph integer list lower print punct space true upper wideinteger wordchar xdigit} -set ::subCmd(tcl::prefix) {all longest match} -set ::subCmd(tk) {appname busy caret fontchooser inactive scaling useinputmethods windowingsystem} -set ::subCmd(tkwait) {variable visibility window} -set ::subCmd(trace) {add info remove variable vdelete vinfo} -set {::subCmd(trace add)} {command execution variable} -set {::subCmd(trace info)} {command execution variable} -set {::subCmd(trace remove)} {command execution variable} -set ::subCmd(ttk::style) {configure element layout lookup map theme} -set {::subCmd(ttk::style element)} {create names options} -set {::subCmd(ttk::style theme)} {create names settings use} -set ::subCmd(update) idletasks -set ::subCmd(winfo) {atom atomname cells children class colormapfull containing depth exists fpixels geometry height id interps ismapped manager name parent pathname pixels pointerx pointerxy pointery reqheight reqwidth rgb rootx rooty screen screencells screendepth screenheight screenmmheight screenmmwidth screenvisual screenwidth server toplevel viewable visual visualid visualsavailable vrootheight vrootwidth vrootx vrooty width x y} -set ::subCmd(wm) {aspect attributes client colormapwindows command deiconify focusmodel forget frame geometry grid group iconbitmap iconify iconmask iconname iconphoto iconposition iconwindow manage maxsize minsize overrideredirect positionfrom protocol resizable sizefrom stackorder state title transient withdraw} -set ::subCmd(zlib) {adler32 compress crc32 decompress deflate gunzip gzip inflate push stream} -set {::subCmd(zlib push)} {compress decompress deflate gunzip gzip inflate} -set {::subCmd(zlib stream)} {compress decompress deflate gunzip gzip inflate} - -set {::option(. cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(. configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,button cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,button configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,button configure -textvariable)} n -set {::option(_obj,canvas cget)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,canvas configure)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,checkbutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,checkbutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,checkbutton configure -textvariable)} n -set {::option(_obj,checkbutton configure -variable)} n -set {::option(_obj,entry cget)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,entry configure)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,entry configure -textvariable)} n -set {::option(_obj,frame cget)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,frame configure)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,label cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,label configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,label configure -textvariable)} n -set {::option(_obj,labelframe cget)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,labelframe configure)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,listbox cget)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,listbox configure)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,listbox configure -listvariable)} n -set {::option(_obj,menu cget)} {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set {::option(_obj,menu configure)} {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set {::option(_obj,menubutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,menubutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,menubutton configure -textvariable)} n -set {::option(_obj,message cget)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,message configure)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,message configure -textvariable)} n -set {::option(_obj,panedwindow cget)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,panedwindow configure)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,radiobutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,radiobutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,radiobutton configure -textvariable)} n -set {::option(_obj,radiobutton configure -variable)} n -set {::option(_obj,scale cget)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,scale configure)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,scale configure -variable)} n -set {::option(_obj,scrollbar cget)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,scrollbar configure)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,spinbox cget)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,spinbox configure)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,spinbox configure -textvariable)} n -set {::option(_obj,text cget)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertunfocussed -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,text configure)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertunfocussed -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,tk::button cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::button configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::button configure -textvariable)} n -set {::option(_obj,tk::canvas cget)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,tk::canvas configure)} {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(_obj,tk::checkbutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,tk::checkbutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(_obj,tk::checkbutton configure -textvariable)} n -set {::option(_obj,tk::checkbutton configure -variable)} n -set {::option(_obj,tk::entry cget)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,tk::entry configure)} {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(_obj,tk::entry configure -textvariable)} n -set {::option(_obj,tk::frame cget)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::frame configure)} {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::label cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::label configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::label configure -textvariable)} n -set {::option(_obj,tk::labelframe cget)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::labelframe configure)} {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::listbox cget)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,tk::listbox configure)} {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(_obj,tk::listbox configure -listvariable)} n -set {::option(_obj,tk::menubutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::menubutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(_obj,tk::menubutton configure -textvariable)} n -set {::option(_obj,tk::message cget)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,tk::message configure)} {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(_obj,tk::message configure -textvariable)} n -set {::option(_obj,tk::panedwindow cget)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,tk::panedwindow configure)} {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set {::option(_obj,tk::radiobutton cget)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,tk::radiobutton configure)} {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(_obj,tk::radiobutton configure -textvariable)} n -set {::option(_obj,tk::radiobutton configure -variable)} n -set {::option(_obj,tk::scale cget)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,tk::scale configure)} {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(_obj,tk::scale configure -variable)} n -set {::option(_obj,tk::scrollbar cget)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,tk::scrollbar configure)} {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set {::option(_obj,tk::spinbox cget)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,tk::spinbox configure)} {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(_obj,tk::spinbox configure -textvariable)} n -set {::option(_obj,tk::text cget)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertunfocussed -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,tk::text configure)} {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertunfocussed -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set {::option(_obj,tk::toplevel cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,tk::toplevel configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,toplevel cget)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,toplevel configure)} {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set {::option(_obj,ttk::button cget)} {-takefocus -command -default -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::button configure)} {-takefocus -command -default -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::button configure -textvariable)} n -set {::option(_obj,ttk::checkbutton cget)} {-takefocus -variable -onvalue -offvalue -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::checkbutton configure)} {-takefocus -variable -onvalue -offvalue -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::checkbutton configure -textvariable)} n -set {::option(_obj,ttk::checkbutton configure -variable)} n -set {::option(_obj,ttk::combobox cget)} {-height -postcommand -values -takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::combobox configure)} {-height -postcommand -values -takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::combobox configure -textvariable)} n -set {::option(_obj,ttk::entry cget)} {-takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::entry configure)} {-takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(_obj,ttk::entry configure -textvariable)} n -set {::option(_obj,ttk::frame cget)} {-borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::frame configure)} {-borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::label cget)} {-background -foreground -font -borderwidth -relief -anchor -justify -wraplength -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::label configure)} {-background -foreground -font -borderwidth -relief -anchor -justify -wraplength -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::label configure -textvariable)} n -set {::option(_obj,ttk::labelframe cget)} {-labelanchor -text -underline -labelwidget -borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::labelframe configure)} {-labelanchor -text -underline -labelwidget -borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::menubutton cget)} {-takefocus -menu -direction -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::menubutton configure)} {-takefocus -menu -direction -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::menubutton configure -textvariable)} n -set {::option(_obj,ttk::notebook cget)} {-takefocus -width -height -padding -takefocus -cursor -style -class} -set {::option(_obj,ttk::notebook configure)} {-takefocus -width -height -padding -takefocus -cursor -style -class} -set {::option(_obj,ttk::panedwindow cget)} {-orient -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::panedwindow configure)} {-orient -width -height -takefocus -cursor -style -class} -set {::option(_obj,ttk::progressbar cget)} {-orient -length -mode -maximum -variable -value -phase -takefocus -cursor -style -class} -set {::option(_obj,ttk::progressbar configure)} {-orient -length -mode -maximum -variable -value -phase -takefocus -cursor -style -class} -set {::option(_obj,ttk::progressbar configure -variable)} n -set {::option(_obj,ttk::radiobutton cget)} {-takefocus -variable -value -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::radiobutton configure)} {-takefocus -variable -value -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(_obj,ttk::radiobutton configure -textvariable)} n -set {::option(_obj,ttk::radiobutton configure -variable)} n -set {::option(_obj,ttk::scale cget)} {-takefocus -command -variable -orient -from -to -value -length -takefocus -cursor -style -class} -set {::option(_obj,ttk::scale configure)} {-takefocus -command -variable -orient -from -to -value -length -takefocus -cursor -style -class} -set {::option(_obj,ttk::scale configure -variable)} n -set {::option(_obj,ttk::scrollbar cget)} {-command -orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::scrollbar configure)} {-command -orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::separator cget)} {-orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::separator configure)} {-orient -takefocus -cursor -style -class} -set {::option(_obj,ttk::sizegrip cget)} {-takefocus -cursor -style -class} -set {::option(_obj,ttk::sizegrip configure)} {-takefocus -cursor -style -class} -set {::option(_obj,ttk::treeview cget)} {-takefocus -columns -displaycolumns -show -selectmode -height -padding -xscrollcommand -yscrollcommand -takefocus -cursor -style -class} -set {::option(_obj,ttk::treeview configure)} {-takefocus -columns -displaycolumns -show -selectmode -height -padding -xscrollcommand -yscrollcommand -takefocus -cursor -style -class} -set ::option(bell) {-displayof -nice} -set {::option(binary decode base64)} -strict -set {::option(binary decode hex)} -strict -set {::option(binary decode uuencode)} -strict -set {::option(binary encode base64)} {-maxlen -wrapchar} -set {::option(binary encode uuencode)} {-maxlen -wrapchar} -set ::option(button) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(button -textvariable)} n -set ::option(canvas) {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set {::option(chan puts)} -nonewline -set ::option(checkbutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(checkbutton -textvariable)} n -set {::option(checkbutton -variable)} n -set {::option(clock clicks)} {-microseconds -milliseconds} -set {::option(clock format)} {-format -gmt -locale -timezone} -set {::option(clock scan)} {-base -format -gmt -locale -timezone} -set ::option(entry) {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(entry -textvariable)} n -set ::option(exec) {-- -ignorestderr -keepnewline} -set ::option(fconfigure) {-blocking -buffering -buffersize -encoding -eofchar -error -handshake -lasterror -mode -peername -pollinterval -queue -sockname -sysbuffer -timeout -translation -ttycontrol -ttystatus -xchar} -set ::option(fcopy) {-command -size} -set {::option(file attributes)} {-group -owner -permissions} -set {::option(file copy)} {-- -force} -set {::option(file delete)} {-- -force} -set {::option(file link)} {-hard -symbolic} -set {::option(file rename)} {-- -force} -set ::option(focus) {-displayof -force -lastfor} -set ::option(frame) {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(glob) {-- -directory -join -nocomplain -path -tails -types} -set {::option(glob -directory)} 1 -set {::option(glob -path)} 1 -set {::option(glob -types)} 1 -set {::option(interp cancel)} {-- -unwind} -set {::option(interp invokehidden)} {-- -global -namespace} -set {::option(interp invokehidden -namespace)} 1 -set ::option(label) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(label -textvariable)} n -set ::option(labelframe) {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(listbox) {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(listbox -listvariable)} n -set ::option(lsearch) {-all -ascii -bisect -decreasing -dictionary -exact -glob -increasing -index -inline -integer -nocase -not -real -regexp -sorted -start -subindices} -set {::option(lsearch -index)} 1 -set {::option(lsearch -start)} 1 -set ::option(lsort) {-ascii -command -decreasing -dictionary -increasing -index -indices -integer -nocase -real -stride -unique} -set {::option(lsort -command)} 1 -set {::option(lsort -index)} 1 -set {::option(lsort -stride)} 1 -set ::option(menu) {-activebackground -activeborderwidth -activeforeground -background -bd -bg -borderwidth -cursor -disabledforeground -fg -font -foreground -postcommand -relief -selectcolor -takefocus -tearoff -tearoffcommand -title -type} -set ::option(menubutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(menubutton -textvariable)} n -set ::option(message) {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(message -textvariable)} n -set {::option(namespace which)} {-variable -command} -set {::option(namespace which -variable)} v -set ::option(panedwindow) {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set ::option(puts) -nonewline -set ::option(radiobutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(radiobutton -textvariable)} n -set {::option(radiobutton -variable)} n -set ::option(regexp) {-- -about -all -expanded -indices -inline -line -lineanchor -linestop -nocase -start} -set {::option(regexp -start)} 1 -set ::option(regsub) {-- -all -expanded -line -lineanchor -linestop -nocase -start} -set {::option(regsub -start)} 1 -set ::option(scale) {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(scale -variable)} n -set ::option(scrollbar) {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set ::option(send) {-- -async -displayof} -set {::option(send -displayof)} 1 -set ::option(source) -encoding -set ::option(spinbox) {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(spinbox -textvariable)} n -set {::option(string compare)} {-length -nocase} -set {::option(string compare -length)} 1 -set {::option(string equal)} {-length -nocase} -set {::option(string equal -length)} 1 -set {::option(string is)} {-failindex -strict} -set {::option(string is -failindex)} n -set {::option(string map)} -nocase -set {::option(string match)} -nocase -set ::option(subst) {-nobackslashes -nocommands -novariables} -set ::option(switch) {-- -exact -glob -indexvar -matchvar -nocase -regexp} -set {::option(tcl::prefix match)} {-error -exact -message} -set {::option(tcl::prefix match -error)} x -set {::option(tcl::prefix match -message)} x -set ::option(text) {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertunfocussed -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set ::option(tk::button) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -default -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -overrelief -padx -pady -relief -repeatdelay -repeatinterval -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(tk::button -textvariable)} n -set ::option(tk::canvas) {-background -bd -bg -borderwidth -closeenough -confine -cursor -height -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -offset -relief -scrollregion -selectbackground -selectborderwidth -selectforeground -state -takefocus -width -xscrollcommand -xscrollincrement -yscrollcommand -yscrollincrement} -set ::option(tk::checkbutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -offvalue -onvalue -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -variable -width -wraplength} -set {::option(tk::checkbutton -textvariable)} n -set {::option(tk::checkbutton -variable)} n -set ::option(tk::entry) {-background -bd -bg -borderwidth -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -readonlybackground -relief -selectbackground -selectborderwidth -selectforeground -show -state -takefocus -textvariable -validate -validatecommand -vcmd -width -xscrollcommand} -set {::option(tk::entry -textvariable)} n -set ::option(tk::frame) {-bd -borderwidth -class -relief -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(tk::label) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(tk::label -textvariable)} n -set ::option(tk::labelframe) {-bd -borderwidth -class -fg -font -foreground -labelanchor -labelwidget -relief -text -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(tk::listbox) {-activestyle -background -bd -bg -borderwidth -cursor -disabledforeground -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -selectmode -setgrid -state -takefocus -width -xscrollcommand -yscrollcommand -listvariable} -set {::option(tk::listbox -listvariable)} n -set ::option(tk::menubutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -cursor -direction -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -menu -padx -pady -relief -compound -state -takefocus -text -textvariable -underline -width -wraplength} -set {::option(tk::menubutton -textvariable)} n -set ::option(tk::message) {-anchor -aspect -background -bd -bg -borderwidth -cursor -fg -font -foreground -highlightbackground -highlightcolor -highlightthickness -justify -padx -pady -relief -takefocus -text -textvariable -width} -set {::option(tk::message -textvariable)} n -set ::option(tk::panedwindow) {-background -bd -bg -borderwidth -cursor -handlepad -handlesize -height -opaqueresize -orient -relief -sashcursor -sashpad -sashrelief -sashwidth -showhandle -width} -set ::option(tk::radiobutton) {-activebackground -activeforeground -anchor -background -bd -bg -bitmap -borderwidth -command -compound -cursor -disabledforeground -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -image -indicatoron -justify -offrelief -overrelief -padx -pady -relief -selectcolor -selectimage -state -takefocus -text -textvariable -tristateimage -tristatevalue -underline -value -variable -width -wraplength} -set {::option(tk::radiobutton -textvariable)} n -set {::option(tk::radiobutton -variable)} n -set ::option(tk::scale) {-activebackground -background -bigincrement -bd -bg -borderwidth -command -cursor -digits -fg -font -foreground -from -highlightbackground -highlightcolor -highlightthickness -label -length -orient -relief -repeatdelay -repeatinterval -resolution -showvalue -sliderlength -sliderrelief -state -takefocus -tickinterval -to -troughcolor -variable -width} -set {::option(tk::scale -variable)} n -set ::option(tk::scrollbar) {-activebackground -activerelief -background -bd -bg -borderwidth -command -cursor -elementborderwidth -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -width} -set ::option(tk::spinbox) {-activebackground -background -bd -bg -borderwidth -buttonbackground -buttoncursor -buttondownrelief -buttonuprelief -command -cursor -disabledbackground -disabledforeground -exportselection -fg -font -foreground -format -from -highlightbackground -highlightcolor -highlightthickness -increment -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -invalidcommand -invcmd -justify -relief -readonlybackground -repeatdelay -repeatinterval -selectbackground -selectborderwidth -selectforeground -state -takefocus -textvariable -to -validate -validatecommand -values -vcmd -width -wrap -xscrollcommand} -set {::option(tk::spinbox -textvariable)} n -set ::option(tk::text) {-autoseparators -background -bd -bg -blockcursor -borderwidth -cursor -endline -exportselection -fg -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -inactiveselectbackground -insertbackground -insertborderwidth -insertofftime -insertontime -insertunfocussed -insertwidth -maxundo -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -spacing1 -spacing2 -spacing3 -startline -state -tabs -tabstyle -takefocus -undo -width -wrap -xscrollcommand -yscrollcommand} -set ::option(tk::toplevel) {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(tk_chooseColor) {-initialcolor -parent -title} -set ::option(tk_chooseDirectory) {-initialdir -mustexist -parent -title} -set ::option(tk_getOpenFile) {-defaultextension -filetypes -initialdir -initialfile -multiple -parent -title -typevariable} -set ::option(tk_getSaveFile) {-defaultextension -filetypes -initialdir -initialfile -parent -title -typevariable} -set ::option(tk_messageBox) {-default -detail -icon -message -parent -title -type} -set ::option(toplevel) {-bd -borderwidth -class -menu -relief -screen -use -background -bg -colormap -container -cursor -height -highlightbackground -highlightcolor -highlightthickness -padx -pady -takefocus -visual -width} -set ::option(ttk::button) {-takefocus -command -default -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::button -textvariable)} n -set ::option(ttk::checkbutton) {-takefocus -variable -onvalue -offvalue -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::checkbutton -textvariable)} n -set {::option(ttk::checkbutton -variable)} n -set ::option(ttk::combobox) {-height -postcommand -values -takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(ttk::combobox -textvariable)} n -set ::option(ttk::entry) {-takefocus -exportselection -font -invalidcommand -justify -show -state -textvariable -validate -validatecommand -width -xscrollcommand -foreground -background -takefocus -cursor -style -class} -set {::option(ttk::entry -textvariable)} n -set ::option(ttk::frame) {-borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set ::option(ttk::label) {-background -foreground -font -borderwidth -relief -anchor -justify -wraplength -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::label -textvariable)} n -set ::option(ttk::labelframe) {-labelanchor -text -underline -labelwidget -borderwidth -padding -relief -width -height -takefocus -cursor -style -class} -set ::option(ttk::menubutton) {-takefocus -menu -direction -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::menubutton -textvariable)} n -set ::option(ttk::notebook) {-takefocus -width -height -padding -takefocus -cursor -style -class} -set ::option(ttk::panedwindow) {-orient -width -height -takefocus -cursor -style -class} -set ::option(ttk::progressbar) {-orient -length -mode -maximum -variable -value -phase -takefocus -cursor -style -class} -set {::option(ttk::progressbar -variable)} n -set ::option(ttk::radiobutton) {-takefocus -variable -value -command -text -textvariable -underline -width -image -compound -padding -state -takefocus -cursor -style -class} -set {::option(ttk::radiobutton -textvariable)} n -set {::option(ttk::radiobutton -variable)} n -set ::option(ttk::scale) {-takefocus -command -variable -orient -from -to -value -length -takefocus -cursor -style -class} -set {::option(ttk::scale -variable)} n -set ::option(ttk::scrollbar) {-command -orient -takefocus -cursor -style -class} -set ::option(ttk::separator) {-orient -takefocus -cursor -style -class} -set ::option(ttk::sizegrip) {-takefocus -cursor -style -class} -set {::option(ttk::style theme create)} {-parent -settings} -set ::option(ttk::treeview) {-takefocus -columns -displaycolumns -show -selectmode -height -padding -xscrollcommand -yscrollcommand -takefocus -cursor -style -class} -set ::option(unload) {-- -keeplibrary -nocomplain} -set ::option(unset) {-nocomplain --} -set {::option(zlib gunzip)} {-buffersize -headerVar} -set {::option(zlib gzip)} {-header -level} - diff --git a/etc/soft/packages.list b/etc/soft/packages.list index 6fec94f..6a8e764 100755 --- a/etc/soft/packages.list +++ b/etc/soft/packages.list @@ -30,6 +30,7 @@ PACKAGES=" #? cpg, mvg #https://github.com/mrdrogdrog/advcpmv cheat.sh #Справка по ЯП https://github.com/chubin/cheat.sh convmv #Исправление кодировок имён файлов + nagelfar #Tcl-linter " while IFS='\t' read -r line; do