home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / dos / 4dos / 4uzytki / 4sight13.exe / 4SIGHT.BTM < prev    next >
Text File  |  1993-03-04  |  7KB  |  300 lines

  1.                   :::: 4sight.btm  1.3 ::::
  2.             :::: type 4sight.btm /? for help ::::
  3.  
  4. @setdos /v0
  5. setlocal
  6. unalias *
  7.  
  8. iff "%temp4dos" != "" then 
  9.     set temp=%temp4dos
  10. elseiff "%temp" != "" .and. "%@substr[%temp,0,-1]" != "\" then
  11.     set temp=%temp\
  12. endiff
  13. if not exist %temp%nul unset temp
  14. set junk=%temp%nul
  15.  
  16. set test=%@unique[%temp]
  17. keystack 0 >&! %test
  18. iff "%@index[%@line[%test,0],KSTACK.COM]" == "0" then
  19.         type %test
  20.         del /q %test
  21.         unset test
  22.         quit
  23. else
  24.     del /q  %test
  25. endiff
  26.  
  27. if "%@index[%@upper[%&],/X]" != "-1" unset exclude
  28. iff %# == 0 .or. %1 == /? then 
  29.     goto help
  30. elseiff  "%@index[%@upper[%&],/W]" != "-1" then
  31.     set _mode=w-fnc
  32.     gosub fnc
  33. elseiff "%@index[%@upper[%&],/T]" != "-1" then
  34.     set _mode=t-fnc
  35.     gosub fnc
  36. elseiff "%@index[%@upper[%&],/V]" != "-1" then
  37.     set _mode=view
  38.     gosub view
  39. else
  40.     goto help
  41. endiff
  42. gosub clean_up
  43. quit
  44.  
  45. :::: subroutine help ::::
  46. :help
  47. text | list /s
  48.                      4sight.btm  ver. 1.3
  49.       4dos file name completion and file viewer utility
  50.  
  51.         copyright Bob Larson    blarson@uiuc.edu      3 March 93
  52.                                
  53. This btm file must be called by an key alias which first uses ^K to
  54. save the current command line onto the history stack:  
  55. example  alias @f8=^K@4sight /w /x^Xr
  56.  
  57. Syntax:  4sight [/t /w /v /?] [/x]
  58.  
  59.         Switches:
  60.             /t  tcsh type file name completion
  61.             /w  pop-up window type file name completion
  62.             /v  file viewer
  63.             /?  display help
  64.             /x  disable exclude files
  65.  
  66. Exclude files:
  67. -------------
  68. You may designate files to be excluded using the %exclude environment
  69. variable, which contains 1 or more file specifications (wildcards 
  70. permitted) separated by semi-colons or blanks.  Example:
  71.  
  72.     set exclude=*.bak;*.tmp;
  73.  
  74. will cause 4sight to ignore all *.bak and *.tmp files, unless 4sight
  75. is invoked with the /x switch.
  76. endtext
  77. quit
  78. :::: end subroutine help ::::
  79.  
  80. ::::  subroutine view ::::
  81. :view
  82. gosub get_hist
  83. gosub build_arg
  84. rem gosub exclude
  85. iff "%part_file%" EQ "" .or. not exist %part_file then
  86.     beep
  87.     return
  88. endiff
  89. (except (%exclude) dir /b /a-h-d %part_file | set lines=%@lines[con]) >&> %junk
  90. iff "%lines" == "-1" then
  91.     beep
  92.     return
  93. elseiff "%lines" == "0" then
  94.     (except (%exclude) list %part_file) >&> %junk
  95. else
  96.     (except (%exclude) select /a:-h-d  list (%part_file)) >&> %junk
  97. endiff
  98. return
  99. :::: end subroutine view ::::
  100.  
  101. :::: subroutine fnc ::::
  102. :fnc
  103. set s_path=%_cwds
  104. gosub get_hist
  105. gosub build_arg
  106. :redo
  107. set foo2=%@unique[%temp]
  108. iff "%_mode" == "w-fnc" then
  109.     del /q  %foo2 
  110.     (except ( %exclude ) dir /km %part_file >! %foo2) >&> %junk
  111. else
  112.     (except (%exclude) dir /b %part_file >! %foo2) >&> %junk
  113. endiff
  114. set lines=%@lines[%foo2]
  115. iff %lines == -1 then
  116.             gosub new_cmd
  117. elseiff %lines == 0 then
  118.     set n_file=%@word[0,%@line[%foo2,0]]
  119.     set temp_dir=%@path[%part_file]
  120.     iff "%@substr[%temp_dir,0,-1]" NE "\" then
  121.         set temp_dir=%temp_dir%\
  122.     endiff
  123.     set n_file=%@full[%temp_dir%%n_file]
  124.     gosub new_cmd
  125. elseiff "%_mode" == "t-fnc" then
  126.     (except (%exclude) dir /wkm /o-n %part_file) >&> %junk
  127.     gosub get_new
  128.     gosub new_cmd
  129. elseiff "%_mode" == "w-fnc" then
  130.     set lines=%@eval[4+%lines]
  131.     if %lines GT %_rows set lines=%_rows
  132.     set n_file=%@word[0,%@select[%foo2,1,1,%lines,%_columns,%part_file]]
  133.     del /q %foo2
  134.     iff "%n_file" == "" then 
  135.         gosub new_cmd
  136.     elseiff "%n_file" == "." then
  137.         set n_file=%@path[%part_file]
  138.         set newfile=%@substr[%newfile,0,%@eval[%@len[%n_file]-1]]
  139.         gosub new_cmd
  140.     else
  141.         set temp_dir=%@path[%part_file]
  142.         iff "%@substr[%temp_dir,0,-1]" NE "\" then
  143.             set temp_dir=%temp_dir%\
  144.         endiff
  145.         set n_file=%@full[%temp_dir%%n_file]
  146.         iff isdir %n_file then 
  147.             iff "%@substr[%n_file,0,-1]" != "\" then
  148.                 set n_file=%n_file%\
  149.             endiff
  150.             set part_file=%n_file%*.*
  151.             cd %n_file
  152.             goto redo
  153.         else
  154.             gosub new_cmd
  155.         endiff
  156.     endiff
  157. endiff
  158. :::: end subroutine fnc ::::
  159.  
  160. :::: subroutine clean_up ::::
  161. :clean_up
  162. endlocal
  163. keystack 5
  164. quit
  165. :::: end main ::::
  166.  
  167. :::: subroutine get_new ::::
  168.  
  169. :get_new
  170. set file1=%@line[%foo2,0]
  171. set file2=%@line[%foo2,%lines]
  172. del /q %foo2
  173. set pos=0
  174. :new_loop
  175. set char1=%@substr[%file1,%pos,1]
  176. set char2=%@substr[%file2,%pos,1]
  177. iff "%char1%" == "" .or. "%char2%" == "" then 
  178.     goto breakout
  179. elseiff "%char1%" NE "%char2%" then
  180.     goto breakout
  181. else
  182.     set pos=%@eval[%pos+1]
  183.     goto new_loop
  184. endiff
  185. :breakout
  186. iff "%pos" == "0" then 
  187.     set n_file=%orig
  188.     return
  189. endiff
  190. set n_file=%@substr[%file1,0,%pos]
  191. set temp_dir=%@path[%part_file]
  192. iff "%@substr[%temp_dir,0,-1]" NE "\" then
  193.     set temp_dir=%temp_dir%\
  194. endiff
  195. set n_file=%@full[%temp_dir%%n_file]
  196. return
  197. :::: end get_new ::::
  198.  
  199.  
  200. :::: subroutine get_hist ::::
  201. :get_hist
  202. set foo1=%@unique[%temp%]
  203. history >! %foo1
  204. set b=%@eval[%@lines[%foo1]]
  205. set hist_entry=%@line[%foo1,%b]
  206. del /q %foo1
  207. set pos=%@eval[%@len[%hist_entry]-1]
  208. iff "%@word[1,%hist_entry]" == "" then
  209.     set just1=y
  210.     set part_file=%hist_entry
  211.     set old_cmd=` `
  212. else    
  213.     set just1=n
  214.     set part_file=%@word[-0,%hist_entry]
  215.     set pos=%@eval[%@len[%hist_entry]-%@len[%part_file]]
  216.     set old_cmd=%@substr[%hist_entry,0,%pos]
  217.     set orig=%part_file
  218. endiff    
  219. return    
  220. :::: end  get_hist ::::
  221.  
  222. :::: subroutine build_arg ::::
  223. :build_arg
  224. iff "%@substr[%part_file,0,-1]" == "\" then
  225.     set part_file=%part_file*.*
  226.     return
  227. endiff
  228. set part_file=%@full[%part_file]
  229. set path_part=%@path[%part_file]
  230. set prefix=%@name[%part_file]
  231. set exten=%@ext[%part_file]
  232. iff "%prefix" == "" then
  233.     set prefix=*
  234. elseiff "%@substr[%prefix,0,-1]" NE "*" then
  235.     set prefix=%prefix%*
  236. endiff
  237. iff "%exten" == "" then
  238.     set exten=*
  239. elseiff "%@substr[%exten,0,-1]" NE "*" then
  240.     set exten=%exten%*
  241. endiff
  242.     iff "%@path[%part_file]" == "%_cwds" .and. "%just1" == "y" then
  243.     set tempn=%@search[%prefix]
  244.     iff "%tempn" != "" then 
  245.         set prefix=%@name[%tempn]
  246.         set path_part=%@path[%tempn]
  247.     endiff
  248. endiff    
  249.  
  250. set part_file=%path_part%%prefix%.%exten%
  251. unset  prefix exten path_part max_chars >& %junk
  252. return
  253. :::: end build_arg ::::
  254.  
  255.  
  256. :::: subroutine new_cmd ::::
  257. :new_cmd
  258. iff "%n_file" == ""  then
  259.     set new_cmd=%hist_entry
  260.     gosub bad_name
  261.     gosub push_new_cmd
  262.     return
  263. endiff
  264. iff "%@substr[%n_file,0,-1]" != "\" then
  265.     iff isdir %n_file .and. "%lines" == "0" then
  266.             if "%@substr[%n_file,0,-1]" != "\" set n_file=%n_file\
  267.     else
  268.         set t_file=%n_file
  269.         unset n_file
  270.  
  271.         iff "%s_path" != "%@path[%@full[%t_file]]" then
  272.             set n_file=%@path[%@full[%t_file]]
  273.         endiff
  274.         iff "%@ext[%t_file]" == "" then
  275.             set n_file=%@substr[%n_file,0]%@name[%t_file]
  276.         else
  277.             set n_file=%@substr[%n_file,0]%@name[%t_file].%@ext[%t_file]
  278.         endiff
  279.     endiff
  280. endiff
  281. iff "%just1" == "y" then
  282.     set new_cmd=%n_file
  283. else
  284.     set new_cmd=%old_cmd% %n_file%
  285. endiff
  286. gosub push_new_cmd
  287. return
  288.  
  289. :::: subroutine bad_name ::::
  290. :bad_name
  291. set new_cmd=%hist_entry
  292. if  "%lines" == "-1" beep
  293. return
  294. :::: end bad_name ::::
  295.  
  296. :::: subroutine push_new_cmd ::::
  297. :push_new_cmd
  298. history /a %new_cmd
  299. return
  300. :::: end push_new_cmd ::::