Attribuer une famille de polices à espacement fixe au texte sélectionné avec un raccourci clavier sous Mac OS X

8

J'écris beaucoup de courriels techniques et j'aime utiliser une police à espacement fixe pour les bits de code. Mettez en surbrillance le texte, appuyez sur apple-T, choisissez ma police dans la liste des favoris, puis fermez la fenêtre de police. Existe-t-il un moyen d'utiliser un raccourci clavier pour appliquer une police donnée au texte actuellement sélectionné? Idéalement, ce serait à l'échelle du système d'exploitation, mais si ce n'est pas possible, je peux l'utiliser pour une seule application (Mail.app)

Sam Barnum
la source
Quelle version? ⌘-T fonctionne dans Mail 3.6.
@trashgod Je recherche un raccourci clavier unique que je peux utiliser pour définir la police de la sélection actuelle sur une police spécifiée. Probablement une sorte de macro.
1
Cela semble assez trivial à faire avec AppleScript, puis attribuez simplement une clé à ce script. Si quelqu'un ne vient pas ce soir, je préparerai quelque chose demain.
lemonginger

Réponses:

2

Je cherche à faire ça depuis très longtemps.

J'ai finalement réussi à me retrouver avec quelque chose qui fonctionne vraiment très bien pour moi, avec l'aide d'Alfred et de l'outil CLI Highlight.

Voici la partie du script Alfred:

query="{query}"
if echo $query|grep -e "^__SHORTCUT__"
then
    echo "$query"|sed -E "s/^__SHORTCUT__//"|pbcopy
    syntax=txt
else
    osascript -e 'tell application "System Events" to keystroke "c" using {command down}'
    syntax=$query
fi

pbpaste|/usr/local/bin/highlight --syntax $syntax --font Menlo --font-size 12 --out-format=rtf|pbcopy
osascript -e 'tell application "System Events" to keystroke "v" using {command down}'

Assurez-vous que le déclencheur de raccourci ajoute __SHORTCUT__pour être reconnu et que l'argument est "Sélection dans OSX":

entrez la description de l'image ici

Démo courte https://youtu.be/y8NJT52APRQ

Yann Bizeul
la source
1

Je ne connais pas de moyen à l'échelle du système de scripter le panneau Polices, mais voici quelques façons d'obtenir un accès rapide aux polices monospace dans Mail.app

Méthode 1: planifier un message texte

Accédez aux préférences de Mail.app> Polices et couleurs et cochez la case "Utiliser une police à largeur fixe pour les messages en texte brut"

entrez la description de l'image ici

Maintenant, lorsque vous êtes dans un message où vous souhaitez utiliser une police à espacement fixe, vous pouvez simplement appuyer sur: Command- Shift- Tet vous pouvez basculer entre la police à largeur fixe de votre choix et votre police standard (message en texte brut et texte riche).

L'inconvénient de cette méthode est que si le destinataire n'a pas défini sa police sur une police à largeur fixe, il peut ne pas voir le message comme prévu.

Méthode 2: définir la police avec Applescript

La deuxième façon de procéder consiste à créer un nouveau message avec la police correcte choisie à l'aide d'Applescript. Vous pouvez faire ça comme ceci:

tell application "Mail"
    set outgoingMessage to make new outgoing message
    set fontFace to "Times"
    tell outgoingMessage
        set the content to " "
        set font of content to fontFace
        set size of content to (14)
        set visible to true
    end tell
end tell

Vous devez définir le contenu sur quelque chose avec ce script. Il semble que Mail ne vous laisse pas définir la police d'un message vide.

Méthode 3: utilisez TextExpander

De cette façon, cela coûte de l'argent, mais cela pourrait vous donner ce que vous recherchez. Vous pouvez configurer quelques raccourcis TextExpander (34,99 $ USD sur l'App Store) pour une largeur fixe et un type normal afin que vous puissiez basculer d'avant en arrière en tapant quelques caractères.

TextExpander

TextExpander vous permettra d'insérer du texte riche (texte avec une police, une couleur, un style, etc.). Créez simplement un extrait de type Texte formaté, Images et définissez une police pour le texte que vous allez insérer. Vous devrez inclure au moins un caractère espace pour que cette stratégie fonctionne.

Vous aurez besoin de vos extraits pour inclure au moins un caractère espace pour vous assurer que la police prendra.

Samuel Mikel Bowles
la source
1
Samuel, je cherche un moyen de simplement faire en sorte que le texte en surbrillance soit monospacé, pas tout le message. Je suis d'accord avec l'utilisation d'un Applescript qui n'affecte que la sélection de l'application actuelle. Pouvez-vous recommander un moyen de déclencher le script Apple avec un raccourci clavier personnalisé?
Sam Barnum
1
Sam, le problème est que Mail.app n'a pas d'objet pour le texte sélectionné. J'ai passé un peu de temps à essayer de trouver un moyen et je peux dire qu'il n'y a pas de moyen propre d'y parvenir.
Samuel Mikel Bowles
2
Avec TextExpander, vous pouvez lui faire insérer le contenu du presse-papiers dans l'extrait de format monospace. Ainsi, lorsque vous mettez en surbrillance, vous tapez simplement ⌘X, puis votre abréviation d'extrait de code pour le coller à nouveau en tant que monospace. Ajoutez un espace avec une mise en forme régulière à la fin de l'extrait et vous êtes prêt à continuer à taper. TextExpander est autrement incroyablement utile; tous ceux qui utilisent un Mac pour faire avancer les choses devraient le posséder de toute façon.
75th Trombone
1

Ce que j'ai fini par utiliser, c'était de spécifier manuellement le monospace dans du texte, puis Format -> Copier le style (Option + Cmd + C) qui copie le format mais pas le texte. Sélectionnez ensuite un autre texte brut et Format-> Coller le style (Option + Cmd + V) qui assigne ce format à la sélection. Après le redémarrage, vous devez recommencer et cela ne fonctionne que pour un seul style, mais cela répond à mes besoins.

Sam Barnum
la source
0

Copiez un personnage avec un style spécifique:

echo "<span style=\"font:14px 'Monaco'\">&nbsp;</span>" | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf

pbcopy -Prefer rtf n'inclut pas les données en texte brut, donc le collage ne fonctionnera que dans les vues en texte enrichi.


Insérez un caractère avec un style spécifique:

try
    try
        set old to the clipboard
    end try
    set html to quoted form of "<span style=\"font:14px 'Monaco'\">&nbsp;</span>"
    do shell script "echo " & html & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
    tell application "System Events" to keystroke "v" using command down
    delay 0.03
    set the clipboard to old
end try

Coller le style:

try
    try
        set old to the clipboard
    end try
    tell application "System Events" to keystroke "c" using command down
    delay 0.03
    set input to Unicode text of (the clipboard as record)
    set txt to quoted form of ("<span style=\"font:14px 'Monaco'\">" & input & "</span>")
    do shell script "echo " & txt & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
    tell application "System Events" to keystroke "v" using command down
    delay 0.03
    set the clipboard to old
end try
Lri
la source