ICeCoffEE 1.4.2
16 mai 2005

Ouvre les URL et les adresses mel dans les applications Cocoa d'un simple ⌘-clic. Accédez au menu Services depuis le menu contextuel ou la barre de menu.

Écrit par Nicholas Riley <mailto:icecoffee@sabi.net>.
Mises à jour sur <http://web.sabi.net/nriley/software/>.

Mais qu'est-ce ?

Peut être étiez-vous un utilisateur de ICeTEe sur Mac OS 9.

Ou peut être, êtes-vous un nouvel utilisateur de Mac OS X à la recherche d'un moyen rapide d'ouvrir les URLs et adresses mel dans les documents textes, Aide-mémoire, et autres code source.

Dans tous les cas, ICeCoffEE est fait pour vous !

Installation

Suivez les instructions de l'installeur. Si une version précédente de ICeCoffEE est déjà installée, elle sera mise à la Corbeille.

Suppression

Pour désactiver temporairement ICeCoffEE, utilisez APE Manager (voir la section “Configuration” plus bas). Pour supprimer ICeCoffEE définitivement, utilisez le bouton “Uninstall” de l'installeur, ou bien glissez “ICeCoffEE.ape” à la Corbeille.

Utilisation

Pour tester ICeCoffEE :

	1.	Si TextEdit était ouvert quand vous avez installé ICeCoffEE, quittez TextEdit. ICeCoffEE n'est disponible que pour les applications que vous lancez après l'installation. Pour vous assurer que ICeCoffEE est actif, quittez la session et relancez-la.
	2.	Ouvrez TextEdit (normalement dans le dossier Applications).
	3.	Tapez une adresse Internet (URL), par exemple http://www.google.fr/.
	4.	Maintenez la touche Command (⌘) et cliquez n'importe où dans l'adresse. Votre butineur favori se lancera et affichera le site de Google, à condition que votre connexion Internet soit active.

Pour utiliser ICeCoffEE :

⌘-cliquer une URL ou une adresse mel dans le texte d'une application Cocoa. Parmi les applications Cocoa livrées avec Mac OS X vous trouvez, TextEdit, Mail, iChat et les utilitaires réseau. De plus, ⌘-cliquer fonctionne dans Terminal et les fenêtres SimpleText, et sur le texte d'une fenêtre du butineur Safari en sélectionnant d'abord l'URL ou l'adresse mel (pour le moment, le support de Safari est désactivé en attendant la correction de bogues de Safari).

⌥⌘-clic pour choisir dans un menu l'application permettant d'ouvrir l'adresse, similaire au sous menu "Ouvrir avec" du Finder.

À l'instar de ICeTEe 2, ICeCoffEE 1.3 peut fonctionner avec un gestionnaire de favoris comme URL Manager Pro de Alco Blom. ICeCoffEE utilise l'application définie pour gérer le protocole "signets". Pour de plus amples informations consultez (en anglais) :

	<http://web.sabinet/nriley/software/icecoffee-bookmark/>

Controle (⌃)-clic (ou clic droit si vous avez une souris à deux boutons) sur du texte d'une application Cocoa, ét observez le sous menu “Services” en bas. Il fonctionne de la même manière que le sous menu du menu de l'application.

ICeCoffEE ajoute aussi les Services aux menus contextuels des fenêtres du Terminal, des fenêtres de source de Project Builder, et dans les pages Internet vues dans Safari.

Configuration

Pour modifier les paramètres de ICeCoffEE, ouvrez les Preférénces Systeme (dans le menu ). Cliquez sur “APE Manager”, puis sélectionnez ICeCoffEE dans la liste des "Application Enhancers".

L'onglet "Settings" vous permet d'activer et dedésactiver de nombreuses fonctions de ICeCoffEE. Les changements prendront effet immédiatement pour toutes les applications pour lesquelles cette version de ICeCoffEE est active.

Si ICeCoffEE interfère avec le comportement normal d'une application, utilisez l'onglet "Exclude List" pour empêcher ICeCoffEE de faire quoi que ce soit dans cette application. Si l'application est lancée, vous devez la quitter et la relancer à nouveau pour que les changements prennent effet. Veuillez s'il vous plait me rapporter le comportement anormal afin que je puisse l'arranger dans une future version de ICeCoffEE.

Où cela fonctionne-t-il d'autre ?

Certaines applications Carbon qui proposaient des fonctions du genre de ICeTEe sous Mac OS 9 continuent dans Mac OS X.  Celles dont j'ai connaissance sont :

BBEdit 	<http://www.barebones.com/products/bbedit.html>
Tex-Edit Plus	<http://www.nearside.com/trans-tex/>

Apple permet l'ouverture d'une URL par ⌘-click dans OS X 10.2 et supérieur à deux endroits.

Le service Multilingual Text Editor (MLTE) de Apple permet le ⌘-clic d'une URLs pour l'ouvrir. WorldText, qui est installé avec les Developer Tools de OS X dans /Developer/Applications/Extras, est un exemple d'application qui utilise MLTE.

Dans Terminal vous pouvez ⌘-double-cliquer les URL pour les ouvrir. (ICeCoffEE précède ce mécanisme en agissant d'un simple ⌘-clic.)

Aucun de ces comportements d'ouverture d'une URL fourni par Apple ne fonctionne aussi bien que ICeCoffEE. Ils s'avèrent écrits séparément, puisque Terminal accepte bien des choses que MLTE n'offre pas. Par exemple, MLTE refusera d'ouvrir une URL délimitée aussi communément qu'avec des <>. Une prochaine version de ICeCoffEE pourrait intervenir dans MLTE comme un remplacement.

Foir aux questions

Q. Pourquoi pas un service ?

R. Je pense que les services sont une bonne idée. Mais d'après moi, les services Cocoa sont médiocrement implémentés dans Mac OS X.  Comparez :

•	⌘-clic sur le point d'insertion ou la sélection d'une URL

avec :

•	sélectionner soigneusement le texte d'une URL
•	aller dans le menu de l'application
•	Trouver l'élément "Services" (qui n'est pas toujours situé au même endroit)
•	(éventuellement) trouver le menu hiérarchique de l'application avec laquelle vous désirez ouvrir l'URL
•	sélectionner le service désiré

Lequel préféreriez-vous utiliser ? Lequel est fourni par Apple ? Pour améliorer cette situation, les services non disponibles pourraient être masqués, le menu Services pourrait être promotionné menu de haut niveau (tout comme il l'était dans les systèmes NeXT et Mac OS X Serveur 1.x) ou disponibles par menu contextuel. ICeCoffEE 1.1 et supérieur supporte les services dans les menus contextuels, et depuis la version 1.3, dans la barre de menu.

Q. Et pourquoi ne pas assigner des raccourcis aux services ?  L'on n'aurait alors que deux étapes à faire.

R. Il n'y a pas de jeu d'équivalents clavier des services qui ne soit recouvert par une application ou une autre. Et ceci est d'autant plus vrai que Apple réserve de plus en plus de ⌘- pour son propre usage dans OS X. Il est très improbable de trouver une combinaison qui soit mémorisable et simple à exécuter, et qui ne soit pas en conflit avec une quelconque application.

De plus, l'implémentation actuelle des services ne renvoie que la sélection, et rien de son contexte. C'est une fonction essentielle pour que des programmes tels que ICeCoffEE fonctionnent parfaitement.

Et enfin, l'implémentation actuelle des services de Mac OS X nécessite que le menu Services ait été ouvert dans une application avant que ne soient pris en compte les équivalents clavier, les rendant quasiment inutilisables. (ICeCoffEE 1.3.3 et supérieur contournent ce bogue.)

Q. Ai-je quand même besoin de ICeTEe ?

R. Si vous utilisez ICeTEe dans Classic, gardez-le. Malheureusement, aucune information n'est partagée entre la Configuration Internet de Classic et celle de Mac OS X, vous devrez donc configurer deux fois l'utilitaire.

Q. Pourquoi ICeCoffEE ne fonctionne-t-il pas dans mon application préférée ?

R. Veuillez m'envoyer vos suggestions. Jusqu'ici j'ai réussi à faire fonctionner ICeCoffEE partout où j'ai essayé, à l'exception des zones de texte MLTE qui autorisent déjà un support rudimentaire du lancement d'URL.

Vous pouvez aussi demander directement que votre application préférée permette le ⌘-clic d'une URL, tout comme un certain nombre d'applications Mac OS X. Implémenter cette fonction dans une application particulière ne devrait prendre qu'une heure de travail tout au plus. (en comparaison, il m'a fallu plus de 30 heures de travail pour ajouter le lancement d'URLs au Terminal d'OS X 10.1 et tout cela pour rien puisque Terminal a été complètement réécrit pour Mac OS X 10.2, me demandant encore 6 heures de travail en plus)

Q. Que signifie ICeCoffEE ?

R. Internet Config Carbon/Cocoa Editing Extension.  Ou un truc dans ce genre.

Q. Ma question reste sans réponse.

R. Ceci n'est pas une question. Mais si vous avez une question à propos de ICeCoffEE, une suggestion ou un rapport de bogue, veuillez me l'envoyer à <icecoffee@sabi.net>. Vérifiez d'abord dans l'historique ci-dessous que votre bogue n'y est pas déja signalé. Veuillez faire en sorte que vos messages soient concis et précis, et je ferai de mon mieux pour vous répondre dès que mon emploi du temps me le permettra. Merci !

Version history

1.4.2 / 16 May 2005
•	Updated to Application Enhancer (APE) 1.5: “APE Manager” System Preferences pane is now “Application Enhancer”, among other changes
•	Updated to fancy new Unsanity Installer 3.5
•	Improved URL parsing (for example, now require the first character of a URL to be alphanumeric)
•	Revised documentation to reflect supported Mac OS X versions and bug fixes
•	Restored selectable contextual menu and menu bar Services in Mac OS X 10.4
•	Resolved incompatibility with Cocoa text discontiguous selection in Mac OS X 10.4: URL launching is slightly delayed to ensure your ⌘-click is not followed by another click
•	Removed keyboard equivalents from contextual Services menu (that they’re present in Terminal is a violation of Apple Human Interface Guidelines)
•	Eliminated unsightly “*** Assertion failure in ICCF_LaunchURL()” console message when no item is chosen from the ⌥⌘-click menu
•	Fixed missing URL highlight while the ⌥⌘-click menu is displayed in Safari
•	Restored French localization (missing in 1.4.1)
•	Requires Mac OS X 10.3.9 or later

Known issues:
•	⌘-clicking wrapped URLs in Terminal may select too many lines of text (Mac OS X 10.3 only)
•	URLs containing parentheses (rare, but legal) are not correctly processed
•	<>-delimited URLs split over multiple lines (with whitespace inside the URL) are not correctly processed
•	Service keyboard equivalents are not shown in System Preferences in Mac OS X 10.4

1.4.1 / 18 April 2005
•	Updated to Application Enhancer (APE) 1.4.6: improves APE Manager exclusion management, other stuff
•	Updated to Unsanity Installer 3.3
•	Fixed ⌘-click incompatibility with Safari 1.3 as included in Mac OS X 10.3.9
•	Upgraded project to Xcode 1.5 (native targets, etc.)
•	Requires Mac OS X 10.2.8 or later

1.4 / 26 October 2003
•	Updated to Application Enhancer (APE) 1.4.1: improves application launch times
•	Modified ⌥-drag copy into same Terminal window is now an option in APE Manager
•	Services displayed in contextual menus can be selectively disabled in APE Manager
•	Added Services to contextual menus of Xcode and Camino
•	Fixed cosmetic problems in APE Manager under Mac OS X 10.3
•	Restored Safari support, which now applies to any application using WebKit (e.g. Mac OS X 10.3's Help Viewer, NetNewsWire) and honors URL blinking preferences in Mac OS X 10.3

1.3.3 / 31 May 2003
•	No longer accidentally display debug message “range of string {x, y}” in Console when opening URLs in Terminal
•	Non-ASCII characters act as URL boundaries instead of yielding confusing “conversion to cString failed” error
•	Respond to ⌘-click in non-ASCII text with “no URL was selected” instead of “conversion to cString failed”
•	Fixed small memory leak in contexual Services menu [Sven-S. Porst]
•	Remove disabled items and collapse single-item submenus in Services contextual menu [Sven-S. Porst]
•	Enable service keyboard shortcuts at application launch time [Sven-S. Porst]
•	Fixes text dragging behavior in Terminal: now ⌥-drag to copy within the same window, and ⌥ doesn't function as a toggle elsewhere
•	Added German localization [Sven-S. Porst]

1.3.2 / 13 March 2003
•	Fixed small memory leak in bookmark addition
•	Fixed appearance of ⌥⌘-click menu on non-Roman systems
•	⇧⌘-click or ⌥⇧⌘-click to open URLs in the background [Paul Kafasis]
•	Temporarily disabled Safari support, because of bugs in recent Safari betas
•	Added Japanese localization [Shike, Satoshi]

1.3.1 / 9 February 2003
•	Sort helper application names in ⌥⌘-click menu
•	No longer activate in background-only (NS/LSUIElement, NS/LSBackgroundOnly), command-line or full-screen applications: fixes missing speech feedback window, conflict with Disk Copy and Xounds [Because of limitations in APE Manager, these applications still appear in the Enhanced list]
•	Fixed small memory leak in APE Manager preferences plugin

1.3 / 3 February 2003
•	Work around CFLog message appearing in Console when bookmark dialog box is shown

1.3b3 / 2 February 2003
•	Show default protocol handler in menu even if it doesn’t claim to handle it
•	Added “Add Bookmark” to ⌥⌘-click menu
•	Updated to APE 1.2.1 final and new Unsanity Installer: should fix problem where ICeCoffEE Installer is not updating APE where necessary, and ICeCoffEE doesn’t activate at all
•	Fixed “slack” URL opening problems with OmniWeb and iCab (ICeCoffEE was generating an invalid URL) [John Marriott]
•	Fixed ⌥⌘-click text highlighting in SimpleText

1.3b2 / 29 January 2003
•	Beginnings of Carbon support: implemented TEClick patch, based upon ICeTEe 2.0; enabled in SimpleText only.
•	Fixed incorrect version number in uninstallation, again (oops)
•	Normalized error processing in Terminal
•	Fixed text blinking to work like ICeTEe (especially noticeable in Terminal)
•	Handle “slack” URLs (e.g. web.sabi.net/nriley)
•	Fixed small memory leak when parsing invalid URLs
•	Added ⌥⌘-click “Open Location With” menu
•	Prepared all text in the APE for localization

1.3b1 / 26 January 2003
•	Implemented Mac OS X 10.2 Terminal support
•	Fixed URL parsing issues

1.3d3 / 22 January 2003
•	Uninstall input manager version of ICeCoffEE if found as part of installation
•	Fixed incorrect version number "1.5a3" displayed in installer (only if you try to uninstall this or a later version)
•	Restored exclude list functionality to APE Manager preferences (oops)
•	Automatically migrate exclude list from ICeCoffEE 1.0–1.2 format
•	ICeCoffEE-specific settings in APE Manager

1.3d2 / 20 January 2003
•	Added support for contextual menus in Safari’s browser window, and partial ⌘-click launching (select text first)
•	Fixed regression in Project Builder support, no longer reacts on ⌘-click (oops)
•	Use localized text for “Services” title
•	Added Services in the menu bar [Ben Hines]

1.3d1 / 19 January 2003
•	Now an Application Enhancer (APE) module instead of an input manager
•	Uses Unsanity Installer
•	Uses APE Manager for configuration
•	Converted Read Me to RTFD format from plain text
•	Removed Mac OS X 10.1 Terminal support
•	Fixed Services in contextual menu for Project Builder 2.0 and Mac OS X 10.2 Terminal

1.2b2 / 20 April 2002
•	Fixed “dead text fields” in tab views [Dr. Suksiri Grams]

1.2b1 / 10 February 2002
•	Be more lenient about the ends of a URL, so >http://... is correctly interpreted
•	Fixed memory leak in Terminal launching

1.2a2 / 10 February 2002
•	Fixed bug when ⌘-clicking in Terminal when text already selected
•	Fixed crashing bug when ⌘-clicking on the last line in Terminal
•	Filter punctuation surrounding URLs (correctly except parentheses, which technically violates RFC 2396 §2.3) [Chris Behm]
•	Support lines which wrap courtesy of Terminal
•	Factored a bunch of code; fixed the URL length checking bug everywhere, not just in one place.

1.2a1 / 8 February 2002
•	Rewrote attributedSubstringFromRange: to only grab complete lines; many hours of pain and suffering for padding lines
•	Fixed off-by-one error in URL length checking

1.2d5 / 7 February 2002
•	Implemented minimal NSTextInput for Terminal.app since it doesn’t do so itself (buggy, crashes when trying to access beyond end of line)
•	Reduced memory consumption in NSTextInput URL launching code

1.2d4 / 30 January 2002
•	Fixed crashing bug when ICeCoffEE couldn’t get the selection and tried to call ICStop without ICStart
•	Intercept ⌘-click in Terminal.app (but can't do anything with it yet)
•	Version of URL launching code that only requires NSTextInput, not NSTextView (uses too much memory)

1.2d3 / 30 January 2002
•	Pass mailto hint (⌘-click email addresses)

1.2d2 / 29 January 2002
•	Adds contextual menu to Terminal windows

1.2d1 / 28 January 2002
•	Proof of feasibility for Terminal.app

1.1 / 28 January 2002 / installer 1.0.2
•	minor tweaks to Read Me file
•	really handle drawers this time
•	fixed crashing bug in installer after remove/install (moral: always use accessors for setting object-valued instance variables)
•	no longer exclude applications which have no CFBundleID
•	properly handle toolbar item views which are nil
•	better error handling during patching

1.1d2 / 27 January 2002 / installer 1.0.1
•	Installer works around suid root bug (should no longer crash NetInfo Manager and Disk Utility on startup) [Peter Miller]
•	Better preference file handling
•	Fixed installer bug where ICeCoffEE couldn’t be removed if the folder in which it was installed was inaccessible
•	No longer disable Services contextual menu in excluded apps
•	Fixed “dead text fields” in toolbars and drawers [ZnU].  Note: to ⌘-click a text field in a toolbar, click then ⌘-click immediately afterwards, otherwise you'll move the toolbar item instead.

1.1d1 / 25 January 2002
Added Services item to contextual menu

1.0 / 25 January 2002
Minor tweaks to Read Me file

1.0a6 / 25 January 2002
Added exclusion, no UI yet (edit the plist if you need to)—defaults to exclude PBX. Added Remove function to the installer

1.0a5 / 24 January 2002
Fixed “dead text fields” bug, I think...

1.0a4 / 23 January 2002
Test version with installer

1.0a3 / 22 January 2002
Only activate on ⌘-left mouse button

1.0a2 / 21 January 2002
Removed debugging messages; reports errors in a dialog box rather than Console; flash URL; fixes errors clicking on <>; temporary disable function; read me

1.0d1 / 20 January 2002
Proof of feasibility.

Acknowledgments

John Marriott, for inspiration and testing
Michael Dinsmore, John Hayes, Ben Hines, Philippe Martin, Raphaël Szwarc, and Mac-arena the Bored Zo, for testing and suggestions
Slava Karpenko and Rosyna Keller at Unsanity, for their incredible software and generosity
Quinn and Michael Schürig, for ICeTEe
everyone who worked on Internet Config

This product  uses Application Enhancer system
 Copyright ©2002-2005, Unsanity LLC
http://www.haxies.com/ape/