[net.emacs] Environment subst in file names

notes@enea.UUCP (12/14/83)

#N:enea:3700001:000:1531
enea!sten    Dec  5 23:10:00 1983

Have you ever missed environment substitution when typing  file  names?  Well,
include this function in your .emacs_pro and you have it!

-----------------------------------------------------------------------------

; "Sten Folkerman enea!sten"
; 
; Modify file referencing functions in the means of simulating environment
; substitution.
(defun
    (envsub-foo out in q1 q2
	(setq out "")
	(setq in (arg 1 "YesDear??"))
	(setq q1 0)
	(while (<= (setq q1 (+ q1 1)) (length in))
	    (setq q2 (substr in q1 1))
	    (if (= q2 "$")
		(progn q3 env
		    (setq env "")
		    (setq q3 1)
		    (while (& (<= (setq q1 (+ q1 1)) (length in)) q3)
			(setq q2 (substr in q1 1))
			(if
			    (if (& (>= q2 "a") (<= q2 "z"))
				1
				(if (& (>= q2 "A") (<= q2 "Z"))
				    1
				    (if (& (>= q2 "0") (<= q2 "9"))
					1
					(if (= q2 "_")
					    1
					    0
					)
				    )
				)
			    )
			    (setq env (concat env q2))
			    (progn
				(setq q3 0)
				(setq q1 (- q1 2))
			    )
			)
		    )
		    (setq q2 (getenv env))
		)
	    )
	    (setq out (concat out q2))
	)
	out
    )
    (envsub-bar
	(execute-mlisp-line
	    (concat
		"(defun "
		"(" (arg 1) "-env"
		"(" (arg 1) "(envsub-foo (arg 1 """ (arg 3) """)))"
		")"
		")"
	    )
	)
	(remove-binding (arg 2))
	(bind-to-key (concat (arg 1) "-env") (arg 2))
    )
)
(envsub-bar "insert-file" "\^x\^i" "Insert file: ")
(envsub-bar "read-file" "\^x\^r" "Read file: ")
(envsub-bar "visit-file" "\^x\^v" "Visit file: ")
(envsub-bar "write-named-file" "\^x\^w" "Write file: ")