diff options
author | Karl Heuer <kwzh@gnu.org> | 1996-05-18 20:15:02 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1996-05-18 20:15:02 +0000 |
commit | ebd87348ad2b3696b960c8e27f8710f6a004b6e1 (patch) | |
tree | 660115cc5896be2f09fd64558c812b8c87981a9a /lisp | |
parent | d906166b34d4f3e4a008f9dad123da8d7baa02cf (diff) | |
download | emacs-ebd87348ad2b3696b960c8e27f8710f6a004b6e1.tar.gz |
Hold previous change until after the release.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/dos-fns.el | 72 | ||||
-rw-r--r-- | lisp/loadup.el | 4 | ||||
-rw-r--r-- | lisp/w32-fns.el | 112 |
3 files changed, 184 insertions, 4 deletions
diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el index b641a886a76..924f5a9b76a 100644 --- a/lisp/dos-fns.el +++ b/lisp/dos-fns.el @@ -28,6 +28,21 @@ ;;; Code: +;;; Add %t: into the mode line format just after the open-paren. +(let ((tail (member " %[(" mode-line-format))) + (setcdr tail (cons (purecopy "%t:") + (cdr tail)))) + +;; Use ";" instead of ":" as a path separator (from files.el). +(setq path-separator ";") + +;; Set the null device (for compile.el). +(setq grep-null-device "NUL") + +;; Set the grep regexp to match entries with drive letters. +(setq grep-regexp-alist + '(("^\\(\\([a-zA-Z]:\\)?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 3))) + ;; This overrides a trivial definition in files.el. (defun convert-standard-filename (filename) "Convert a standard file's name to something suitable for the current OS. @@ -78,6 +93,63 @@ with a definition that really does change some file names." (aset string (1- (length string)) lastchar)) (concat dir string)))) +(defvar file-name-buffer-file-type-alist + '( + ("[:/].*config.sys$" . nil) ; config.sys text + ("\\.elc$" . t) ; emacs stuff + ("\\.\\(obj\\|exe\\|com\\|lib\\|sys\\|chk\\|out\\|bin\\|ico\\|pif\\)$" . t) + ; MS-Dos stuff + ("\\.\\(arc\\|zip\\|pak\\|lzh\\|zoo\\)$" . t) + ; Packers + ("\\.\\(a\\|o\\|tar\\|z\\|gz\\|taz\\)$" . t) + ; Unix stuff + ("\\.tp[ulpw]$" . t) + ; Borland Pascal stuff + ("[:/]tags$" . t) + ; Emacs TAGS file + ) + "*Alist for distinguishing text files from binary files. +Each element has the form (REGEXP . TYPE), where REGEXP is matched +against the file name, and TYPE is nil for text, t for binary.") + +(defun find-buffer-file-type (filename) + (let ((alist file-name-buffer-file-type-alist) + (found nil) + (code nil)) + (let ((case-fold-search t)) + (setq filename (file-name-sans-versions filename)) + (while (and (not found) alist) + (if (string-match (car (car alist)) filename) + (setq code (cdr (car alist)) + found t)) + (setq alist (cdr alist)))) + (if found + (cond((memq code '(nil t)) code) + ((and (symbolp code) (fboundp code)) + (funcall code filename))) + default-buffer-file-type))) + +(defun find-file-binary (filename) + "Visit file FILENAME and treat it as binary." + (interactive "FFind file binary: ") + (let ((file-name-buffer-file-type-alist '(("" . t)))) + (find-file filename))) + +(defun find-file-text (filename) + "Visit file FILENAME and treat it as a text file." + (interactive "FFind file text: ") + (let ((file-name-buffer-file-type-alist '(("" . nil)))) + (find-file filename))) + +(defun find-file-not-found-set-buffer-file-type () + (save-excursion + (set-buffer (current-buffer)) + (setq buffer-file-type (find-buffer-file-type (buffer-file-name)))) + nil) + +;;; To set the default file type on new files. +(add-hook 'find-file-not-found-hooks 'find-file-not-found-set-buffer-file-type) + (defvar msdos-shells '("command.com" "4dos.com" "ndos.com") "*List of shells that use `/c' instead of `-c' and a backslashed command.") diff --git a/lisp/loadup.el b/lisp/loadup.el index 6d5bb4ed75f..789f374378d 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -114,16 +114,12 @@ (garbage-collect) (load "disp-table") ; needed to setup ibm-pc char set, see internal.el (garbage-collect) - (load "dos-win32") - (garbage-collect) (load "winnt") (garbage-collect))) (if (eq system-type 'ms-dos) (progn (load "ls-lisp") (garbage-collect) - (load "dos-win32") - (garbage-collect) (load "dos-fns") (garbage-collect) (load "disp-table") ; needed to setup ibm-pc char set, see internal.el diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el index 39eb75c09fe..9b6046b4f13 100644 --- a/lisp/w32-fns.el +++ b/lisp/w32-fns.el @@ -39,6 +39,23 @@ (define-key function-key-map [M-backspace] [?\M-\177]) (define-key function-key-map [C-M-backspace] [\C-\M-delete]) +;; Show file type (text or binary) on modeline +(setq-default mode-line-format + (list (purecopy "") + 'mode-line-modified + 'mode-line-buffer-identification + (purecopy " ") + 'global-mode-string + (purecopy " %[(") + (purecopy "%t:") + 'mode-name 'mode-line-process 'minor-mode-alist + (purecopy "%n") + (purecopy ")%]--") + (purecopy '(line-number-mode "L%l--")) + (purecopy '(column-number-mode "C%c--")) + (purecopy '(-3 . "%p")) + (purecopy "-%-"))) + ;; Ignore case on file-name completion (setq completion-ignore-case t) @@ -46,6 +63,101 @@ ;; for executing its command line argument (from simple.el). (setq shell-command-switch "/c") +;; Use ";" instead of ":" as a path separator (from files.el). +(setq path-separator ";") + +;; Set the null device (for compile.el). +(setq grep-null-device "NUL") + +;; Set the grep regexp to match entries with drive letters. +(setq grep-regexp-alist + '(("^\\(\\([a-zA-Z]:\\)?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 3))) + +;; Taken from dos-fn.el ... don't want all that's in the file, maybe +;; separate it out someday. + +(defvar file-name-buffer-file-type-alist + '( + ("[:/].*config.sys$" . nil) ; config.sys text + ("\\.elc$" . t) ; emacs stuff + ("\\.\\(obj\\|exe\\|com\\|lib\\|sys\\|chk\\|out\\|bin\\|ico\\|pif\\)$" . t) + ; MS-Dos stuff + ("\\.\\(arc\\|zip\\|pak\\|lzh\\|zoo\\)$" . t) + ; Packers + ("\\.\\(a\\|o\\|tar\\|z\\|gz\\|taz\\)$" . t) + ; Unix stuff + ("\\.tp[ulpw]$" . t) + ; Borland Pascal stuff + ("[:/]tags$" . t) + ; Emacs TAGS file + ) + "*Alist for distinguishing text files from binary files. +Each element has the form (REGEXP . TYPE), where REGEXP is matched +against the file name, and TYPE is nil for text, t for binary.") + +(defun find-buffer-file-type (filename) + (let ((alist file-name-buffer-file-type-alist) + (found nil) + (code nil)) + (let ((case-fold-search t)) + (setq filename (file-name-sans-versions filename)) + (while (and (not found) alist) + (if (string-match (car (car alist)) filename) + (setq code (cdr (car alist)) + found t)) + (setq alist (cdr alist)))) + (if found + (cond((memq code '(nil t)) code) + ((and (symbolp code) (fboundp code)) + (funcall code filename))) + default-buffer-file-type))) + +(defun find-file-binary (filename) + "Visit file FILENAME and treat it as binary." + (interactive "FFind file binary: ") + (let ((file-name-buffer-file-type-alist '(("" . t)))) + (find-file filename))) + +(defun find-file-text (filename) + "Visit file FILENAME and treat it as a text file." + (interactive "FFind file text: ") + (let ((file-name-buffer-file-type-alist '(("" . nil)))) + (find-file filename))) + +(defun find-file-not-found-set-buffer-file-type () + (save-excursion + (set-buffer (current-buffer)) + (setq buffer-file-type (find-buffer-file-type (buffer-file-name)))) + nil) + +;;; To set the default file type on new files. +(add-hook 'find-file-not-found-hooks 'find-file-not-found-set-buffer-file-type) + +;;; For using attached Unix filesystems. +(defun save-to-unix-hook () + (save-excursion + (setq buffer-file-type t)) + nil) + +(defun revert-from-unix-hook () + (save-excursion + (setq buffer-file-type (find-buffer-file-type (buffer-file-name)))) + nil) + +;; Really should provide this capability at the drive letter granularity. +(defun using-unix-filesystems (flag) + "Read and write all files assuming that they are on a drive attached +to a remote Unix file system. No CR/LF translation is done on any files +in this case. This behavior is activated when FLAG is t and deactived +when FLAG is any other value." + (if flag + (progn + (add-hook 'write-file-hooks 'save-to-unix-hook) + (add-hook 'after-save-hook 'revert-from-unix-hook)) + (progn + (remove-hook 'write-file-hooks 'save-to-unix-hook) + (remove-hook 'after-save-hook 'revert-from-unix-hook)))) + ;;; Avoid creating auto-save file names containing illegal characters ;;; (primarily "*", eg. for the *mail* buffer). (fset 'original-make-auto-save-file-name |