-;;; pcvs-util.el --- Utility functions for PCL-CVS -*- byte-compile-dynamic: t -*-
+;;; pcvs-util.el --- utility functions for PCL-CVS -*- byte-compile-dynamic: t -*-
-;; Copyright (C) 1991,92,93,94,95,96,97,98,99,2000, 2001
+;; Copyright (C) 1991,92,93,94,95,96,97,98,99, 2000,01,04
;; Free Software Foundation, Inc.
;; Author: Stefan Monnier <monnier@cs.yale.edu>
;; Keywords: pcl-cvs
-;; Revision: $Id: pcvs-util.el,v 1.9 2001/01/09 13:12:04 gerd Exp $
;; This file is part of GNU Emacs.
(let ((zs ys))
(dolist (x xs zs)
(unless (member x ys) (push x zs)))))
-
(defun cvs-map (-cvs-map-f &rest -cvs-map-ls)
(unless (cvs-every 'null -cvs-map-ls)
(if (funcall p x) (push x car) (push x cdr)))
(cons (nreverse car) (nreverse cdr))))
-;; Copied from CL ;-(
-
-(defun cvs-butlast (x &optional n)
- "Returns a copy of LIST with the last N elements removed."
- (if (and n (<= n 0)) x
- (cvs-nbutlast (copy-sequence x) n)))
-
-(defun cvs-nbutlast (x &optional n)
- "Modifies LIST to remove the last N elements."
- (let ((m (length x)))
- (or n (setq n 1))
- (and (< n m)
- (progn
- (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil))
- x))))
-
;;;
;;; frame, window, buffer handling
;;;
(if (and mainbuf (get-buffer-window mainbuf))
;; FIXME: if the buffer popped into a pre-existing window,
;; we don't want to delete that window.
- ;;(delete-window win)
+ t ;;(delete-window win)
))))
(with-current-buffer buf
(bury-buffer (unless (and (eq buf (window-buffer (selected-window)))
(let ((mainwin (or (get-buffer-window mainbuf)
(get-buffer-window mainbuf 'visible))))
(when mainwin (select-window mainwin))))))
-
+
(defun cvs-get-buffer-create (name &optional noreuse)
"Create a buffer NAME unless such a buffer already exists.
If the NAME looks like an absolute file name, the buffer will be created
;; At least 2 columns; at least 2 spaces between columns.
(max 2 (/ wwidth (+ 2 length)))
;; Don't allocate more columns than we can fill.
+ ;; Windows can't show less than 3 lines anyway.
(max 1 (/ (length strings) 2))))
(colwidth (/ wwidth columns)))
+ ;; Use tab-width rather than indent-to.
(setq tab-width colwidth)
;; The insertion should be "sensible" no matter what choices were made.
(dolist (str strings)
If ONELINE is t, only the first line (no \\n) will be returned.
If ARGS is non-nil, the file will be executed with ARGS as its
arguments. If ARGS is not a list, no argument will be passed."
- (with-temp-buffer
- (condition-case nil
- (progn
- (if args
- (apply 'call-process
- file nil t nil (when (listp args) args))
- (insert-file-contents file))
- (buffer-substring (point-min)
- (if oneline
- (progn (goto-char (point-min)) (end-of-line) (point))
- (point-max))))
- (file-error nil))))
+ (condition-case nil
+ (with-temp-buffer
+ (if args
+ (apply 'call-process
+ file nil t nil (when (listp args) args))
+ (insert-file-contents file))
+ (goto-char (point-min))
+ (buffer-substring (point)
+ (if oneline (line-end-position) (point-max))))
+ (file-error nil)))
(defun cvs-string-prefix-p (str1 str2)
"Tell whether STR1 is a prefix of STR2."
(append (unless (eq i 0) (split-string (substring string 0 i) sep))
(let ((rfs (read-from-string string i)))
(cons (car rfs)
- (cvs-string->strings (substring string (cdr rfs)) sep)))))))
+ (cvs-string->strings (substring string (cdr rfs))
+ sep)))))))
-;;;;
+;;;;
;;;; file names
-;;;;
+;;;;
(defsubst cvs-expand-dir-name (d)
(file-name-as-directory (expand-file-name d)))
initval hist-sym))
(t initval)))))
-;;;;
+;;;;
;;;; Flags handling
-;;;;
+;;;;
(defstruct (cvs-flags
(:constructor nil)
;; sanity check
(unless (< (abs numarg) (length defaults))
- (error "There is no %sth default." (abs numarg)))
+ (error "There is no %sth default" (abs numarg)))
(if permstr
(let* ((prompt (format "%s%s: " desc permstr))
"Set SYM's INDEX'th setting to VALUE."
(setf (nth index (cvs-flags-defaults (symbol-value sym))) value))
-;;;;
+;;;;
;;;; Prefix keys
-;;;;
+;;;;
(defconst cvs-prefix-number 10)
&optional qtypedesc hist-sym)
(let ((cps (cvs-prefix-sym sym)))
`(progn
- (defvar ,sym nil ,(cons (or docstring "") "
+ (defvar ,sym nil ,(concat (or docstring "") "
See `cvs-prefix-set' for further description of the behavior."))
- (defconst ,cps
+ (defvar ,cps
(let ((defaults ,defaults))
;; sanity ensurance
(unless (>= (length defaults) cvs-prefix-number)
it queries the user and sets the -ARG'th default.
If ARG is greater than 9 (or \\[universal-argument] \\[universal-argument]),
the (ARG mod 10)'th prefix is made persistent.
-If ARG is NIL toggle the PREFIX's value between its 0th default and NIL
+If ARG is nil toggle the PREFIX's value between its 0th default and nil
and reset the persistence."
(let* ((prefix (symbol-value (cvs-prefix-sym sym)))
(numarg (if (integerp arg) arg 0))
(provide 'pcvs-util)
-;;; pcl-cvs-util.el ends here
+;;; arch-tag: 3b2588bb-2ae3-4f1f-bf5b-dea91b1f8a59
+;;; pcvs-util.el ends here