Using Apple's new app Messages beta you can discover who you can send Messages to.
In Messages, press Cmd+N to open a blank message window. In the 'To:' field, which is highlighted by default, begin typing a name. A list will appear showing all the possible completions. Once you have typed one unique name, the list will show all the addresses known for that person, and will put a blue chat bubble next to any item that you can send a Message to. This works for both e-mail addresses and phone numbers.
[crarko adds: I don't have the beta handy so I haven't tested this one.]
When looking at the new Messages.app preferences I realised that you can get it to run applescripts on various events.
Under the Alerts Tab in the Messages.app preferences, you will find a list of Events under the drop down Menu 'Event.' Each event has its own set of independent options . All include a 'Run an AppleScript script' option. These scripts can just run on every instance of the chosen event.
But you can interact with the Messages.app with the script the same way you would in iChat.
So if I wanted to, for example, have my Mac send me a message, when an event occurs that matches certain criteria I can use the iChat syntax.
Example:
using terms from application "iChat"
on message received theMessage from theBuddy for theChat
--display dialog (theBuddy's name as string)
if theMessage is "some Text" then
-- do something
send "some info" to theBuddy
else
-- do something
send "some other info" to theBuddy
end if
end message received
end using terms from
Messages.app at the moment registers itself as iChat, not Messages. This most likely will change when the final release is out.
I did not use iChat that much. But I will be using Messages.app a lot. What makes this even better is I can send Messages to myself to get my Mac to do things.
[crarko adds: I'm sure in Mountain Lion there will be some interesting ways to combine Notifications with Messages, if the Sandbox permits it.]
I discovered a keyboard shortcut for moving messages to favorite mailboxes: Command+Control+number.
OS X Lion added a Favorites Bar to Mail where the user can keep frequently accessed mailboxes. The Command+1, +2, etc., shortcuts that used to work in 10.6 for Inbox, Outbox, Drafts, etc., are now associated with these favorites in order from left to right. While reaching for a different shortcut, I just discovered an undocumented shortcut for moving selected messages to one of these favorite mailboxes.
Just add Control to the shortcut. For example, Drafts is in the third position on my Favorites Bar, so Command+Control+3 moves a selected message to Drafts. The only requirement is that the destination is a regular (not smart) mailbox.
After much searching, I have finally found a way to correct misspelled words without using the full Spelling interface and without using the contextual menu, as that requires using the mouse.
I use the keyboard as much as possible. I much prefer it to using the mouse. I don't claim to know all the shortcuts but the ones I know, I use all the time.
And for some time, I've been looking for a way to correct spelling for cases when auto-correct doesn't work. I thought it should have been easy to do.
The only way I knew how to do it was right-clicking the misspelled word, which brings up a contextual menu the top of which shows suggestions followed by other options such as 'Ignore spelling,' 'Learn spelling,' and so on. But this is no shortcut and requires using the mouse.
After all this time with Lion, I've finally found an answer. Yes, Lion has auto-correct, but it can be switched off or you might click Escape before it can auto-correct and now the word on the screen is misspelled.
So, here's what to do:
Find a nicely misspelled word.
Add a space at the end.
Now, using the arrow key, move the cursor so that it's after the last letter in the word.
Wait a moment.
You will see a list of words appear and a small grey 'x' at the end. Use the arrow keys (down, left, right) to select the word you wish to use instead and press return.
[crarko adds: I tested this in TextEdit, and it works as described.]
By default, Mail will mark a message in a conversation read after a short delay. To adjust the short delay (for example, to remove it), use the following command (replacing 0 with the desired time in seconds):
defaults write com.apple.Mail MarkAsReadDelay 0
To revert to the default:
defaults delete com.apple.Mail MarkAsReadDelay
As far as I can tell, there isn't a way to affect the delay for single messages.
You can use an AppleScript to send a notification to Growl whenever new messages arrive in Mail.app. The script also includes the image of the sender from your Address Book as the icon of the Growl notification. Works in Snow Leopard and Lion.
I adapted a script written originally by Hunter Ford. I added the ability to include the image of the sender from the Address Book (if it exists). Britney F. helped me solve a couple of bugs -- Many thanks!
First you have to be using Mail.app and the latest version of Growl.
You can download the script from here and place in your /Library/Scripts folder or anywhere you wish.
To use this script, you have to add a rule in Mail.app to run the script for all new messages.
In Mail.app choose Preferences » Rules » Add New Rule. Then set the condition to 'Every Message' and the action to 'Run AppleScript' then choose the Mail2Growl.scpt from the folder you saved it in.
Whenever you get a new message, a Growl notification will appear with the image of the sender or a placeholder image if you do not have his/her image in your Address Book.
Here's the script (save it as Mail2Growl.scpt):
-- Mail2Growl
-- Growl Alerts in Mail
-- Wassim Jabi [http://wjabi.net]
-- Modified from the excellent script by Hunter Ford [http://www.cupcakewithsprinkles.com]
-- If it exists, this script sends the photo of the sender to Growl from the address book. Otherwise, it sends the sender place holder image from Mail.app.
-- Original script found at [http://hunterford.me/growl-notifications-for-apple-mail-on-mac-os-x/]
-- This script uses a tip to summarise many messages by "Ryan" in the comments section at [http://hunterford.me/growl-notifications-for-apple-mail-on-mac-os-x/]
-- This script also used tips from [http://www.macosxtips.co.uk] for finding photos in the Address Book
-- This script arises from the lack of any Growl Support in Mac OS X Snow Leopard (10.6) or Lion (10.7)
-- Code inspired by and adapted from James Higgs [http://blog.jameshiggs.com/2009/08/28/growlmail-on-snow-leopard-a-temporary-fix/] as well as those mentioned.
tell application "GrowlHelperApp"
-- Make a list of all the notification types
-- that this script will ever send:
set the allNotificationsList to {"New Email"}
-- Make a list of the notifications
-- that will be enabled by default.
-- Those not enabled by default can be enabled later
-- in the 'Applications' tab of the growl prefpane.
set the enabledNotificationsList to {"New Email"}
-- Register our script with growl.
-- You can optionally (as here) set a default icon
-- for this script's notifications.
register as application "Mail" all notifications allNotificationsList default notifications enabledNotificationsList icon of application "Mail"
end tell
-- Mail Rule Trigger
--
-- Source: Benjamin S. Waldie [http://www.mactech.com/articles/mactech/Vol.21/21.09/ScriptingMail/index.html]
using terms from application "Mail"
on perform mail action with messages theSelectedMessages for rule theRule
set N to count items of theSelectedMessages
if (N > 5) then
set multipleDescription to "" & N & " new messages"
tell application "GrowlHelperApp"
notify with name "New Email" title "You have " & N & " new messages." description " " application name "Mail"
end tell
else
repeat with thisMessage in theSelectedMessages
-- Process the current message
-- Grab the subject and sender of the message
set growlSender to my ExtractName(sender of thisMessage)
try
set growlPhoto to my getPhotoFromAddressBook(my ExtractEmailAddress(sender of thisMessage))
on error
set growlPhoto to read POSIX file "/Applications/Mail.app/Contents/Resources/SenderImagePlaceholder.png" as "TIFF"
end try
set growlSubject to subject of thisMessage
set growlTitle to growlSender & return & growlSubject
-- Use the first 100 characters of a message
set growlDescription to (content of thisMessage)
set growlLength to (length of growlDescription)
if growlLength > 100 then
set growlDescription to "" & (characters 1 through 100 of growlDescription) & " …"
end if
-- Send a Notification
tell application "GrowlHelperApp"
try
notify with name "New Email" title growlTitle description growlDescription application name "Mail" image growlPhoto
on error
set growlPhoto to (read POSIX file "/Applications/Mail.app/Contents/Resources/SenderImagePlaceholder.png" as "TIFF")
notify with name "New Email" title growlTitle description growlDescription application name "Mail" image growlPhoto
end try
end tell
end repeat
end if
end perform mail action with messages
end using terms from
-- *ExtractName*
--
-- gathers the name portion from the "From: " line
--
-- Source: robJ [http://forums.macosxhints.com/archive/index.php/t-19954.html]
to ExtractName(sender_)
if sender_ begins with "<" then
return text 2 thru -2 of sender_
else
set oldTIDs to text item delimiters
try
set text item delimiters to "<"
set name_ to first text item of sender_
set text item delimiters to oldTIDs
on error
set text item delimiters to oldTIDs
end try
return name_ as string
end if
end ExtractName
-- *ExtractEmailAddress*
--
-- gathers the email address portion from the "From: " line
--
-- Source: robJ [http://forums.macosxhints.com/archive/index.php/t-19954.html]
to ExtractEmailAddress(sender_)
if sender_ begins with "<" then
return text 2 thru -2 of sender_
else
set oldTIDs to text item delimiters
try
set text item delimiters to {"<", ">"}
set email_ to second text item of sender_
set text item delimiters to oldTIDs
on error
set text item delimiters to oldTIDs
end try
return email_ as string
end if
end ExtractEmailAddress
to getPhotoFromAddressBook(sender_)
set photo_ to read POSIX file "/Applications/Mail.app/Contents/Resources/SenderImagePlaceholder.png" as "TIFF"
try
tell application "Address Book"
set photo_ to image of people whose value of emails contains sender_
end tell
on error
set photo_ to read POSIX file "/Applications/Mail.app/Contents/Resources/SenderImagePlaceholder.png" as "TIFF"
end try
return photo_
end getPhotoFromAddressBook
[crarko adds: Tested briefly, seemed to work OK in 10.6.8. It looks like the most recent version of Growl (for Lion) is in the Mac App Store for US $1.99. The option to build it from source is still available as well.]
This hint describes how to easily see all the emails in one conversation without having to open them and scroll through.
If you have your emails 'organized by conversation' you will see in the email list in the left column the number of emails in that conversation. You can just click on the email showing in the left-hand column and hit the Right arrow key. This causes all the emails in that conversation be shown in a drop-down list by date, one on each line, below the latest one. To undo the list, press the Left arrow key.
[crarko adds: This is one of those obvious shortcuts that can hide forever if not mentioned.]
Every now and then I poke around the web to see if someone has found a way to search InDesign files with Spotlight. For many users of InDesign, this missing capability has been a point of frustration since Spotlight was introduced with Tiger back in April of 2005. Now there's a little something for anyone running InDesign CS5 or CS5.5.
Over in the Adobe forums, John Hawkinson put together a plugin. He recommends installing it, then using Terminal to re-index specific files or folders using:
mdimport /Users/UserName/Path/To/File/Or/Folder
I installed the latest version of his plugin (version 0.1c) into ~/Library/Spotlight then ran the mdimport command on my Documents folder. While he's explicit that this is alpha software, I've seen no issues and it seems to work very well. Thanks, John!
[crarko adds: A big help for a fairly significant omission. Good find.]
There's a recent Macworld article for quickly making Stickies. I thought that some folks might want to make Sticky Widgets instead.
This is derived from my hint posted a few years ago.
Depending on your system version (and possibly other factors), you may need to launch Dashboard at least once if you haven't since system startup before trying the Service.
Here are the simple steps:
Open Automator and create an empty Mac OS X Service document. In the document window set the first popup to text and the second pop-up to any application.
Drag a Run AppleScript action into the right side of the Automator document window. Then paste the following line into the Run AppleScript step just beneath the (* Your script goes here *) line:
activate
set inputText to (input as text)
do shell script "open /Library/Widgets/Stickies.wdgt"
delay 0.2
tell application "System Events"
keystroke tab
keystroke tab
keystroke inputText
end tell
Save the Service document as 'Sticky Widget from selected text,' then open the Keyboard prefpane.
In the Keyboard Shortcuts segment tab, click Services, and put Command+Ctrl+Shift+S into the shortcut area for the Sticky Widget from selected text entry in the list. Close the prefpane (the keyboard trigger is just a suggestion - you can use others, just be sure to test, because whether a shortcut works or not can be affected by lots of things).
[crarko adds: I tested this (without the shortcut), and it works as described.]