;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
-(provide 'em-unix)
+;;; Commentary:
+
+;; This file contains implementations of several UNIX command in Emacs
+;; Lisp, for several reasons:
+;;
+;; 1) it makes them available on all platforms where the Lisp
+;; functions used are available
+;;
+;; 2) it makes their functionality accessible and modified by the
+;; Lisp programmer.
+;;
+;; 3) it allows Eshell to refrain from having to invoke external
+;; processes for common operations.
+
+;;; Code:
-(eval-when-compile (require 'esh-maint))
(require 'eshell)
(defgroup eshell-unix nil
:tag "UNIX commands in Lisp"
:group 'eshell-module)
-;;; Commentary:
-
-;; This file contains implementations of several UNIX command in Emacs
-;; Lisp, for several reasons:
-;;
-;; 1) it makes them available on all platforms where the Lisp
-;; functions used are available
-;;
-;; 2) it makes their functionality accessible and modified by the
-;; Lisp programmer.
-;;
-;; 3) it allows Eshell to refrain from having to invoke external
-;; processes for common operations.
-
(defcustom eshell-unix-load-hook '(eshell-unix-initialize)
"*A list of functions to run when `eshell-unix' is loaded."
:type 'hook
:type 'boolean
:group 'eshell-unix)
-(defcustom eshell-plain-locate-behavior (eshell-under-xemacs-p)
+(defcustom eshell-plain-locate-behavior (featurep 'xemacs)
"*If non-nil, standalone \"locate\" commands will behave normally.
Standalone in this context means not redirected, and not on the
receiving side of a command pipeline."
:type 'boolean
:group 'eshell-unix)
-(require 'esh-opt)
-
;;; Functions:
(defun eshell-unix-initialize ()
(put 'eshell/man 'eshell-no-numeric-conversions t)
(defun eshell/info (&rest args)
- "Runs the info command in-frame with the same behaviour as command-line `info', ie:
+ "Run the info command in-frame with the same behavior as command-line `info', ie:
'info' => goes to top info window
'info arg1' => IF arg1 is a file, then visits arg1
'info arg1' => OTHERWISE goes to top info window and then menu item arg1
(if eshell-diff-window-config
(set-window-configuration eshell-diff-window-config)))
+(defun nil-blank-string (string)
+ "Return STRING, or nil if STRING contains only non-blank characters."
+ (cond
+ ((string-match "[^[:blank:]]" string) string)
+ (nil)))
+
(defun eshell/diff (&rest args)
"Alias \"diff\" to call Emacs `diff' function."
(let ((orig-args (eshell-stringify-list (eshell-flatten-list args))))
(setcdr (last args 3) nil))
(with-current-buffer
(condition-case err
- (diff old new (eshell-flatten-and-stringify args))
+ (diff old new
+ (nil-blank-string (eshell-flatten-and-stringify args)))
(error
(throw 'eshell-replace-command
(eshell-parse-command "*diff" orig-args))))
(put 'eshell/occur 'eshell-no-numeric-conversions t)
-;;; Code:
+(provide 'em-unix)
;;; arch-tag: 2462edd2-a76a-4cf2-897d-92e9a82ac1c9
;;; em-unix.el ends here