;; $Header: /usr/build/vile/vile/macros/RCS/which.rc,v 1.8 2004/10/30 00:12:27 tom Exp $ ;; ;; Show where vile looks for keyword file, and where it finds it. If we ;; always implemented built-in filters, the natural place for this would be ;; within filters/filters.c - and no need for a macro. But we may have ;; configured with external filters. Rather than maintain two chunks of ;; similar C code, this is implemented as a macro (as an exercise ;-. store-procedure WhichFilename f='Filename' ~local %flag newline ~if &rd $1 insert-string '* ' setv %found="yes" ~else insert-string ' ' ~endif insert-string $1 ~endm store-procedure which-keywords major="MajorMode" "Prompt for, and display location of keyword files" ~local %path %leaf %suffix %pathdot %dothides %index %mybuffer %found %long %short setv %found="no" ~local $report $terse setv $report=0 set terse ~if &seq 'mode' &right $1 &sub &len $1 3 ; 9.4e setv %long=$1 setv %short=&left $1 &sub &len $1 4 ~else ; pre-9.4e setv %long=&cat $1 'mode' setv %short=$1 ~endif ; setv %mybuffer='[Which Keywords]' ~force select-buffer %mybuffer ~if $status setl noreadonly noview ~if &greater $bchars 0 goto-beginning-of-file delete-lines-til end-of-file ~endif ~else edit-buffer %mybuffer ~endif setl noai ; insert-string 'Show which keyword-files are tested for:' newline insert-string &cat &chr 9 %long newline insert-string '(* marks found-files)' 2 newline ; setv %suffix='.keywords' ~if &seq $os "win32" setv %dothides='' setv %pathdot='.' ~elseif &seq $os "vms" setv %dothides='' setv %pathdot='[]' ~else setv %dothides='.' setv %pathdot='.' ~endif ; setv %leaf=&cat %short %suffix insert-string '$cwd' WhichFilename &pcat %pathdot &cat %dothides %leaf ; newline insert-string '$HOME' WhichFilename &pcat '~' &cat %dothides %leaf WhichFilename &pcat '~' &cat %dothides &pcat 'vile' %leaf ; newline insert-string '$startup-path' setv %index=0 ~while true setv %path=&token %index $pathlist-separator $startup-path ~if &seq %path '' ~break ~endif WhichFilename &pcat %path %leaf setv %index=&add %index 1 ~endwhile ; unmark-buffer setl readonly view goto-beginning-of-file ~endm ~if &seq $progname "xvile" store-procedure which-menu "Display location of menu file" ~local %path %leaf %suffix %pathdot %dothides %index %mybuffer %found %dotname setv %found="no" ~local $report $terse set report=0 set terse ; setv %mybuffer='[Which Menufile]' ~force select-buffer %mybuffer ~if $status setl noreadonly noview ~if &greater $bchars 0 goto-beginning-of-file delete-lines-til end-of-file ~endif ~else edit-buffer %mybuffer ~endif setl noai ; insert-string 'Show which menu-files are tested for:' newline insert-string &cat &chr 9 $menu-file newline insert-string '(* marks found-files)' 2 newline ; ~if &seq $os "win32" setv %dothides='' setv %pathdot='.' ~elseif &seq $os "vms" setv %dothides='' setv %pathdot='[]' ~else setv %dothides='.' setv %pathdot='.' ~endif ; ; Look for $menu-file in the current and home-directories setv %leaf=$menu-file insert-string '$cwd' WhichFilename &pcat %pathdot %leaf ; newline insert-string '$HOME' WhichFilename &pcat '~' %leaf ; ; If dot hides a name, and $menu-file begins with a dot, we are done ; with it. Use "vilemenu.rc" in the other places. If it does not ; begin with a dot, continue using it. setv %dotname &left %leaf 1 ~if &and \ &seq %dothides '.' \ &seq %dotname '.' setv %leaf='vilemenu.rc' ~endif ; newline insert-string '$startup-path' setv %index=0 ~while true setv %path=&token %index $pathlist-separator $startup-path ~if &seq %path '' ~break ~endif WhichFilename &pcat %path %leaf setv %index=&add %index 1 ~endwhile ; unmark-buffer setl readonly view goto-beginning-of-file ~endm ~endif