* [sup-talk] mailcap for os x
@ 2007-11-29 16:22 Grant Hollingworth
2007-12-27 18:50 ` William Morgan
0 siblings, 1 reply; 6+ messages in thread
From: Grant Hollingworth @ 2007-11-29 16:22 UTC (permalink / raw)
run-mailcap(1), which sup uses to view attachments, doesn't exist on OS X.
I used the mime-decode hook to monkey patch Attachment.view! to also use the mime-decode hook. A case statement works as a pretty good replacement for my simple .mailcap.
view_attachment[1] uses file(1) to figure out what an attachment's extension should be, before passing it to open(1). For quicklook I went another way, converting from the MIME type to the OS X UTI[2] using mime2uti, an ugly little program I made.
It's messy, but seems to work for my attachements.
[1] http://filibusta.crema.unimi.it/~gufo/files/view_attachment.sh
[2] http://en.wikipedia.org/wiki/Uniform_Type_Identifier
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mime-decode.rb
Type: application/octet-stream
Size: 957 bytes
Desc: not available
Url : http://rubyforge.org/pipermail/sup-talk/attachments/20071129/ab231270/attachment.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mime2uti.m
Type: application/octet-stream
Size: 763 bytes
Desc: not available
Url : http://rubyforge.org/pipermail/sup-talk/attachments/20071129/ab231270/attachment-0001.obj
^ permalink raw reply [flat|nested] 6+ messages in thread
* [sup-talk] mailcap for os x
2007-11-29 16:22 [sup-talk] mailcap for os x Grant Hollingworth
@ 2007-12-27 18:50 ` William Morgan
2008-01-15 16:34 ` Grant Hollingworth
0 siblings, 1 reply; 6+ messages in thread
From: William Morgan @ 2007-12-27 18:50 UTC (permalink / raw)
Excerpts from Grant Hollingworth's message of Thu Nov 29 08:22:10 -0800 2007:
> run-mailcap(1), which sup uses to view attachments, doesn't exist on
> OS X.
>
> I used the mime-decode hook to monkey patch Attachment.view! to also
> use the mime-decode hook. A case statement works as a pretty good
> replacement for my simple .mailcap.
Hi Grant,
I'd willingly accept a patch to hook into Attachment#view! and allow
overriding of the default run-mailcap behavior.
--
William <wmorgan-sup at masanjin.net>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [sup-talk] mailcap for os x
2007-12-27 18:50 ` William Morgan
@ 2008-01-15 16:34 ` Grant Hollingworth
2008-01-16 3:20 ` William Morgan
0 siblings, 1 reply; 6+ messages in thread
From: Grant Hollingworth @ 2008-01-15 16:34 UTC (permalink / raw)
Excerpts from William Morgan's message of Thu Dec 27 13:50:26 -0500 2007:
> I'd willingly accept a patch to hook into Attachment#view! and allow
> overriding of the default run-mailcap behavior.
Sure, but I don't know of the best way to do that. It wouldn't be like other
hooks, because it has to replace behaviour and not just supplement it.
Lots of systems don't have run-mailcap(1). Probably we should port it and push
it out as a gem that Sup depends on.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [sup-talk] mailcap for os x
2008-01-15 16:34 ` Grant Hollingworth
@ 2008-01-16 3:20 ` William Morgan
2008-01-16 3:39 ` William Morgan
2008-01-16 4:06 ` William Morgan
0 siblings, 2 replies; 6+ messages in thread
From: William Morgan @ 2008-01-16 3:20 UTC (permalink / raw)
Reformatted excerpts from Grant Hollingworth's message of 2008-01-15:
> Excerpts from William Morgan's message of Thu Dec 27 13:50:26 -0500 2007:
> > I'd willingly accept a patch to hook into Attachment#view! and allow
> > overriding of the default run-mailcap behavior.
>
> Sure, but I don't know of the best way to do that. It wouldn't be like
> other hooks, because it has to replace behaviour and not just
> supplement it.
That's not a problem. There are plenty of hooks that override default
behavior if they're present, but do nothing if not. The quoteline one
Marcus just submitted is a good example.
> Lots of systems don't have run-mailcap(1). Probably we should port it
> and push it out as a gem that Sup depends on.
If we want to make some kind of a mailcap-parsing gem, there's a Python
version that is probably more directly portable:
http://docs.python.org/lib/module-mailcap.html
Ruby doesn't seem to have any mailcap library, so this would be a good
contribution to the community, especially if it played nicely with
MIME::Types.
Of course, mailcap only gets you Unix systems. Or does OS X use
mailcaps? I imagine for Windows you would need some hideous registry
parsing thing that I'm not even close to writing...
--
William <wmorgan-sup at masanjin.net>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [sup-talk] mailcap for os x
2008-01-16 3:20 ` William Morgan
@ 2008-01-16 3:39 ` William Morgan
2008-01-16 4:06 ` William Morgan
1 sibling, 0 replies; 6+ messages in thread
From: William Morgan @ 2008-01-16 3:39 UTC (permalink / raw)
Reformatted excerpts from William Morgan's message of 2008-01-15:
> Or does OS X use mailcaps?
Hm, I think you answered this in your original email.
--
William <wmorgan-sup at masanjin.net>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [sup-talk] mailcap for os x
2008-01-16 3:20 ` William Morgan
2008-01-16 3:39 ` William Morgan
@ 2008-01-16 4:06 ` William Morgan
1 sibling, 0 replies; 6+ messages in thread
From: William Morgan @ 2008-01-16 4:06 UTC (permalink / raw)
Reformatted excerpts from William Morgan's message of 2008-01-15:
> That's not a problem. There are plenty of hooks that override default
> behavior if they're present, but do nothing if not. The quoteline one
> Marcus just submitted is a good example.
Something like this. Then you can move all the quick_look and
explicit_view stuff in your original email into a mime-view.rb hook.
diff --git a/lib/sup/message-chunks.rb b/lib/sup/message-chunks.rb
index 08dcf27..8e5def9 100644
--- a/lib/sup/message-chunks.rb
+++ b/lib/sup/message-chunks.rb
@@ -53,6 +53,16 @@ Variables:
Return value:
The decoded text of the attachment, or nil if not decoded.
EOS
+
+ HookManager.register "mime-view", <<EOS
+Executes when viewing a MIME attachment, i.e., launching a separate
+viewer program.
+Variables:
+ content_type: the content-type of the attachment
+ filename: the filename of the attachment as saved to disk
+Return value:
+ True if the viewing was successful, false otherwise.
+EOS
#' stupid ruby-mode
## raw_content is the post-MIME-decode content. this is used for
@@ -105,12 +115,18 @@ EOS
def expandable?; !viewable? end
def initial_state; :open end
def viewable?; @lines.nil? end
- def view!
- path = write_to_disk
+ def view_default! path
system "/usr/bin/run-mailcap --action=view #{@content_type}:#{path} > /dev/null 2> /dev/null"
$? == 0
end
+ def view!
+ path = write_to_disk
+ ret = HookManager.run "mime-view", :content_type => @content_type,
+ :filename => path
+ view_default! path unless ret
+ end
+
def write_to_disk
file = Tempfile.new(@filename || "sup-attachment")
file.print @raw_content
--
William <wmorgan-sup at masanjin.net>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-01-16 4:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-29 16:22 [sup-talk] mailcap for os x Grant Hollingworth
2007-12-27 18:50 ` William Morgan
2008-01-15 16:34 ` Grant Hollingworth
2008-01-16 3:20 ` William Morgan
2008-01-16 3:39 ` William Morgan
2008-01-16 4:06 ` William Morgan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox