From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Keith David Bershatsky Newsgroups: gmane.emacs.bugs Subject: bug#15189: 24.3.50; display-buffer does not work well with custom frames. Date: Sun, 25 Aug 2013 17:50:43 -0700 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (generated by - "") Content-Type: text/plain; charset=US-ASCII X-Trace: ger.gmane.org 1377478333 27345 80.91.229.3 (26 Aug 2013 00:52:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 26 Aug 2013 00:52:13 +0000 (UTC) To: 15189@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Aug 26 02:52:16 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VDl2V-00087N-RT for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 Aug 2013 02:52:16 +0200 Original-Received: from localhost ([::1]:48250 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDl2V-0003tG-Hc for geb-bug-gnu-emacs@m.gmane.org; Sun, 25 Aug 2013 20:52:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43560) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDl2N-0003tB-ST for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:52:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VDl2I-00067Y-QP for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:52:07 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33051) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDl2I-00067U-Lv for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:52:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VDl2I-0001e0-G7 for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:52:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Keith David Bershatsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 Aug 2013 00:52:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 15189 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13774782676243 (code B ref -1); Mon, 26 Aug 2013 00:52:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 26 Aug 2013 00:51:07 +0000 Original-Received: from localhost ([127.0.0.1]:55597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VDl1N-0001ca-OV for submit@debbugs.gnu.org; Sun, 25 Aug 2013 20:51:07 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:41550) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VDl1J-0001cH-SD for submit@debbugs.gnu.org; Sun, 25 Aug 2013 20:51:03 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VDl1F-0005uv-03 for submit@debbugs.gnu.org; Sun, 25 Aug 2013 20:51:01 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:37817) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDl1E-0005ur-TA for submit@debbugs.gnu.org; Sun, 25 Aug 2013 20:50:56 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43229) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDl19-0003pl-Uf for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:50:56 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VDl14-0005sK-AZ for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:50:51 -0400 Original-Received: from cobb.liquidweb.com ([50.28.13.150]:45442) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDl13-0005s3-WE for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:50:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com; s=default; h=Content-Type:MIME-Version:Subject:To:From:Message-ID:Date; bh=H4zo05DaPesQnarOEOVeuPgXR15BgDZeuEiCkICqG/4=; b=FT7lXS1S3dA+H23noshVRuEYBTmA6XLXpM7ue3nfMp9pbcKTKIX7rVZ6Y4B58ag8irQTaiCx/Fe+Fz+PYccUMScDwGR4oSQXFzVnr01Wz91dgC+F8gKTZQUSZnA2R9t7; Original-Received: from cpe-75-85-5-102.socal.res.rr.com ([75.85.5.102]:49261 helo=MP.local) by cobb.liquidweb.com with esmtp (Exim 4.80.1) (envelope-from ) id 1VDl0z-0004tF-W9 for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2013 20:50:42 -0400 User-Agent: / () / () APEL/10.8 Emacs/24.3.50 (x86_64-apple-darwin10.8.0) MULE/6.0 (HANACHIRUSATO) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cobb.liquidweb.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lawlist.com X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry: lawlist|lawlist.com X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:77727 Archived-At: The documentation for (display-buffer) uses an example with (get-buffer-create "*foo*"): http://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Action-Functions.html This does not work well with find-file in conjunction with several frames because find-file is executed BEFORE custom frame functions are run. The result is that the buffer that initially had focus ends up getting buried even though the file being opened is in a new frame. The only reliable workaround appears to be calling the find-file command AFTER the custom frame functions are run, which (in my lay opinion) defeats the purpose of using display-buffer. If the display-buffer function was never intended by the developers to be used with find-file and custom frames, then perhaps this email could be treated as a feature request "wish-list" instead of being treated as a bug report. Below is a detailed example that demonstrates what I am experiencing -- just plug it in and run the function "example". Here is a link to a working example that does not use display-buffer: http://stackoverflow.com/questions/18346785/how-to-intercept-a-file-before-it-opens-and-decide-which-frame ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun example () (interactive) (custom-find-file "*bar*") (set-frame-position (selected-frame) 0 0) (mark-whole-buffer) (delete-region (region-beginning) (region-end)) (insert "\*bar\* is about to be buried.") (message "\*bar\* is about to be buried.") (sit-for 3) (custom-find-file "foo.txt") (set-frame-position (selected-frame) 100 100) (mark-whole-buffer) (delete-region (region-beginning) (region-end)) (insert "\"foo.txt\" is about to be buried.") (message "\"foo.txt\" is about to be buried.") (sit-for 3) (custom-find-file "doe.org") (set-frame-position (selected-frame) 200 200) (mark-whole-buffer) (delete-region (region-beginning) (region-end)) (insert "\"doe.org\" is about to be buried.") (message "\"doe.org\" is about to be buried.") (sit-for 3) (custom-find-file "*undefined*") (set-frame-position (selected-frame) 300 300) (mark-whole-buffer) (delete-region (region-beginning) (region-end)) (insert "\*undefined\* is now visible in two (2) frames.") (message "\*undefined\* is now visible in two (2) frames.") ) (defvar lawlist-system-buffer-regexp nil "Regexps matching `buffer-filename` for frame name `SYSTEM`.") (setq lawlist-system-buffer-regexp '("*scratch*" "*bar*")) (defvar lawlist-main-buffer-regexp nil "Regexps matching `buffer-filename` for frame name `MAIN`.") (setq lawlist-main-buffer-regexp '("\\.txt" "\\.tex" "\\.el" "\\.yasnippet")) (defvar lawlist-org-buffer-regexp nil "Regexps matching `buffer-filename` for frame name `ORG`.") (setq lawlist-org-buffer-regexp '("[*]todo-list[*]" "\\.org_archive" "\\.org")) (defun lawlist-regexps-match-p (regexps string) (catch 'matched (dolist (regexp regexps) (if (string-match regexp string) (throw 'matched t))))) (defvar buffer-filename nil) (defun custom-find-file (&optional buffer-filename) "Locate or create a specific frame, and then open the file." (interactive) (unless buffer-filename (setq buffer-filename (read-file-name "Select File: "))) (if buffer-filename (display-buffer (find-file buffer-filename)))) (defun lawlist-display-buffer-function (&optional buffer flag) (if buffer-filename (progn (when (lawlist-regexps-match-p lawlist-org-buffer-regexp buffer-filename) (if (frame-exists "ORG") (switch-to-frame "ORG") ;; If unnamed frame exists, then take control of it. (catch 'break (dolist (frame (frame-list)) (if (and (not (equal "MAIN" (frame-parameter frame 'name))) (not (equal "SYSTEM" (frame-parameter frame 'name))) (not (equal "ORG" (frame-parameter frame 'name))) (not (equal "WANDERLUST" (frame-parameter frame 'name))) (not (equal "MISCELLANEOUS" (frame-parameter frame 'name))) ) (throw 'break (progn (switch-to-frame (frame-parameter frame 'name)) (set-frame-name "ORG")))))) ;; If dolist found no unnamed frame, then create / name it. (if (not (frame-exists "ORG")) (progn (make-frame) (set-frame-name "ORG"))) )) (when (lawlist-regexps-match-p lawlist-main-buffer-regexp buffer-filename) (if (frame-exists "MAIN") (switch-to-frame "MAIN") ;; If unnamed frame exists, then take control of it. (catch 'break (dolist (frame (frame-list)) (if (and (not (equal "MAIN" (frame-parameter frame 'name))) (not (equal "SYSTEM" (frame-parameter frame 'name))) (not (equal "ORG" (frame-parameter frame 'name))) (not (equal "WANDERLUST" (frame-parameter frame 'name))) (not (equal "MISCELLANEOUS" (frame-parameter frame 'name))) ) (throw 'break (progn (switch-to-frame (frame-parameter frame 'name)) (set-frame-name "MAIN")))))) ;; If dolist found no unnamed frame, then create / name it. (if (not (frame-exists "MAIN")) (progn (make-frame) (set-frame-name "MAIN"))) )) (when (lawlist-regexps-match-p lawlist-system-buffer-regexp buffer-filename) (if (frame-exists "SYSTEM") (switch-to-frame "SYSTEM") ;; If unnamed frame exists, then take control of it. (catch 'break (dolist (frame (frame-list)) (if (and (not (equal "MAIN" (frame-parameter frame 'name))) (not (equal "SYSTEM" (frame-parameter frame 'name))) (not (equal "ORG" (frame-parameter frame 'name))) (not (equal "WANDERLUST" (frame-parameter frame 'name))) (not (equal "MISCELLANEOUS" (frame-parameter frame 'name))) ) (throw 'break (progn (switch-to-frame (frame-parameter frame 'name)) (set-frame-name "SYSTEM")))))) ;; If dolist found no unnamed frame, then create / name it. (if (not (frame-exists "SYSTEM")) (progn (make-frame) (set-frame-name "SYSTEM"))) )) (when (and (not (lawlist-regexps-match-p lawlist-org-buffer-regexp buffer-filename)) (not (lawlist-regexps-match-p lawlist-main-buffer-regexp buffer-filename)) (not (lawlist-regexps-match-p lawlist-system-buffer-regexp buffer-filename)) ) (if (frame-exists "MISCELLAENOUS") (switch-to-frame "MISCELLAENOUS") ;; If unnamed frame exists, then take control of it. (catch 'break (dolist (frame (frame-list)) (if (and (not (equal "MAIN" (frame-parameter frame 'name))) (not (equal "SYSTEM" (frame-parameter frame 'name))) (not (equal "ORG" (frame-parameter frame 'name))) (not (equal "WANDERLUST" (frame-parameter frame 'name))) (not (equal "MISCELLANEOUS" (frame-parameter frame 'name))) ) (throw 'break (progn (switch-to-frame (frame-parameter frame 'name)) (set-frame-name "MISCELLAENEOUS")))))) ;; If dolist found no unnamed frame, then create / name it. (if (not (frame-exists "MISCELLAENEOUS")) (progn (make-frame) (set-frame-name "MISCELLAENEOUS")))))))) (setq display-buffer-function 'lawlist-display-buffer-function) (defun frame-exists (frame-name) (not (eq nil (get-frame frame-name)))) (defun get-frame-name (&optional frame) "Return the string that names FRAME (a frame). Default is selected frame." (unless frame (setq frame (selected-frame))) (if (framep frame) (cdr (assq 'name (frame-parameters frame))) (error "Function `get-frame-name': Argument not a frame: `%s'" frame))) (defun get-frame (frame) "Return a frame, if any, named FRAME (a frame or a string). If none, return nil. If FRAME is a frame, it is returned." (cond ((framep frame) frame) ((stringp frame) (catch 'get-a-frame-found (dolist (fr (frame-list)) (when (string= frame (get-frame-name fr)) (throw 'get-a-frame-found fr))) nil)) (t (error "Function `get-frame-name': Arg neither a string nor a frame: `%s'" frame)))) (defun switch-to-frame (frame-name) (let ((frames (frame-list))) (catch 'break (while frames (let ((frame (car frames))) (if (equal (frame-parameter frame 'name) frame-name) (throw 'break (select-frame-set-input-focus frame)) (setq frames (cdr frames)))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; In GNU Emacs 24.3.50.1 (x86_64-apple-darwin10.8.0, NS apple-appkit-1038.36) of 2013-08-22 on MP.local Bzr revision: 113971 monnier@iro.umontreal.ca-20130822040645-0fc4fi87eir72jnb Windowing system distributor `Apple', version 10.3.1038 Configured using: `configure --with-ns' Important settings: locale-coding-system: nil default enable-multibyte-characters: t Major mode: Text Minor modes in effect: whitespace-mode: t yas-global-mode: t yas-minor-mode: t global-highlight-parentheses-mode: t global-linum-mode: t linum-mode: t delete-selection-mode: t flyspell-mode: t frame-bufs-mode: t tabbar-mode: t highlight-parentheses-mode: t osx-key-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 line-number-mode: t global-visual-line-mode: t visual-line-mode: t transient-mark-mode: t Recent input: x e x a m p l e s-w s-w s-w s-w s-w s-w s-w y s-w s-w s-w y s-w s-w s-w s-w s-w s-w s-o Recent messages: Word wrapping enabled *beep* Beginning of buffer *beep* Beginning of buffer Load-path shadows: ~/.0.data/.0.emacs/elpa/flim/md4 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/md4 ~/.0.data/.0.emacs/elpa/flim/hex-util hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/hex-util ~/.0.data/.0.emacs/elpa/flim/sasl hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl ~/.0.data/.0.emacs/elpa/flim/sasl-ntlm hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl-ntlm ~/.0.data/.0.emacs/elpa/flim/sasl-digest hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl-digest ~/.0.data/.0.emacs/elpa/flim/sasl-cram hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/sasl-cram ~/.0.data/.0.emacs/elpa/flim/ntlm hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/ntlm ~/.0.data/.0.emacs/elpa/flim/hmac-md5 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/hmac-md5 ~/.0.data/.0.emacs/elpa/flim/hmac-def hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/net/hmac-def ~/.0.data/.0.emacs/elpa/wanderlust/rfc2368 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/mail/rfc2368 ~/.0.data/.0.emacs/elpa/wanderlust/utf7 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/gnus/utf7 ~/.0.data/.0.emacs/elpa/semi/smime hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/gnus/smime ~/.0.data/.0.emacs/elpa/el-get/.dir-locals hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/gnus/.dir-locals ~/.0.data/.0.emacs/elpa/semi/pgg hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg ~/.0.data/.0.emacs/elpa/semi/pgg-pgp5 hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-pgp5 ~/.0.data/.0.emacs/elpa/semi/pgg-pgp hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-pgp ~/.0.data/.0.emacs/elpa/semi/pgg-parse hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-parse ~/.0.data/.0.emacs/elpa/semi/pgg-gpg hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-gpg ~/.0.data/.0.emacs/elpa/semi/pgg-def hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/pgg-def ~/.0.data/.0.emacs/elpa/utilities/longlines hides /Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/Resources/lisp/obsolete/longlines Features: (shadow wl-mime mime-edit pgg-parse pccl pccl-20 signature mime-setup mail-mime-setup semi-setup mime-pgp pgg-def mime-play filename mime-image modb-standard elmo-imap4 time-stamp emacsbug message rfc822 mml mml-sec mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader org-wl org-w3m org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-exp ob-exp org-exp-blocks org-agenda org-info org-gnus org-docview org-bibtex bibtex org-bbdb disp-table whitespace yasnippet wl-demo wl-draft eword-encode wl-template sendmail mail-utils elmo-net elmo-cache elmo-map elmo-dop wl-news wl-address wl-thread wl-folder wl wl-e21 bbdb-autoloads bbdb el-get el-get-autoloads el-get-list-packages el-get-notify help-mode el-get-dependencies el-get-build el-get-status 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 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 lisp-mnt savehist itunes osx-osascript linum delsel server multiple-cursors mc-separate-operations rectangular-region-mode mc-mark-more thingatpt mc-cycle-cursors mc-edit-lines multiple-cursors-core rect flyspell ispell saveplace auto-save-buffers-enhanced auctex-autoloads tex-site info multiple-cursors-autoloads yasnippet-autoloads package desktop frameset init-tabbar init-frames tabbar frame-cmds frame-fns avoid calendar-lawlist lawlist-calendar init-org derived cl-macs gv edmacro kmacro org-toodledo mailcap-toodledo http-post-simple cl url-http tls url-auth mail-parse rfc2231 rfc2047 rfc2045 ietf-drums url-gw url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util url-parse auth-source eieio eieio-core gnus-util mm-util mail-prsvr password-cache url-vars mailcap json xml org ob-tangle ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys org-pcomplete pcomplete comint ansi-color ring org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob org-compat org-macs ob-eval org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs init-yas init-wl lawlist-tls wl-spam wl-action wl-summary byte-opt ps-print ps-def lpr wl-refile wl-util pp elmo-flag elmo-localdir bytecomp byte-compile cconv wl-message elmo-mime mmelmo-buffer mmelmo-imap mime-view mime-conf calist semi-def mmimap mime-parse mmbuffer mmgeneric wl-highlight wl-vars wl-version epg-config elmo-multi elmo-spam elsp-header elsp-generic elmo elmo-signal elmo-msgdb modb modb-generic modb-entity mime elmo-util emu invisible inv-23 poem poem-e20 poem-e20_3 utf7 eword-decode mel mime-def alist std11 mcharset mcs-20 mcs-e20 pces pces-e20 pces-20 broken pcustom elmo-date elmo-vars elmo-version path-util poe pym static apel-ver product luna mime-w3m w3m-load w3m browse-url doc-view jka-compr dired image-mode timezone w3m-hist w3m-fb bookmark-w3m w3m-ems wid-edit cl-loaddefs cl-lib w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util hideshow easymenu highlight-parentheses init-osxkeys easy-mmode redo advice help-fns 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 nadvice 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)