Mercurial > hg > xemacs-beta
diff lisp/dired/dired-xemacs-menu.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/dired/dired-xemacs-menu.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,247 @@ +;;; dired-xemacs-menu.el: A menu for the dired-mode. +;;; v2.90; 7 Dec 1993 +;;; Copyright (C) 1993 Heiko Muenkel +;;; email: muenkel@tnt.uni-hannover.de +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 1, or (at your option) +;;; any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +(require 'mode-motion) + +;; Popup and Pulldown Menu + +(defvar dired-menu + '("Dired Commands" + ["Open File" dired-find-file t] + ["Open File Other Window" dired-find-file-other-window t] + ["View File" dired-view-file t] + "----" + ("Mark" + ["Mark File" dired-mark-subdir-or-file t] + ["Mark Files in Region" dired-mark-region (mark)] + ["Mark Files by Regexp..." dired-mark-files-regexp t] + ["Mark All Directories" dired-mark-directories t] + ["Mark All Executables" dired-mark-executables t] + ["Mark All Symbolic Links" dired-mark-symlinks t] + "----" + ["Unmark File" dired-unmark-subdir-or-file t] + ["Unmark All Files" (dired-unflag-all-files nil) t] + ["Unmark All Files (Query)..." (dired-unflag-all-files nil t) t] + ["Unmark Files in Region" dired-unmark-region (mark)] + ) + ("Copy/Link" + ["Copy Files..." dired-do-copy t] + ["Copy Files by Regexp..." dired-do-copy-regexp t] + "----" + ["Symlink Files in Directory..." dired-do-symlink t] + ["Symlink Files in Directory by Regexp..." dired-do-symlink-regexp t] + "----" + ["Hard-Link Files in Directory..." dired-do-hardlink t] + ["Hard-Link Files in Directory by Regexp..." dired-do-hardlink-regexp t] + ) + ("Rename" + ["Rename Marked Files..." dired-do-move t] + ["Rename Files by Regexp..." dired-do-rename-regexp t] + "----" + ["Downcase Names of Marked Files..." dired-downcase t] + ["Upcase Names of Marked Files..." dired-upcase t] + ) + ("Delete" + ["Delete Marked Files..." dired-do-delete t] + ["Delete Flagged Files..." dired-do-deletions t] + "----" + ["Flag Marked Files for Deletion" dired-flag-file-deleted t] + ["Flag Files in Region for Deletion" dired-flag-region (mark)] + ["Flag Files for Deletion by Regexp..." dired-flag-regexp-files t] + ["Flag Backup Files for Deletion" dired-clean-directory t] + ["Flag Autosave Files for Deletion" dired-flag-auto-save-files t] + "----" + ["Unflag Marked Files" dired-unflag t] + ["Unflag Backup Files" dired-backup-unflag t] + ["Unflag All Files" (dired-unflag-all-files nil) t] + ["Unflag All Files (Query)..." (dired-unflag-all-files nil) t] + ["Unflag Files in Region" dired-unflag-region (mark)] + ) + ("Shell commands" + ["Compress Marked Files..." dired-do-compress t] + ["Uncompress Marked Files..." dired-do-uncompress t] + ["Print Marked Files..." dired-do-print t] + ["Shell Command on Marked Files..." dired-do-shell-command t] + "----" + ["Load Marked Files" dired-do-load t] + ["Byte-Compile Marked Files..." dired-do-byte-compile t] + "----" + ["Diff File Against Backup" dired-backup-diff t] + ["Diff File..." dired-diff t] + "----" + ["Change Permissions of Marked Files..." dired-do-chmod t] + ["Change Group of Marked Files..." dired-do-chgrp t] + ["Change Owner of Marked Files..." dired-do-chown t] + ) + "----" + ("Directory" + ["Up Directory" dired-up-directory t] + ["Home Directory" (dired "~/") t] + "----" + ["Dired..." dired t] + ["Dired Other Window..." dired-other-window t] + ["Redisplay All Files" revert-buffer t] + "----" + ["Create Directory..." dired-create-directory t] + "----" + ["Insert Subdirectory" dired-insert-subdir t] + ["Hide Subdirectory" dired-kill-subdir t] + ["Hide All Subdirectories..." dired-kill-tree t] + ) + ("Goto" + ["Next Directory Line" dired-next-dirline t] + ["Previous Directory Line" dired-prev-dirline t] + ["Next Marked File" dired-next-marked-file t] + ["Previous Marked File" dired-prev-marked-file t] + "----" + ["File..." dired-goto-file t] + ["Top of Directory..." dired-goto-subdir t] + ["Down Directory" dired-tree-down t] + ["Up Directory" dired-tree-up t] + ) + ("Display" + ["Undisplay Line or Subdirectory" dired-kill-line-or-subdir t] + ["Undisplay Tree" dired-kill-tree t] + ["Undisplay Marked Lines" dired-do-kill t] + "----" + ["Redisplay All Files" revert-buffer t] + ["Redisplay All Marked Files" dired-do-redisplay t] + ["Undo" dired-undo t] + "----" + ["Sort by Date/Name (Toggle)" dired-sort-toggle-or-edit t] + ["Edit `ls' Switches..." (dired-sort-toggle-or-edit t) t] + ) + "----" + ("Options, This Buffer" + ["Action is find-file" (set (make-local-variable 'dired-mouse-action) + 'dired-mouse-find-file) + :style radio + :selected (eq dired-mouse-action 'dired-mouse-find-file)] + ["Action is find-file-other-window" + (set (make-local-variable 'dired-mouse-action) + 'dired-mouse-find-file-other-window) + :style radio + :selected (eq dired-mouse-action 'dired-mouse-find-file-other-window)]) + ("Options, Global" + ["Action is find-file" (setq-default dired-mouse-action + 'dired-mouse-find-file) + :style radio + :selected (eq (default-value 'dired-mouse-action) + 'dired-mouse-find-file)] + ["Action is find-file-other-window" + (setq-default dired-mouse-action 'dired-mouse-find-file-other-window) + :style radio + :selected (eq (default-value 'dired-mouse-action) + 'dired-mouse-find-file-other-window)]) + "----" + ["Explain Last Failure" dired-why t] + ) + "*The menu for Dired.") + +(defun dired-mouse-file-on-line-p (event) + "Return t if there is a file under the mouse." + (interactive "@e") + (save-excursion + (mouse-set-point event) + (if (dired-move-to-filename) + t + nil))) + +(defun dired-mode-motion-highlight-line (event) + (if (dired-mouse-file-on-line-p event) + (mode-motion-highlight-line event))) + +(defun dired-install-menubar () + "Installs the Dired menu at the menubar." + (if (and (boundp 'current-menubar) current-menubar + (not (assoc "Dired" current-menubar))) + (progn + (set-buffer-menubar (copy-sequence current-menubar)) + (add-menu nil "Dired" (cdr dired-menu)))) + (make-local-variable 'mode-motion-hook) + (setq mode-motion-hook '(dired-mode-motion-highlight-line + mode-motion-add-help-echo)) + ;; #### double-click left is supposed to work but it doesn't. + ;; I'm not sure why. + (setq mode-motion-help-echo-string + "Middle button to select file under mouse.") + ) +(add-hook 'dired-mode-hook 'dired-install-menubar) + +(defun dired-popup-menu (event) + "Display the Dired Menu." + (interactive "@e") + (mouse-set-point event) + (dired-next-line 0) + (popup-menu dired-menu)) + +(defun dired-mouse-find-file (event) + "Edit the file under the mouse." + (interactive "e") + (mouse-set-point event) + (dired-next-line 0) + (dired-find-file)) + +(defun dired-mouse-find-file-other-window (event) + "Edit the file under the mouse, in another window." + (interactive "e") + (mouse-set-point event) + (dired-next-line 0) + (dired-find-file-other-window)) + +(defvar dired-mouse-action 'dired-mouse-find-file + "*Function to be called when button2 is clicked on a file in Dired.") + +(defun dired-mouse-do-action (event) + (interactive "e") + (funcall dired-mouse-action event)) + +(defun dired-mark-region (&optional form-to-eval) + "Mark all files in the region." + (interactive) + (or form-to-eval (setq form-to-eval '(dired-mark-subdir-or-file nil))) + (save-excursion + (let ((end (region-end))) + (goto-char (region-beginning)) + (beginning-of-line) + (while (<= (point) end) + (save-excursion (eval form-to-eval)) + (forward-line 1))))) + +(defun dired-unmark-region () + "Unmark all files in the region." + (interactive) + (dired-mark-region '(dired-unmark-subdir-or-file nil))) + +(defun dired-flag-region () + "Flag all files in the region for deletion." + (interactive) + (dired-mark-region '(dired-flag-file-deleted nil))) + +(defun dired-unflag-region () + "Unflag all files in the region for deletion." + (interactive) + (dired-mark-region '(dired-unflag 1))) + + +(define-key dired-mode-map 'button2 'dired-mouse-do-action) +(define-key dired-mode-map 'button3 'dired-popup-menu) + + +(provide 'dired-xemacs-menu)