mdb@ESD.3Com.COM (Mark D. Baushke) (02/02/90)
[I tried to reply directly, but the mail bounced from sunpitt.East.Sun.COM with an 'Unknown host : wmpstr' -- mdb] On 30 Jan 90 15:47:06 GMT, wpmstr!fpb@sunpitt.east.sun.com (Frank P. Bresz) said: Frank> In GNU Emacs 18.52.3 of Tue Apr 11 1989 on omaha1 (berkeley-unix) Frank> Shouldn't this variable be buffer local? Feel free to hack your environment to your own taste. I am including the hacks that I use at the end of this messge. Frank> Often times I want to look at a certain directory sorted by Frank> time i.e. "-alt" instead of the default "-al" setting of this Frank> variable. But this doesn't mean I want to look at all Frank> directories this way. Frank> Many variables state that they automatically become bufer local Frank> when set in any way. How can I make dired-listing-switches be Frank> one of them. I use the following in my ~/.emacs (I am including my-dired-mode-hook.el after my .signature): (setq dired-mode-hook '(my-dired-mode-hook)) (autoload 'my-dired-mode-hook "my-dired-mode-hook" "Add new features to dired." t) Then typing an 's' toggles between the two flavors (-al and -alt) for a given buffer. (Suggestions for additions welcome!) Enjoy! -- Mark D. Baushke Internet: mdb@ESD.3Com.COM UUCP: {3comvax,auspex,sun}!bridge2!mdb ;;;;;;;;;;;;;;;;;;;;;;;;;;; -*- Mode: Emacs-Lisp -*- ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; my-dired-mode-hook.el --- additons to dired mode ;; ;; Author : Mark D. Baushke ;; Created On : Mon Mar 6 14:09:43 1989 ;; Last Modified By: Mark D. Baushke ;; Last Modified On: Tue Aug 29 12:11:40 1989 ;; Update Count : 7 ;; Status : Works for me! ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Ze'ev Wurman <zeev@silvlis.com>, Aug. 88 ;; (now at Amdahl -- new e-mail address <zeev@vlss.amdahl.com>) ;; (defun my-dired-mode-hook() (define-key dired-mode-map "a" 'dired-run-command) (define-key dired-mode-map "q" 'dired-exit) (define-key dired-mode-map "s" 'dired-toggle-sort) (define-key dired-mode-map "S" 'dired-byuser-mode) (define-key dired-mode-map "D" 'dired-run-backup-diff) (define-key dired-mode-map "\C-d" 'dired-run-diff) (require 'compile "compile") (make-local-variable 'byname-mode) (set-default 'byname-mode nil) (make-local-variable 'bydate-mode) (set-default 'bydate-mode nil) (make-local-variable 'byuser-mode) (set-default 'byuser-mode nil) (make-local-variable 'user-string) (set-default 'user-string nil) (make-local-variable 'minor-mode-alist) (make-local-variable 'dired-listing-switches) (setq minor-mode-alist (cons '(bydate-mode " ByDate") minor-mode-alist)) (setq minor-mode-alist (cons '(byname-mode " ByName") minor-mode-alist)) (setq minor-mode-alist (cons '(byuser-mode user-string) minor-mode-alist)) (if (string-equal dired-listing-switches "-alt") (bydate-mode) (if (string-equal dired-listing-switches "-al") (byname-mode) (dired-byuser-mode dired-listing-switches) ) ) ) (defun dired-toggle-sort () "Toggle dired sorting by-name/by-date. Initial setting is based on 'dired-listing-switches'. The known values are '-alt' (ByDate) and '-al' (ByName). Any other option really belongs to 'dired-byuser-mode'" (interactive) (if (string-equal dired-listing-switches "-alt") (byname-mode) (bydate-mode)) (revert-buffer)) (defun bydate-mode() (setq dired-listing-switches "-alt") (setq bydate-mode t byname-mode nil byuser-mode nil) (set-buffer-modified-p (buffer-modified-p)) ;No-op, but updates mode line. ) (defun byname-mode() (setq dired-listing-switches "-al") (setq byname-mode t bydate-mode nil byuser-mode nil) (set-buffer-modified-p (buffer-modified-p)) ;No-op, but updates mode line. ) (defun dired-byuser-mode(&optional user-str) "Let user specify his dired-listing-switches for dired-mode" (interactive) (if (not user-str) (setq user-string (read-string "ls switches (must contain -l): " dired-listing-switches)) (setq user-string user-str) ) (setq dired-listing-switches user-string) (setq user-string (concat " '" user-string "'")) (setq byname-mode nil bydate-mode nil byuser-mode t) (set-buffer-modified-p (buffer-modified-p)) ;No-op, but updates mode line. (revert-buffer) ) (defun dired-run-backup-diff() "Run diff on this file and its backup version" (interactive) (setq to-file (dired-get-filename)) (setq to-file1 (car (find-backup-file-name to-file))) (if (file-exists-p to-file1) () (setq to-file1 (file-name-sans-versions to-file))) (if (and (file-exists-p to-file1) (not (string-equal to-file to-file1))) () (setq to-file1 (read-file-name "diff with file: " to-file to-file 1))) (setq command (concat "diff " to-file " " to-file1)) (compile1 command "No more diff's" "diff") (dired-redisplay to-file) ) (defun dired-run-diff(to-file1) "Run diff on this file and another one" (interactive "fdiff with file:") (setq to-file (dired-get-filename)) (setq command (concat "diff " to-file " " to-file1)) (compile1 command "No more diff's" "diff") (dired-redisplay to-file) ) (defun kill-diff () "Kill the process made by the \\[diff] command." (interactive) (if compilation-process (interrupt-process compilation-process))) ;;; command to quit a dired session... (defun dired-exit () "Quit editing this directory." (interactive) (kill-buffer (current-buffer))) ;; modified rename (defun dired-rename-file (to-file) "Rename this file to TO-FILE." (interactive (list (read-file-name (format "Rename %s to: " (file-name-nondirectory (dired-get-filename))) nil (dired-get-filename)))) (setq to-file (expand-file-name to-file)) ;; Added this `if' to handle moving a file to another directory ;; the original code only contained the `else' clause. (if (file-directory-p to-file) (rename-file (dired-get-filename) (concat (directory-file-name to-file) "/" (file-name-nondirectory (dired-get-filename)))) (rename-file (dired-get-filename) to-file)) (let ((buffer-read-only nil)) (beginning-of-line) (delete-region (point) (progn (forward-line 1) (point))) (setq to-file (expand-file-name to-file)) (dired-add-entry (file-name-directory to-file) (file-name-nondirectory to-file))))