* patch: handle PS/PDF in Gnus @ 2007-07-06 15:21 Sean O'Rourke 2007-07-06 15:27 ` Sean O'Rourke 0 siblings, 1 reply; 26+ messages in thread From: Sean O'Rourke @ 2007-07-06 15:21 UTC (permalink / raw) To: emacs-devel The following patch makes Gnus handle Postscript and PDF attachments on Mac OS X. Something similar should probably be done for a bunch of other attachment types, but these are the ones I have needed. /s, browsing the accumulated diff between his sources and CVS... Index: mailcap.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/gnus/mailcap.el,v retrieving revision 1.16 diff -u -r1.16 mailcap.el --- mailcap.el 21 Jan 2007 02:54:13 -0000 1.16 +++ mailcap.el 6 Jul 2007 15:20:50 -0000 @@ -137,6 +137,11 @@ (type . "application/zip") ("copiousoutput")) ("pdf" + (viewer . "open %s") + (type . "application/pdf") + (test . (eq window-system 'mac)) + ("print" . ,(concat "pdf2ps %s - | " mailcap-print-command))) + ("pdf" (viewer . "gv -safer %s") (type . "application/pdf") (test . window-system) @@ -157,6 +162,11 @@ ("print" . ,(concat "pdftops %s - | " mailcap-print-command)) ("copiousoutput")) ("postscript" + (viewer . "open %s") + (type . "application/postscript") + (test . (eq window-system 'mac)) + ("print" . ,(concat mailcap-print-command " %s"))) + ("postscript" (viewer . "gv -safer %s") (type . "application/postscript") (test . window-system) ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 15:21 patch: handle PS/PDF in Gnus Sean O'Rourke @ 2007-07-06 15:27 ` Sean O'Rourke 2007-07-06 15:34 ` David Kastrup 0 siblings, 1 reply; 26+ messages in thread From: Sean O'Rourke @ 2007-07-06 15:27 UTC (permalink / raw) To: emacs-devel 2007-07-06 Sean O'Rourke <sorourke@cs.ucsd.edu> (tiny change) * mailcap.el (mailcap-mime-data): handle Postscript and PDF on Mac OS X. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 15:27 ` Sean O'Rourke @ 2007-07-06 15:34 ` David Kastrup 2007-07-06 15:52 ` David Reitter 2007-07-06 15:53 ` Sean O'Rourke 0 siblings, 2 replies; 26+ messages in thread From: David Kastrup @ 2007-07-06 15:34 UTC (permalink / raw) To: Sean O'Rourke; +Cc: emacs-devel "Sean O'Rourke" <sorourke@cs.ucsd.edu> writes: > 2007-07-06 Sean O'Rourke <sorourke@cs.ucsd.edu> (tiny change) > > * mailcap.el (mailcap-mime-data): handle Postscript and PDF on Mac OS > X. Why wouldn't one want to leave the handling to what is written in /etc/mailcap? -- David Kastrup ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 15:34 ` David Kastrup @ 2007-07-06 15:52 ` David Reitter 2007-07-06 15:54 ` Sean O'Rourke 2007-07-06 18:13 ` Stefan Monnier 2007-07-06 15:53 ` Sean O'Rourke 1 sibling, 2 replies; 26+ messages in thread From: David Reitter @ 2007-07-06 15:52 UTC (permalink / raw) To: emacs- devel On 6 Jul 2007, at 16:34, David Kastrup wrote: >> * mailcap.el (mailcap-mime-data): handle Postscript and PDF on >> Mac OS >> X. > > Why wouldn't one want to leave the handling to what is written in > /etc/mailcap? /etc/mailcap doesn't exist on OS X. Mapping from file types to handler application is done via the LaunchServices database, which is most easily accessed via the "open" tool: (viewer . "open %s") + (type . "application/pdf") As for the patch, calling pdf2ps and pdftops is not a good idea since this stuff isn't installed unless the user explicitly installs them (e.g. Ghostscript, which is mostly useless on the Mac). What works, however, is to just use "open" with the PS files and let LaunchServices deal with it. Current systems come with a preview.app (which is what is normally launched for PDFs) that will automatically convert PS to PDF and display that. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 15:52 ` David Reitter @ 2007-07-06 15:54 ` Sean O'Rourke 2007-07-06 16:31 ` David Reitter 2007-07-06 18:13 ` Stefan Monnier 1 sibling, 1 reply; 26+ messages in thread From: Sean O'Rourke @ 2007-07-06 15:54 UTC (permalink / raw) To: David Reitter; +Cc: emacs- devel David Reitter <david.reitter@gmail.com> writes: > As for the patch, calling pdf2ps and pdftops is not a good idea since > this stuff isn't installed unless the user explicitly installs them > (e.g. Ghostscript, which is mostly useless on the Mac). This is for printing. Do you know of a better way to print something without first displaying it? (Maybe applescript?) /s ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 15:54 ` Sean O'Rourke @ 2007-07-06 16:31 ` David Reitter 2007-07-08 3:15 ` YAMAMOTO Mitsuharu 0 siblings, 1 reply; 26+ messages in thread From: David Reitter @ 2007-07-06 16:31 UTC (permalink / raw) To: emacs- devel On 6 Jul 2007, at 16:54, Sean O'Rourke wrote: > David Reitter <david.reitter@gmail.com> writes: >> As for the patch, calling pdf2ps and pdftops is not a good idea since >> this stuff isn't installed unless the user explicitly installs them >> (e.g. Ghostscript, which is mostly useless on the Mac). > > This is for printing. Do you know of a better way to print > something without first displaying it? (Maybe applescript?) The Carbon framework has APIs for printing. You would have to output things on that end (i.e., implemented in C) and then you can call the standard print dialogs that will handle everything from outputting to PDF, choosing a printer and using the right driver, choosing a layout for the pages, etc. That would be the correct way, and everything else is more or less a hack. It probably not worth implementing in Carbon, given that the Cocoa port is in the works. That said, "lpr" should work for PS, PDF, plain text or standard image files even if the default printer is not PostScript capable (from OS X 10.4). So that's what I would try. You can also print via AppleScript using the Preview application (it can bring up the print dialog directly), and that would work for PostScript files as well. But that's relatively hack-y... - David ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 16:31 ` David Reitter @ 2007-07-08 3:15 ` YAMAMOTO Mitsuharu 2007-07-08 3:22 ` Eli Zaretskii 0 siblings, 1 reply; 26+ messages in thread From: YAMAMOTO Mitsuharu @ 2007-07-08 3:15 UTC (permalink / raw) To: David Reitter; +Cc: emacs-devel >>>>> On Fri, 6 Jul 2007 17:31:32 +0100, David Reitter <david.reitter@gmail.com> said: > The Carbon framework has APIs for printing. You would have to output > things on that end (i.e., implemented in C) and then you can call > the standard print dialogs that will handle everything from > outputting to PDF, choosing a printer and using the right driver, > choosing a layout for the pages, etc. That would be the correct > way, and everything else is more or less a hack. It probably not > worth implementing in Carbon, given that the Cocoa port is in the > works. As for the standard print dialogs in Carbon, I've tried an experimental implementation before (for Mac OS X 10.3 and later). The function looks like: DEFUN ("mac-file-print-dialog", Fmac_file_print_dialog, Smac_file_print_dialog, 1, 3, 0, doc: /* Print file named FILENAME using the standard print dialog. The optional second argument NPAGES specifies the total number of pages; it will appear as the default in the To field of the dialog. The optional third argument MIME-TYPE specifies the mime type of the file. It must be either a string, nil (auto-typed) or t (synonym of \"application/postscript\"). */) (filename, npages, mime_type) Lisp_Object filename, npages, mime_type; and can be used as: (defun mac-ps-print-region (start end program &optional delete buffer display &rest args) (let (pages file) (save-excursion (goto-char start) (if (and (re-search-forward "^%%Trailer" nil end) (re-search-forward "^%%Pages:\\s-*\\([0-9]+\\)" nil end)) (setq pages (string-to-number (match-string 1))))) (setq file (make-temp-file "mac-ps-print")) (write-region start end file nil 'nomessage) (unwind-protect (mac-file-print-dialog file pages t) (delete-file file)))) (setq ps-print-region-function 'mac-ps-print-region) Of course, we need to discuss the specification of the function so that it can be common to the platforms that support print dialogs (in particular, recent Gtk+) in order to include such a feature in Emacs. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 3:15 ` YAMAMOTO Mitsuharu @ 2007-07-08 3:22 ` Eli Zaretskii 2007-07-08 13:41 ` YAMAMOTO Mitsuharu 2007-07-08 14:31 ` Stefan Monnier 0 siblings, 2 replies; 26+ messages in thread From: Eli Zaretskii @ 2007-07-08 3:22 UTC (permalink / raw) To: YAMAMOTO Mitsuharu; +Cc: david.reitter, emacs-devel > Date: Sun, 08 Jul 2007 12:15:09 +0900 > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > Cc: emacs-devel@gnu.org > > As for the standard print dialogs in Carbon, I've tried an > experimental implementation before (for Mac OS X 10.3 and later). The > function looks like: > > DEFUN ("mac-file-print-dialog", Fmac_file_print_dialog, Smac_file_print_dialog, 1, 3, 0, > doc: /* Print file named FILENAME using the standard print dialog. > The optional second argument NPAGES specifies the total number of > pages; it will appear as the default in the To field of the dialog. > The optional third argument MIME-TYPE specifies the mime type of the > file. It must be either a string, nil (auto-typed) or t (synonym of > \"application/postscript\"). */) > (filename, npages, mime_type) > Lisp_Object filename, npages, mime_type; > > and can be used as: > > (defun mac-ps-print-region (start end program > &optional delete buffer display > &rest args) > (let (pages file) > (save-excursion > (goto-char start) > (if (and (re-search-forward "^%%Trailer" nil end) > (re-search-forward "^%%Pages:\\s-*\\([0-9]+\\)" nil end)) > (setq pages (string-to-number (match-string 1))))) > (setq file (make-temp-file "mac-ps-print")) > (write-region start end file nil 'nomessage) > (unwind-protect > (mac-file-print-dialog file pages t) > (delete-file file)))) > > (setq ps-print-region-function 'mac-ps-print-region) > > Of course, we need to discuss the specification of the function so > that it can be common to the platforms that support print dialogs (in > particular, recent Gtk+) in order to include such a feature in Emacs. I think we need to discuss a platform-independent interface to a printer dialog, before we implement platform-dependent implementations. Carbon and Gtk+ are not the only platforms that have such dialogs built into the OS APIs. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 3:22 ` Eli Zaretskii @ 2007-07-08 13:41 ` YAMAMOTO Mitsuharu 2007-07-08 14:31 ` Stefan Monnier 1 sibling, 0 replies; 26+ messages in thread From: YAMAMOTO Mitsuharu @ 2007-07-08 13:41 UTC (permalink / raw) To: eliz; +Cc: david.reitter, emacs-devel >>>>> On Sun, 08 Jul 2007 06:22:27 +0300, Eli Zaretskii <eliz@gnu.org> said: >> Date: Sun, 08 Jul 2007 12:15:09 +0900 From: YAMAMOTO Mitsuharu >> Of course, we need to discuss the specification of the function so >> that it can be common to the platforms that support print dialogs >> (in particular, recent Gtk+) in order to include such a feature in >> Emacs. > I think we need to discuss a platform-independent interface to a > printer dialog, before we implement platform-dependent > implementations. Carbon and Gtk+ are not the only platforms that > have such dialogs built into the OS APIs. I think we are saying the same thing. I just implemented an experimental one to see what is possible on Carbon, but I don't think it can be added as it is. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 3:22 ` Eli Zaretskii 2007-07-08 13:41 ` YAMAMOTO Mitsuharu @ 2007-07-08 14:31 ` Stefan Monnier 2007-07-09 10:52 ` Jan Djärv 2007-07-11 21:51 ` Jason Rumney 1 sibling, 2 replies; 26+ messages in thread From: Stefan Monnier @ 2007-07-08 14:31 UTC (permalink / raw) To: Eli Zaretskii; +Cc: david.reitter, YAMAMOTO Mitsuharu, emacs-devel > I think we need to discuss a platform-independent interface to a > printer dialog, before we implement platform-dependent > implementations. Carbon and Gtk+ are not the only platforms that have > such dialogs built into the OS APIs. Maybe the best solution for that goes as follows: 1 - each platform implementer writes a C DEFUN that provides the most obvious and direct interface to the underlying API. 2 - we then compare the various resulting interfaces and come up with a Lisp library written on top of it which unifies them into a platform-independent interface. 3 - most likely along the way, the unification effort showed that some of the platform-specific implementations can be improved or need to be changed. The idea here is that number 1 can be done by each implementer without knowing anything else, whereas number 2 can be done by people like myself who lack the platform-specific knowledge. Stefan ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 14:31 ` Stefan Monnier @ 2007-07-09 10:52 ` Jan Djärv 2007-07-09 12:39 ` David Kastrup 2007-07-09 18:03 ` YAMAMOTO Mitsuharu 2007-07-11 21:51 ` Jason Rumney 1 sibling, 2 replies; 26+ messages in thread From: Jan Djärv @ 2007-07-09 10:52 UTC (permalink / raw) To: Stefan Monnier Cc: david.reitter, Eli Zaretskii, YAMAMOTO Mitsuharu, emacs-devel Stefan Monnier skrev: >> I think we need to discuss a platform-independent interface to a >> printer dialog, before we implement platform-dependent >> implementations. Carbon and Gtk+ are not the only platforms that have >> such dialogs built into the OS APIs. > > Maybe the best solution for that goes as follows: > 1 - each platform implementer writes a C DEFUN that provides the most > obvious and direct interface to the underlying API. > 2 - we then compare the various resulting interfaces and come up with a Lisp > library written on top of it which unifies them into > a platform-independent interface. > 3 - most likely along the way, the unification effort showed that some of > the platform-specific implementations can be improved or need to be > changed. > > The idea here is that number 1 can be done by each implementer without > knowing anything else, whereas number 2 can be done by people like myself > who lack the platform-specific knowledge. > For Gtk+ we can use the GtkPrintDialog, but it requires Gtk+ 2.10 or newer. It is a bit involved as it needs Emacs to render the data to be printed with cairo. Jan D. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-09 10:52 ` Jan Djärv @ 2007-07-09 12:39 ` David Kastrup 2007-07-09 14:17 ` Jan Djärv 2007-07-09 18:03 ` YAMAMOTO Mitsuharu 1 sibling, 1 reply; 26+ messages in thread From: David Kastrup @ 2007-07-09 12:39 UTC (permalink / raw) To: Jan Djärv; +Cc: emacs-devel Jan Djärv <jan.h.d@swipnet.se> writes: > For Gtk+ we can use the GtkPrintDialog, but it requires Gtk+ 2.10 or > newer. It is a bit involved as it needs Emacs to render the data to > be printed with cairo. Is cairo a possible road into bidirectional rendering, or does it not actually involve the screen? -- David Kastrup ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-09 12:39 ` David Kastrup @ 2007-07-09 14:17 ` Jan Djärv 0 siblings, 0 replies; 26+ messages in thread From: Jan Djärv @ 2007-07-09 14:17 UTC (permalink / raw) To: David Kastrup; +Cc: emacs-devel David Kastrup skrev: > Jan Djärv <jan.h.d@swipnet.se> writes: > > >> For Gtk+ we can use the GtkPrintDialog, but it requires Gtk+ 2.10 or >> newer. It is a bit involved as it needs Emacs to render the data to >> be printed with cairo. > > Is cairo a possible road into bidirectional rendering, or does it not > actually involve the screen? > I don't really know, but I think it is possible. Cairo draws to different backends, called surfaces. X11 is one surface, others are PNG, PDF, PostScript, W32, Quartz, OpenGL, SVG. So depending on the surface you draw to, it may involve a screen. The printing dialog returns a suitable surface for the selected printer, and the application is supposed to render into that surface. Jan D. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-09 10:52 ` Jan Djärv 2007-07-09 12:39 ` David Kastrup @ 2007-07-09 18:03 ` YAMAMOTO Mitsuharu 2007-07-09 19:57 ` Jan Djärv 1 sibling, 1 reply; 26+ messages in thread From: YAMAMOTO Mitsuharu @ 2007-07-09 18:03 UTC (permalink / raw) To: jan.h.d; +Cc: david.reitter, eliz, monnier, emacs-devel >>>>> On Mon, 09 Jul 2007 12:52:22 +0200, Jan Djärv <jan.h.d@swipnet.se> said: > For Gtk+ we can use the GtkPrintDialog, but it requires Gtk+ 2.10 or > newer. It is a bit involved as it needs Emacs to render the data to > be printed with cairo. Though I'm not familiar with the actual implementation and just scratched the surface of the API list, I was thinking about more low-level stuff. That is, let the user choose a printer using GtkPrintUnixDialog, and create and send a file-printing job using GtkPrintJob that has gtk_print_job_set_source_file. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-09 18:03 ` YAMAMOTO Mitsuharu @ 2007-07-09 19:57 ` Jan Djärv 0 siblings, 0 replies; 26+ messages in thread From: Jan Djärv @ 2007-07-09 19:57 UTC (permalink / raw) To: YAMAMOTO Mitsuharu; +Cc: david.reitter, eliz, monnier, emacs-devel YAMAMOTO Mitsuharu skrev: >>>>>> On Mon, 09 Jul 2007 12:52:22 +0200, Jan Djärv <jan.h.d@swipnet.se> said: > >> For Gtk+ we can use the GtkPrintDialog, but it requires Gtk+ 2.10 or >> newer. It is a bit involved as it needs Emacs to render the data to >> be printed with cairo. > > Though I'm not familiar with the actual implementation and just > scratched the surface of the API list, I was thinking about more > low-level stuff. That is, let the user choose a printer using > GtkPrintUnixDialog, and create and send a file-printing job using > GtkPrintJob that has gtk_print_job_set_source_file. > I guess it could work, I haven't used the API myself. Jan D. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 14:31 ` Stefan Monnier 2007-07-09 10:52 ` Jan Djärv @ 2007-07-11 21:51 ` Jason Rumney 2007-07-12 9:35 ` Jan Djärv 1 sibling, 1 reply; 26+ messages in thread From: Jason Rumney @ 2007-07-11 21:51 UTC (permalink / raw) To: Stefan Monnier Cc: david.reitter, Eli Zaretskii, YAMAMOTO Mitsuharu, emacs-devel Stefan Monnier wrote: > Maybe the best solution for that goes as follows: > 1 - each platform implementer writes a C DEFUN that provides the most > obvious and direct interface to the underlying API. > 2 - we then compare the various resulting interfaces and come up with a Lisp > library written on top of it which unifies them into > a platform-independent interface. > 3 - most likely along the way, the unification effort showed that some of > the platform-specific implementations can be improved or need to be > changed. On Windows, there are two dialogs involved in printing. The "Page Setup" dialog for choosing papertype, margins, features like 2-up etc, and the Print Dialog, where you can choose the printer, print quality, and other features. Due to the number of things you can set in both these dialogs, I think the interface could be a function that takes a list of properties to use for initialising the dialog, and returns a list of properties reflecting the user's choices. If some options are not supported on some platforms, they can just be ignored, or defaults returned. Page Setup Dialog :units [hundredths-of-mm|thousandths-of-inch] :paper-dimensions (x y) :min-margins [(left top right bottom)|default] :margins [(left top right bottom)|disable] :device (driver-name printer-name port-name) :enable-network [nil|t] :device-mode (:printer-friendly-name :orientation [portrait|landscape|disable] :paper-size [letter|legal|a4....|disable] :paper-length :paper-width :scale-percent :copies :paper-source [auto|cassette|envelope|first|upper|lower...] :print-quality [high|medium|low|draft] :color [t|nil] :duplex [t|nil] :y-dpi :font [bitmap|download|download-outline|substitute] :collate [t|nil] :form-name :n-up [spooler|application] :icm-method [none|system|driver|device] :icm-intent [abs-color-imetric|color-imetric|contrast|saturate] :media [plain|glossy|transparency|driver defined integer] :dither [none|coarse|fine|line-art|error-diffusion|grayscale] Print Dialog :device (driver-name printer-name port-name) :device-mode (see above) :enable-pages [nil|t] :enable-selection [nil|t] :pages (from to)|all|selection :enable-print-to-file [nil|t] :to-file [nil|t] :enable-network [nil|t] :copies :collate [nil|t] ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-11 21:51 ` Jason Rumney @ 2007-07-12 9:35 ` Jan Djärv 0 siblings, 0 replies; 26+ messages in thread From: Jan Djärv @ 2007-07-12 9:35 UTC (permalink / raw) To: Jason Rumney Cc: david.reitter, Eli Zaretskii, Stefan Monnier, YAMAMOTO Mitsuharu, emacs-devel Jason Rumney skrev: > > On Windows, there are two dialogs involved in printing. The "Page Setup" > dialog for choosing papertype, margins, features like 2-up etc, and the > Print Dialog, where you can choose the printer, print quality, and other > features. > Gtk+ has this also. > Due to the number of things you can set in both these dialogs, I think > the interface could be a function that takes a list of properties to use > for initialising the dialog, and returns a list of properties reflecting > the user's choices. If some options are not supported on some platforms, > they can just be ignored, or defaults returned. Since the setup and print dialog are platform specific, why not just keep the settings in data structures in the C code? That would simplify things. On the other hand, it would probably be harder to save/restore between Emacs sessions, if that is what we want. Jan D. > > Page Setup Dialog > :units [hundredths-of-mm|thousandths-of-inch] > :paper-dimensions (x y) > :min-margins [(left top right bottom)|default] > :margins [(left top right bottom)|disable] > :device (driver-name printer-name port-name) > :enable-network [nil|t] > :device-mode (:printer-friendly-name > :orientation [portrait|landscape|disable] > :paper-size [letter|legal|a4....|disable] > :paper-length > :paper-width > :scale-percent > :copies > :paper-source [auto|cassette|envelope|first|upper|lower...] > :print-quality [high|medium|low|draft] > :color [t|nil] > :duplex [t|nil] > :y-dpi > :font [bitmap|download|download-outline|substitute] > :collate [t|nil] > :form-name > :n-up [spooler|application] > :icm-method [none|system|driver|device] > :icm-intent > [abs-color-imetric|color-imetric|contrast|saturate] > :media [plain|glossy|transparency|driver defined integer] > :dither > [none|coarse|fine|line-art|error-diffusion|grayscale] > > Print Dialog > :device (driver-name printer-name port-name) > :device-mode (see above) > :enable-pages [nil|t] > :enable-selection [nil|t] > :pages (from to)|all|selection > :enable-print-to-file [nil|t] > :to-file [nil|t] > :enable-network [nil|t] > :copies > :collate [nil|t] > > > > _______________________________________________ > Emacs-devel mailing list > Emacs-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 15:52 ` David Reitter 2007-07-06 15:54 ` Sean O'Rourke @ 2007-07-06 18:13 ` Stefan Monnier 2007-07-06 19:32 ` Sean O'Rourke 2007-07-06 20:44 ` Jason Rumney 1 sibling, 2 replies; 26+ messages in thread From: Stefan Monnier @ 2007-07-06 18:13 UTC (permalink / raw) To: David Reitter; +Cc: emacs- devel >> Why wouldn't one want to leave the handling to what is written in >> /etc/mailcap? > /etc/mailcap doesn't exist on OS X. Mapping from file types to handler > application is done via the LaunchServices database, which is most easily > accessed via the "open" tool: Indeed, and instead of adding umpteen entries that pass the file to `open' we should change the code to default to `open' under Mac OS X. Stefan ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 18:13 ` Stefan Monnier @ 2007-07-06 19:32 ` Sean O'Rourke 2007-07-08 5:13 ` Sean O'Rourke 2007-07-06 20:44 ` Jason Rumney 1 sibling, 1 reply; 26+ messages in thread From: Sean O'Rourke @ 2007-07-06 19:32 UTC (permalink / raw) To: Stefan Monnier; +Cc: David Reitter, emacs- devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > Indeed, and instead of adding umpteen entries that pass the > file to `open' we should change the code to default to `open' > under Mac OS X. Agreed. Unless someone else gets to it first, I'll go ahead and do this. /s ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 19:32 ` Sean O'Rourke @ 2007-07-08 5:13 ` Sean O'Rourke 2007-07-08 10:19 ` Jason Rumney 0 siblings, 1 reply; 26+ messages in thread From: Sean O'Rourke @ 2007-07-08 5:13 UTC (permalink / raw) To: Stefan Monnier; +Cc: David Reitter, emacs- devel [-- Attachment #1: Type: text/plain, Size: 866 bytes --] "Sean O'Rourke" <sorourke@cs.ucsd.edu> writes: > Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Indeed, and instead of adding umpteen entries that pass the >> file to `open' we should change the code to default to `open' >> under Mac OS X. > > Agreed. Unless someone else gets to it first, I'll go ahead and > do this. Here's a patch that does what I think is "the right thing" w.r.t. opening MIME types on the Mac. It veers towards the "umpteen" side of things because there are some types that should be opened within Emacs, and some entries for other platforms that interfere with types that should be handled by "open." The patch also fixes the undocumented "default" feature, that didn't appear to work before. /s ps -- this uses "lpr" (== CUPS) for printing, independent of the ongoing discussion. pps -- I need to return copyright papers. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 4355 bytes --] Index: mailcap.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/gnus/mailcap.el,v retrieving revision 1.16 diff -u -r1.16 mailcap.el --- mailcap.el 21 Jan 2007 02:54:13 -0000 1.16 +++ mailcap.el 8 Jul 2007 04:58:29 -0000 @@ -74,10 +74,6 @@ ;; files for the rest? -- fx (defvar mailcap-mime-data `(("application" - ("vnd.ms-excel" - (viewer . "gnumeric %s") - (test . (getenv "DISPLAY")) - (type . "application/vnd.ms-excel")) ("x-x509-ca-cert" (viewer . ssl-view-site-cert) (test . (fboundp 'ssl-view-site-cert)) @@ -86,21 +82,6 @@ (viewer . ssl-view-user-cert) (test . (fboundp 'ssl-view-user-cert)) (type . "application/x-x509-user-cert")) - ("octet-stream" - (viewer . mailcap-save-binary-file) - (non-viewer . t) - (type . "application/octet-stream")) - ("dvi" - (viewer . "xdvi -safer %s") - (test . (eq window-system 'x)) - ("needsx11") - (type . "application/dvi") - ("print" . "dvips -qRP %s")) - ("dvi" - (viewer . "dvitty %s") - (test . (not (getenv "DISPLAY"))) - (type . "application/dvi") - ("print" . "dvips -qRP %s")) ("emacs-lisp" (viewer . mailcap-maybe-eval) (type . "application/emacs-lisp")) @@ -131,11 +112,39 @@ (viewer . texinfo-mode) (test . (fboundp 'texinfo-mode)) (type . "application/tex")) + ("sieve" + (viewer . sieve-mode) + (test . (fboundp 'sieve-mode)) + (type . "application/sieve")) ("zip" (viewer . mailcap-save-binary-file) (non-viewer . t) (type . "application/zip") ("copiousoutput")) + ("octet-stream" + (viewer . mailcap-save-binary-file) + (non-viewer . t) + (type . "application/octet-stream")) + (".*" + (viewer . "open %s") + (type . "application/*") + (test . (eq window-system 'mac)) + ("print" . "lpr %s")) + ("vnd.ms-excel" + (viewer . "gnumeric %s") + (test . (getenv "DISPLAY")) + (type . "application/vnd.ms-excel")) + ("dvi" + (viewer . "xdvi -safer %s") + (test . (eq window-system 'x)) + ("needsx11") + (type . "application/dvi") + ("print" . "dvips -qRP %s")) + ("dvi" + (viewer . "dvitty %s") + (test . (not (getenv "DISPLAY"))) + (type . "application/dvi") + ("print" . "dvips -qRP %s")) ("pdf" (viewer . "gv -safer %s") (type . "application/pdf") @@ -174,15 +183,16 @@ (test . (not (getenv "DISPLAY"))) ("print" . ,(concat mailcap-print-command " %s")) ("copiousoutput")) - ("sieve" - (viewer . sieve-mode) - (test . (fboundp 'sieve-mode)) - (type . "application/sieve")) ("pgp-keys" (viewer . "gpg --import --interactive --verbose") (type . "application/pgp-keys") ("needsterminal"))) ("audio" + (".*" + (viewer . "open %s") + (type . "audio/*") + (test . (eq window-system 'mac)) + ("print" . "lpr %s")) ("x-mpeg" (viewer . "maplay %s") (type . "audio/x-mpeg")) @@ -207,6 +217,11 @@ (viewer . view-mode) (type . "message/rfc822"))) ("image" + (".*" + (viewer . "open %s") + (type . "image/*") + (test . (eq window-system 'mac)) + ("print" . "lpr %s")) ("x-xwd" (viewer . "xwud -in %s") (type . "image/x-xwd") @@ -271,7 +286,12 @@ ("tar" (viewer . tar-mode) (type . "archive/tar") - (test . (fboundp 'tar-mode))))) + (test . (fboundp 'tar-mode)))) + ("default" + (".*" + (viewer . "open %s") + (test . (eq window-system 'mac)) + ("print" . "lpr %s")))) "The mailcap structure is an assoc list of assoc lists. 1st assoc list is keyed on the major content-type 2nd assoc list is keyed on the minor content-type (which can be a regexp) @@ -762,7 +782,7 @@ (setq viewer (car passed))) (cond ((and (null viewer) (not (equal major "default")) request) - (mailcap-mime-info "default" request)) + (mailcap-mime-info "default/*" request)) ((or (null request) (equal request "")) (mailcap-unescape-mime-test (cdr (assq 'viewer viewer)) info)) ((stringp request) [-- Attachment #3: Type: text/plain, Size: 142 bytes --] _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 5:13 ` Sean O'Rourke @ 2007-07-08 10:19 ` Jason Rumney 2007-07-08 13:03 ` Sean O'Rourke 0 siblings, 1 reply; 26+ messages in thread From: Jason Rumney @ 2007-07-08 10:19 UTC (permalink / raw) To: Sean O'Rourke; +Cc: David Reitter, Stefan Monnier, emacs- devel [-- Attachment #1: Type: text/plain, Size: 169 bytes --] Sean O'Rourke wrote: > Here's a patch that does what I think is "the right thing" > w.r.t. opening MIME types on the Mac. What does it do for the following attachment? [-- Attachment #2: test.pdf --] [-- Type: application/pdf, Size: 3444 bytes --] [-- Attachment #3: Type: text/plain, Size: 142 bytes --] _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 10:19 ` Jason Rumney @ 2007-07-08 13:03 ` Sean O'Rourke 2007-07-08 13:14 ` Sean O'Rourke 0 siblings, 1 reply; 26+ messages in thread From: Sean O'Rourke @ 2007-07-08 13:03 UTC (permalink / raw) To: Jason Rumney; +Cc: David Reitter, Stefan Monnier, emacs- devel Jason Rumney <jasonr@gnu.org> writes: > Sean O'Rourke wrote: >> Here's a patch that does what I think is "the right thing" >> w.r.t. opening MIME types on the Mac. > What does it do for the following attachment? "File error: couldn't open the file." (I assume you tried to hack/crash my machine?) /s ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-08 13:03 ` Sean O'Rourke @ 2007-07-08 13:14 ` Sean O'Rourke 0 siblings, 0 replies; 26+ messages in thread From: Sean O'Rourke @ 2007-07-08 13:14 UTC (permalink / raw) To: Jason Rumney; +Cc: David Reitter, Stefan Monnier, emacs- devel "Sean O'Rourke" <sorourke@cs.ucsd.edu> writes: > Jason Rumney <jasonr@gnu.org> writes: > >> Sean O'Rourke wrote: >>> Here's a patch that does what I think is "the right thing" >>> w.r.t. opening MIME types on the Mac. >> What does it do for the following attachment? > > "File error: couldn't open the file." (I assume you tried to > hack/crash my machine?) This error is produced by the standard PDF-viewing program, Preview.app. Saving it, renaming it to test.jpg, and opening it then shows an image with the word "vulnerable" and nasty edge effects. /s ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 18:13 ` Stefan Monnier 2007-07-06 19:32 ` Sean O'Rourke @ 2007-07-06 20:44 ` Jason Rumney 2007-07-08 4:52 ` Sean O'Rourke 1 sibling, 1 reply; 26+ messages in thread From: Jason Rumney @ 2007-07-06 20:44 UTC (permalink / raw) To: Stefan Monnier; +Cc: David Reitter, emacs- devel Stefan Monnier wrote: > Indeed, and instead of adding umpteen entries that pass the file to `open' we > should change the code to default to `open' under Mac OS X. > Opening unknown files from an untrusted source is not a good default. Does the "open" method on a Mac make its own decisions about what type of file it is being given based on file content? If so, using it even for known file types is too much of a risk. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 20:44 ` Jason Rumney @ 2007-07-08 4:52 ` Sean O'Rourke 0 siblings, 0 replies; 26+ messages in thread From: Sean O'Rourke @ 2007-07-08 4:52 UTC (permalink / raw) To: Jason Rumney; +Cc: David Reitter, Stefan Monnier, emacs- devel Jason Rumney <jasonr@gnu.org> writes: > Opening unknown files from an untrusted source is not a good > default. Does the "open" method on a Mac make its own > decisions about what type of file it is being given based on > file content? AFAIK, it does the same thing as a double-click. Since we're talking about what Emacs does in response to an explicit user action here (e.g. pressing RET), I don't see this as a problem. I believe "opening untrusted files..." with the least-painful explicit confirmation is the best that can be done. /s ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: patch: handle PS/PDF in Gnus 2007-07-06 15:34 ` David Kastrup 2007-07-06 15:52 ` David Reitter @ 2007-07-06 15:53 ` Sean O'Rourke 1 sibling, 0 replies; 26+ messages in thread From: Sean O'Rourke @ 2007-07-06 15:53 UTC (permalink / raw) To: David Kastrup; +Cc: emacs-devel David Kastrup <dak@gnu.org> writes: > "Sean O'Rourke" <sorourke@cs.ucsd.edu> writes: > >> 2007-07-06 Sean O'Rourke <sorourke@cs.ucsd.edu> (tiny change) >> >> * mailcap.el (mailcap-mime-data): handle Postscript and PDF on Mac OS >> X. > > Why wouldn't one want to leave the handling to what is written in > /etc/mailcap? I have no idea. I made this change because I wanted attachments to work, and this is how mailcap.el already handles them under X. So if /etc/mailcap is the right solution on Unix-like systems, mailcap-mime-data probably needs to go away. /s ^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2007-07-12 9:35 UTC | newest] Thread overview: 26+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-07-06 15:21 patch: handle PS/PDF in Gnus Sean O'Rourke 2007-07-06 15:27 ` Sean O'Rourke 2007-07-06 15:34 ` David Kastrup 2007-07-06 15:52 ` David Reitter 2007-07-06 15:54 ` Sean O'Rourke 2007-07-06 16:31 ` David Reitter 2007-07-08 3:15 ` YAMAMOTO Mitsuharu 2007-07-08 3:22 ` Eli Zaretskii 2007-07-08 13:41 ` YAMAMOTO Mitsuharu 2007-07-08 14:31 ` Stefan Monnier 2007-07-09 10:52 ` Jan Djärv 2007-07-09 12:39 ` David Kastrup 2007-07-09 14:17 ` Jan Djärv 2007-07-09 18:03 ` YAMAMOTO Mitsuharu 2007-07-09 19:57 ` Jan Djärv 2007-07-11 21:51 ` Jason Rumney 2007-07-12 9:35 ` Jan Djärv 2007-07-06 18:13 ` Stefan Monnier 2007-07-06 19:32 ` Sean O'Rourke 2007-07-08 5:13 ` Sean O'Rourke 2007-07-08 10:19 ` Jason Rumney 2007-07-08 13:03 ` Sean O'Rourke 2007-07-08 13:14 ` Sean O'Rourke 2007-07-06 20:44 ` Jason Rumney 2007-07-08 4:52 ` Sean O'Rourke 2007-07-06 15:53 ` Sean O'Rourke
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.