Emacs: w32-shell-execute Doc String Bug

By Xah Lee. Date: . Last updated: .

In emacs GNU Emacs 23.2.1, built for Windows, there's a documentation bug for the emacs lisp function w32-shell-execute. When you Alt+x describe-function on w32-shell-execute, you get this:

w32-shell-execute is a built-in function in `C source code'.

[Missing arglist.  Please make a bug report.]

Not documented.

This is fixed in emacs 23.3, the doc string for w32-shell-execute is the followning:

w32-shell-execute is a built-in function in `C source code'.

(w32-shell-execute OPERATION DOCUMENT &optional PARAMETERS SHOW-FLAG)

Get Windows to perform OPERATION on DOCUMENT.
This is a wrapper around the ShellExecute system function, which
invokes the application registered to handle OPERATION for DOCUMENT.

OPERATION is either nil or a string that names a supported operation.
What operations can be used depends on the particular DOCUMENT and its
handler application, but typically it is one of the following common
operations:

 "open"    - open DOCUMENT, which could be a file, a directory, or an
               executable program.  If it is an application, that
               application is launched in the current buffer's default
               directory.  Otherwise, the application associated with
               DOCUMENT is launched in the buffer's default directory.

 "print"   - print DOCUMENT, which must be a file

 "explore" - start the Windows Explorer on DOCUMENT

 "edit"    - launch an editor and open DOCUMENT for editing; which
               editor is launched depends on the association for the
               specified DOCUMENT

 "find"    - initiate search starting from DOCUMENT which must specify
               a directory

 nil       - invoke the default OPERATION, or "open" if default is
               not defined or unavailable

DOCUMENT is typically the name of a document file or a URL, but can
also be a program executable to run, or a directory to open in the
Windows Explorer.

If DOCUMENT is a program executable, the optional third arg PARAMETERS
can be a string containing command line parameters that will be passed
to the program; otherwise, PARAMETERS should be nil or unspecified.

Optional fourth argument SHOW-FLAG can be used to control how the
application will be displayed when it is invoked.  If SHOW-FLAG is nil
or unspecified, the application is displayed normally, otherwise it is
an integer representing a ShowWindow flag:

  0 - start hidden
  1 - start normally
  3 - start maximized
  6 - start minimized

(Thanks to Jason Rumney for telling me about this fix.)

Examples of Using w32-shell-execute

Here's example of making a shell call.

;; if Windows
  (when (eq system-type 'windows-nt)
    (w32-shell-execute "explore" (replace-regexp-in-string "/" "\\" default-directory t t)))

Here's a example of similar purpose to w32-shell-execute but using shell-command for Mac OS X.

(defun open-with-textwrangler ()
  "Open the current file in Mac's TextWrangler."
  (interactive)
      (if (eq major-mode 'dired-mode)
          (shell-command "open .")
        (shell-command
         (concat "open -a /Applications/TextWrangler.app " "\"" (buffer-file-name) "\""))))