Atribuir família de fontes monoespaçada ao texto selecionado com atalho de teclado no mac os x

8

Escrevo muitos e-mails técnicos e gosto de usar uma fonte monoespaçada para os bits de código. Destaque o texto, pressione apple-T, escolha minha fonte na lista de favoritos e feche a janela da fonte. Existe uma maneira de usar um atalho de teclado para aplicar uma determinada fonte ao texto atualmente selecionado? Idealmente, isso seria em todo o sistema operacional, mas se isso não for possível, posso usá-lo para apenas um único aplicativo (Mail.app)

Sam Barnum
fonte
Qual versão? ⌘-T funciona no Mail 3.6.
@trashgod Estou procurando um único atalho de teclado que possa ser usado para definir a fonte da seleção atual como uma fonte especificada. Provavelmente algum tipo de macro.
1
Isso parece bastante trivial relacionado ao AppleScript e, em seguida, basta atribuir uma chave a esse script. Se alguém não vier hoje à noite, prepararei algo amanhã.
Lemonginger

Respostas:

2

Estou procurando fazer isso há muito tempo.

Finalmente consegui terminar com algo que realmente funciona muito bem para mim, com a ajuda da ferramenta Alfred e Highlight CLI.

Aqui está a parte do 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}'

Verifique se o gatilho de atalho adiciona __SHORTCUT__para ser reconhecido e se o argumento é "Seleção no OSX":

insira a descrição da imagem aqui

Demonstração curta https://youtu.be/y8NJT52APRQ

Yann Bizeul
fonte
1

Não conheço uma maneira geral de criar um script para o painel Fontes, mas aqui estão algumas maneiras de obter acesso rápido a fontes monoespaçadas no Mail.app

Caminho 1: Planejar mensagem de texto

Vá para Preferências do Mail.app> Fontes e cores e marque a caixa de seleção "Usar fonte de largura fixa para mensagens de texto sem formatação"

insira a descrição da imagem aqui

Agora, quando você estiver em uma mensagem em que deseja usar uma fonte monoespaçada, basta clicar em: Command- Shift- Te você pode alternar entre a fonte de largura fixa de sua escolha e a fonte padrão (mensagem de texto sem formatação e rich text).

A desvantagem deste método é que, se o destinatário não definiu sua fonte para uma fonte de largura fixa, ele pode não ver a mensagem como pretendido.

Caminho 2: definir a fonte com Applescript

A segunda maneira de fazer isso seria criar uma nova mensagem com a fonte correta escolhida usando o Applescript. Você pode fazer isso assim:

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

Você precisa definir o conteúdo para algo com este script. Parece que o Mail não permite que você defina a fonte para uma mensagem vazia.

Caminho 3: Use o TextExpander

Dessa forma, custa dinheiro, mas pode lhe dar o que procura. Você pode configurar alguns atalhos do TextExpander (US $ 34,99 na loja de aplicativos) para largura fixa e tipo normal, para que você possa alternar digitando alguns caracteres.

TextExpander

O TextExpander permitirá que você insira rich text (texto com uma fonte, cor, estilo, etc.). Basta criar um snippet do tipo Texto formatado, Imagens e definir uma fonte para o texto que você estará inserindo. Você precisará incluir pelo menos um caractere de espaço para que essa estratégia funcione.

Você precisará que seus snippits incluam pelo menos um caractere de espaço para garantir que a fonte seja aceita.

Samuel Mikel Bowles
fonte
1
Samuel, estou procurando uma maneira de tornar o texto destacado monoespaçado, não a mensagem inteira. Eu estou bem com o uso de um Applescript que afeta apenas a seleção do aplicativo atual. Você pode recomendar uma maneira de ativar o AppleScript com um atalho de teclado personalizado?
Sam Barnum
1
Sam, o problema é que Mail.app não tem um objeto para o texto selecionado. Passei algum tempo tentando descobrir uma maneira e posso dizer que não há uma maneira limpa de fazer isso.
Samuel Mikel Bowles
2
Com o TextExpander, você pode inserir o conteúdo da área de transferência no snippet no formato aeroespacial. Portanto, quando você destaca, basta digitar ⌘X e, em seguida, sua abreviação de snippet para colá-la novamente como monoespaço. Adicione um espaço com formatação regular ao final do snippet e você poderá continuar digitando. O TextExpander é loucamente útil; todo mundo que usa um Mac para fazer as coisas deve possuí-lo de qualquer maneira.
75th Trombone
1

O que acabei usando foi especificar manualmente o espaço simples em algum texto e, em seguida, Formatar -> Copiar estilo (opção + Cmd + C), que copia o formato, mas não o texto. Em seguida, selecione outro texto sem formatação e Formatar-> Colar estilo (Option + Cmd + V) que atribui esse formato à seleção. Depois de reiniciar, você precisa fazer isso novamente e funciona apenas para um estilo, mas isso atende às minhas necessidades.

Sam Barnum
fonte
0

Copie um caractere com um estilo específico:

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

pbcopy -Prefer rtf não inclui dados de texto sem formatação, portanto, a colagem funcionará apenas em visualizações rich text.


Insira um caractere com um estilo específico:

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

Colar estilo:

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
fonte