emu-18.el(generate-new-buffer-name), emu-mule.el(write-region-as-raw-text-CRLF):...
[elisp/apel.git] / emu-18.el
index 4f40bfa..8ee121a 100644 (file)
--- a/emu-18.el
+++ b/emu-18.el
@@ -1,12 +1,12 @@
-;;; emu-18.el --- EMACS 19.* emulation module for EMACS 18.*
+;;; emu-18.el --- emu API implementation for Emacs 18.*
 
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-18.el,v 7.24 1996/09/15 07:50:56 morioka Exp $
+;; Version: $Id: emu-18.el,v 7.33 1997/04/05 06:44:01 morioka Exp $
 ;; Keywords: emulation, compatibility
 
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
+(autoload 'setenv "env"
+  "Set the value of the environment variable named VARIABLE to VALUE.
+VARIABLE should be a string.  VALUE is optional; if not provided or is
+`nil', the environment variable VARIABLE will be removed.  
+This function works by modifying `process-environment'."
+  t)
+
+(defvar data-directory exec-directory)
+
+
 ;;; @ for EMACS 18.55
 ;;;
 
@@ -150,8 +160,13 @@ Associates the function with the current load file, if any.
             ))
         )))
 
+(defmacro-maybe defsubst (name arglist &rest body)
+  "Define an inline function.  The syntax is just like that of `defun'."
+  (cons 'defun (cons name (cons arglist body)))
+  )
+
 
-;;; @ directory
+;;; @ file
 ;;;
 
 (defun make-directory-internal (dirname)
@@ -194,6 +209,23 @@ to create parent directories if they don't exist.
     ))
 
 ;; Imported from files.el of EMACS 19.33.
+(defun parse-colon-path (cd-path)
+  "Explode a colon-separated list of paths into a string list."
+  (and cd-path
+       (let (cd-prefix cd-list (cd-start 0) cd-colon)
+        (setq cd-path (concat cd-path path-separator))
+        (while (setq cd-colon (string-match path-separator cd-path cd-start))
+          (setq cd-list
+                (nconc cd-list
+                       (list (if (= cd-start cd-colon)
+                                  nil
+                               (substitute-in-file-name
+                                (file-name-as-directory
+                                 (substring cd-path cd-start cd-colon)))))))
+          (setq cd-start (+ cd-colon 1)))
+        cd-list)))
+
+;; Imported from files.el of EMACS 19.33.
 (defun file-relative-name (filename &optional directory)
   "Convert FILENAME to be relative to DIRECTORY (default: default-directory)."
   (setq filename (expand-file-name filename)
@@ -241,13 +273,16 @@ With optional non-nil ALL, force redisplay of all mode-lines.
   (set-buffer-modified-p (buffer-modified-p)))
 
 
+;;; @ overlay
+;;;
+
+(defun overlay-buffer (overlay))
+
+
 ;;; @ text property
 ;;;
 
-(defun tl:set-text-properties (start end properties &optional object))
-(defun tl:add-text-properties (start end properties &optional object)) 
 (defun remove-text-properties (start end properties &optional object))
-(defun tl:overlay-buffer (overlay))
 
 
 ;;; @@ visible/invisible
@@ -323,6 +358,25 @@ With optional non-nil ALL, force redisplay of all mode-lines.
   )
 
 
+;;; @ buffer
+;;;
+
+(defun-maybe generate-new-buffer-name (name &optional ignore)
+  "Return a string that is the name of no existing buffer based on NAME.
+If there is no live buffer named NAME, then return NAME.
+Otherwise modify name by appending `<NUMBER>', incrementing NUMBER
+until an unused name is found, and then return that name.
+Optional second argument IGNORE specifies a name that is okay to use
+\(if it is in the sequence to be tried)
+even if a buffer with that name exists."
+  (if (get-buffer name)
+      (let ((n 2) new)
+       (while (get-buffer (setq new (format "%s<%d>" name n)))
+         (setq n (1+ n)))
+       new)
+    name))
+
+
 ;;; @ end
 ;;;