Subject: 24.3.50; ns-read-file-name (Snow Leopard) does not pause for yes/no if file exists.

From: Keith David Bershatsky <[email-masked]>
Date: Sat, 08 Jun 2013 10:01:01 -0700

Dear Emacs Support Team:

To the extent that the Emacs team still supports --with-ns options as to an older version of OSX (Snow Leopard 10.6.8), this is a "ns-read-file-name" bug report in relation thereto.  The "ns-read-file-name" bug does not seem to affect Emacs running on the current version of OSX (Mountain Lion).

Specifically, "ns-read-file-name" does not pause to permit the user to say "yes" or "no" with the graphical user interface.  The prompt "yes" or "no" is visible for only a split second, but then disappears.  The default is "yes", which overwrites the existing file (which may not be what the user wants).

Here is one example of print-to-pdf that does not work correctly on Snow Leopard:

(defun print-to-pdf (pdf-file-name)
  "Print the current file to the given file."
(interactive (list (ns-read-file-name "Write PDF file: " "~/" nil ".pdf")))
  (let (
(ps-file-name (concat (file-name-sans-extension pdf-file-name) ".ps"))
      (wbuf (generate-new-buffer "*Wrapped*"))
      (sbuf (current-buffer)))
      (jit-lock-fontify-now)
      (save-current-buffer
      (set-buffer wbuf)
      (insert-buffer sbuf)
      (longlines-mode t)
      (harden-newlines)
      (message (buffer-name sbuf))
      (spool-buffer-given-name (buffer-name sbuf))
      (kill-buffer wbuf)
      (switch-to-buffer "*PostScript*")
      (write-file ps-file-name)
      (kill-buffer (current-buffer)))
     (call-process "ps2pdf14" nil nil nil ps-file-name pdf-file-name)
     (delete-file ps-file-name)
     (message "PDF saved to %s" pdf-file-name)))

Here is another example that is not working correctly on Snow Leopard, but this one is not intereactive and requires Wanderlust modifying a function within mime-play.el.  I have added a non-gui wokaround, but it would be nice if the gui yes/no options could function properly.

(defun mime-save-content (entity situation)
    (let ((filename (ns-read-file-name "Write PDF file: " nil )))
        (if (file-exists-p filename)
            (or (yes-or-no-p (format "File %s exists. Save anyway? " filename))
            (error "")))
   (and filename (mime-write-entity-content entity (expand-file-name filename)))))

-- 
Sincerely,

Keith David Bershatsky
[email-masked]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

In GNU Emacs 24.3.50.1 (i386-apple-darwin10.8.0, NS apple-appkit-1038.36)
 of 2013-06-07 on MBP.local
Bzr revision: 112887 [email-masked]
Windowing system distributor `Apple', version 10.3.1038
Configured using:
 `configure --with-ns'

Important settings:
  locale-coding-system: utf-8
  default enable-multibyte-characters: t

Major mode: Text

Minor modes in effect:
  global-highlight-parentheses-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  desktop-save-mode: t
  global-whitespace-mode: t
  whitespace-mode: t
  global-linum-mode: t
  linum-mode: t
  global-hl-line-mode: t
  delete-selection-mode: t
  auto-image-file-mode: t
  tabbar-mwheel-mode: t
  tabbar-mode: t
  openwith-mode: t
  highlight-parentheses-mode: t
  osx-key-mode: t
  show-newlines-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: 1
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Recent input:
<escape> x r e p o r t - e m a c s - b u g <return

Recent messages:
[yas] Loading compiled snippets from /Users/HOME/.0.data/.0.emacs/elpa/yasnippet-0.8.0/snippets/text-mode
Wrote /Users/HOME/.0.data/.0.emacs/.lock
Desktop: 2 buffers restored.
For information about GNU Emacs and the GNU system, type C-h C-a.
Saving file /Users/HOME/.0.data/.0.emacs/*scratch*...
Wrote /Users/HOME/.0.data/.0.emacs/*scratch*
Undo...
Undo!
Saving file /Users/HOME/.0.data/.0.emacs/*scratch*...
Wrote /Users/HOME/.0.data/.0.emacs/*scratch*

Load-path shadows:
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/utils/wl-mailto hides /Users/HOME/.0.data/.0.emacs/elpa/wanderlust/site-lisp/wl/wl-mailto
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/utils/wl-complete hides /Users/HOME/.0.data/.0.emacs/elpa/wanderlust/site-lisp/wl/wl-complete
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/utils/wl-addrbook hides /Users/HOME/.0.data/.0.emacs/elpa/wanderlust/site-lisp/wl/wl-addrbook
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/utils/ssl hides /Users/HOME/.0.data/.0.emacs/elpa/wanderlust/site-lisp/wl/ssl
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/utils/rfc2368 hides /Users/HOME/.0.data/.0.emacs/elpa/wanderlust/site-lisp/wl/rfc2368
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/utils/im-wl hides /Users/HOME/.0.data/.0.emacs/elpa/wanderlust/site-lisp/wl/im-wl
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/std11 hides ~/.0.data/.0.emacs/elpa/flim/std11
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/smtp hides ~/.0.data/.0.emacs/elpa/flim/smtp
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sha1 hides ~/.0.data/.0.emacs/elpa/flim/sha1
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sha1-el hides ~/.0.data/.0.emacs/elpa/flim/sha1-el
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl hides ~/.0.data/.0.emacs/elpa/flim/sasl
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl-scram hides ~/.0.data/.0.emacs/elpa/flim/sasl-scram
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl-ntlm hides ~/.0.data/.0.emacs/elpa/flim/sasl-ntlm
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl-digest hides ~/.0.data/.0.emacs/elpa/flim/sasl-digest
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl-cram hides ~/.0.data/.0.emacs/elpa/flim/sasl-cram
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/qmtp hides ~/.0.data/.0.emacs/elpa/flim/qmtp
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/ntlm hides ~/.0.data/.0.emacs/elpa/flim/ntlm
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mmgeneric hides ~/.0.data/.0.emacs/elpa/flim/mmgeneric
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mmexternal hides ~/.0.data/.0.emacs/elpa/flim/mmexternal
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mmcooked hides ~/.0.data/.0.emacs/elpa/flim/mmcooked
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mmbuffer hides ~/.0.data/.0.emacs/elpa/flim/mmbuffer
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mime hides ~/.0.data/.0.emacs/elpa/flim/mime
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mime-parse hides ~/.0.data/.0.emacs/elpa/flim/mime-parse
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mime-def hides ~/.0.data/.0.emacs/elpa/flim/mime-def
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mime-conf hides ~/.0.data/.0.emacs/elpa/flim/mime-conf
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mel hides ~/.0.data/.0.emacs/elpa/flim/mel
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mel-u hides ~/.0.data/.0.emacs/elpa/flim/mel-u
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mel-q hides ~/.0.data/.0.emacs/elpa/flim/mel-q
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mel-q-ccl hides ~/.0.data/.0.emacs/elpa/flim/mel-q-ccl
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mel-g hides ~/.0.data/.0.emacs/elpa/flim/mel-g
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mel-b-el hides ~/.0.data/.0.emacs/elpa/flim/mel-b-el
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/mel-b-ccl hides ~/.0.data/.0.emacs/elpa/flim/mel-b-ccl
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/md5 hides ~/.0.data/.0.emacs/elpa/flim/md5
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/md4 hides ~/.0.data/.0.emacs/elpa/flim/md4
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/lunit hides ~/.0.data/.0.emacs/elpa/flim/lunit
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/luna hides ~/.0.data/.0.emacs/elpa/flim/luna
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/hmac-sha1 hides ~/.0.data/.0.emacs/elpa/flim/hmac-sha1
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/hmac-md5 hides ~/.0.data/.0.emacs/elpa/flim/hmac-md5
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/hmac-def hides ~/.0.data/.0.emacs/elpa/flim/hmac-def
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/hex-util hides ~/.0.data/.0.emacs/elpa/flim/hex-util
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/eword-encode hides ~/.0.data/.0.emacs/elpa/flim/eword-encode
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/eword-decode hides ~/.0.data/.0.emacs/elpa/flim/eword-decode
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/static hides ~/.0.data/.0.emacs/elpa/apel/static
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/richtext hides ~/.0.data/.0.emacs/elpa/apel/richtext
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/pym hides ~/.0.data/.0.emacs/elpa/apel/pym
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/product hides ~/.0.data/.0.emacs/elpa/apel/product
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/poem hides ~/.0.data/.0.emacs/elpa/apel/poem
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/poem-e20_3 hides ~/.0.data/.0.emacs/elpa/apel/poem-e20_3
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/poem-e20 hides ~/.0.data/.0.emacs/elpa/apel/poem-e20
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/poe hides ~/.0.data/.0.emacs/elpa/apel/poe
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/pcustom hides ~/.0.data/.0.emacs/elpa/apel/pcustom
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/pces hides ~/.0.data/.0.emacs/elpa/apel/pces
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/pces-e20 hides ~/.0.data/.0.emacs/elpa/apel/pces-e20
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/pces-20 hides ~/.0.data/.0.emacs/elpa/apel/pces-20
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/pccl hides ~/.0.data/.0.emacs/elpa/apel/pccl
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/pccl-20 hides ~/.0.data/.0.emacs/elpa/apel/pccl-20
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/apel/path-util hides ~/.0.data/.0.emacs/elpa/apel/path-util
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/mule-caesar hides ~/.0.data/.0.emacs/elpa/apel/mule-caesar
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/mcs-e20 hides ~/.0.data/.0.emacs/elpa/apel/mcs-e20
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/mcs-20 hides ~/.0.data/.0.emacs/elpa/apel/mcs-20
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/mcharset hides ~/.0.data/.0.emacs/elpa/apel/mcharset
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/invisible hides ~/.0.data/.0.emacs/elpa/apel/invisible
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/inv-23 hides ~/.0.data/.0.emacs/elpa/apel/inv-23
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/apel/install hides ~/.0.data/.0.emacs/elpa/apel/install
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/apel/filename hides ~/.0.data/.0.emacs/elpa/apel/filename
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/emu hides ~/.0.data/.0.emacs/elpa/apel/emu
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/apel/calist hides ~/.0.data/.0.emacs/elpa/apel/calist
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/broken hides ~/.0.data/.0.emacs/elpa/apel/broken
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/emu/apel-ver hides ~/.0.data/.0.emacs/elpa/apel/apel-ver
/Users/HOME/.0.data/.0.emacs/elpa/apel/site-lisp/apel/alist hides ~/.0.data/.0.emacs/elpa/apel/alist
~/.0.data/.0.emacs/elpa/apel/timezone hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/timezone
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/md4 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/md4
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/hex-util hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/hex-util
~/.0.data/.0.emacs/elpa/apel/env hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/env
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl-ntlm hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl-ntlm
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl-digest hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl-digest
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/sasl-cram hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl-cram
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/ntlm hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/ntlm
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/hmac-md5 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/hmac-md5
/Users/HOME/.0.data/.0.emacs/elpa/flim/site-lisp/flim/hmac-def hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/hmac-def
~/.0.data/.0.emacs/elpa/flim/smtpmail hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/mail/smtpmail
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/utils/rfc2368 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/mail/rfc2368
/Users/HOME/.0.data/.0.emacs/elpa/wanderlust/site-lisp/wl/utf7 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/gnus/utf7
/Users/HOME/.0.data/.0.emacs/elpa/semi/site-lisp/semi/smime hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/gnus/smime
~/.0.data/.0.emacs/elpa/flim/mailcap hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/gnus/mailcap
~/.0.data/.0.emacs/elpa/el-get/.dir-locals hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/gnus/.dir-locals
/Users/HOME/.0.data/.0.emacs/elpa/semi/site-lisp/semi/pgg hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg
/Users/HOME/.0.data/.0.emacs/elpa/semi/site-lisp/semi/pgg-pgp5 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-pgp5
/Users/HOME/.0.data/.0.emacs/elpa/semi/site-lisp/semi/pgg-pgp hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-pgp
/Users/HOME/.0.data/.0.emacs/elpa/semi/site-lisp/semi/pgg-parse hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-parse
/Users/HOME/.0.data/.0.emacs/elpa/semi/site-lisp/semi/pgg-gpg hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-gpg
/Users/HOME/.0.data/.0.emacs/elpa/semi/site-lisp/semi/pgg-def hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-def

Features:
(shadow mime-setup mail-mime-setup semi-setup mime-pgp mime-image
modb-standard elmo-imap4 time-stamp wl-demo wl-news derived wl-address
wl-thread wl-action wl-summary wl-refile wl-message wl-mime mime-play
filename mime-edit pgg-parse pccl pccl-20 pgg-def signature elmo-mime
mmelmo-buffer mmelmo-imap mime-view byte-opt warnings mime-conf calist
semi-def mmimap mmbuffer mmgeneric wl-highlight elmo-multi wl-folder
wl wl-e21 wl-util elmo-flag wl-draft eword-encode wl-template wl-vars
wl-version elmo-net elmo-cache elmo-map elmo-dop elmo-localdir elmo
elmo-signal elmo-msgdb modb modb-generic modb-entity elmo-util emu
invisible inv-23 poem poem-e20 poem-e20_3 utf7 elmo-date elmo-vars
path-util elmo-version emacsbug sendmail auctex-autoloads tex-site
info yasnippet-autoloads bbdb-autoloads bbdb ps-print ps-def lpr
starttls mime-w3m mime eword-decode mel mime-parse std11 luna mime-def
alist mcharset mcs-20 mcs-e20 pces pces-e20 pces-20 broken pcustom poe
w3m-load w3m browse-url doc-view jka-compr image-mode timezone pym
static apel-ver product w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-ccl
ccl w3m-favicon w3m-image w3m-proc w3m-util .loaddefs el-get
el-get-autoloads el-get-list-packages el-get-notify
el-get-dependencies el-get-build el-get-status pp el-get-recipes
el-get-byte-compile el-get-methods el-get-fossil el-get-svn
el-get-pacman el-get-github-zip el-get-github-tar el-get-http-zip
el-get-http-tar el-get-hg el-get-git-svn el-get-fink el-get-emacswiki
el-get-http el-get-emacsmirror el-get-github el-get-git el-get-elpa
package el-get-darcs el-get-cvs el-get-bzr el-get-brew el-get-builtin
el-get-apt-get el-get-custom el-get-core autoload bytecomp
byte-compile cconv dired savehist yasnippet help-mode desktop
saveplace whitespace linum hl-line delsel flyspell ispell server
multiple-cursors mc-separate-operations rectangular-region-mode
mc-mark-more thingatpt mc-cycle-cursors mc-edit-lines
multiple-cursors-core edmacro kmacro rect init-gnus image-file
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art
mm-uu mml2015 epg-config mm-view mml-smime smime password-cache dig
mailcap nntp gnus-cache gnus-sum nnoo gnus-group gnus-undo nnmail
mail-source gnus-start gnus-spec gnus-int gnus-range message
format-spec rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus gnus-ems nnheader gnus-util mail-utils
mm-util mail-prsvr wid-edit tabbar openwith osx-contacts osx-itunes
osx-osascript highlight-parentheses auto-save-buffers-enhanced
frame-cmds cl-macs gv cl cl-lib frame-fns avoid osxkeys aquamacs-redo
longlines nadvice advice help-fns visual-line disp-table easy-mmode
time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel ns-win
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet
lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook
help simple abbrev minibuffer loaddefs button faces cus-face macroexp
files text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote
make-network-process ns multi-tty emacs)