[gnu.emacs] misc `library ' functions

davis@scr.slb.com (Paul Davis) (04/27/89)

Some functions I have around me all the time, the interactive ones
bound to function keys.

enjoy,

Paul

--- cut here ---
;;; Copyright (C) Schlumberger Cambridge Research, 1989
;;; subject to the terms of the GNU general public licence

;;; library file for miscellaneous interactive functions

(defun backward-kill-line ()
"Kills the line *left* of point, rather than right of it"
   (interactive)
   (setq end (point))
   (beginning-of-line 1)
   (kill-region (point) end))

(defun kill-to-top ()
  "Kill region between point and top of buffer"
  (interactive)
  (kill-region (point-min) (point)))

(defun kill-to-bottom ()
  "Kill region between point and end-of-buffer"
  (interactive)
  (kill-region (point) (point-max)))

(defun bind-macro (key)
"Bind the last macro to a key, locally"
  (interactive "kBind macro to key:")
  (name-last-kbd-macro 'this-macro)
  (local-set-key key 'this-macro))

;;; Emacs Lisp library (non-interactive)
;;; Paul Davis

(defun strip-white-space (string)
  "Return STRING stripped of surrounding white-space"
  (substring string
	     (string-match "[^ 	]" string)
	     (string-match "[ 	]*$" string)))

(defun scar (string)
  "Like car, but for space-separated substrings. Leading and
trailing blank space on the string is ignored"
  (if (string-match "\\(\\s +\\|\n\\)" string)
      (if (= (match-beginning 0) 0)
	  (scar (substring string (match-end 0)))
	(substring string 0 (match-beginning 0)))
    string))

(defun scdr (string)
  "Like cdr, but for space-separated substrings. Leading and trailing
white space on the string is ignored."

  (if (string-match "\\(\\s +\\|\n\\)" string)
      (if (= (match-end 0) (length string))
	  (substring string 0 (match-beginning 0))
	(substring string (match-end 0)))
    ""))

(defun resolve-string (string)
  "Return a list of strings where each element is
an item of STRING. Items are space-separated in STRING."
  (cond ((= (length string) 0) nil)
	(t (cons (scar string) (resolve-string (scdr string))))))

(defun expand-path-names (path)
  (cond ((null path) nil)
	(t (cons (expand-file-name (car path)) 
		 (expand-path-names (cdr path))))))

(defun pop-this-file (path file)
  "Return PATH with FILE as first component."
  (setq new-path (strip-this-file path file))
  (cons file new-path))

(defun strip-this-file (path file)
  "Return PATH without FILE as a component"
  (cond ((null path))
	((string= (car path) file)
	 (cdr path))
	(t
	 (cons (car path) (strip-this-file (cdr path) file)))))

(defun file-type-match (file-name file-type)
"Return true if there is a terminating substring of file-name preceded by a `.'
and that matches file-type"
  (interactive "sFilename: \nsfiletype:")
  (if (eq nil (setq suffx-ndx (string-match "\\." file-name nil)))
      nil
    (equal file-type (substring file-name (+ suffx-ndx 1) nil))))