3 votes

Le service Automator basé sur AppleScript est assez instable (parfois très lent, parfois avec des erreurs).

J'ai quelques services Automator basés sur Applescript, par exemple, Launch Emacs With Selected File :

tell application "Finder"
    set selectedDirectory to (quoted form of POSIX path of (target of window 1 as alias))
    set selectedItem to (quoted form of POSIX path of (the selection as alias))
    tell application "Terminal"
        tell window 1
            do script "cd " & selectedDirectory & " && emacs " & selectedItem
        end tell
        activate
    end tell
end tell

Je l'ai assigné à un raccourci clavier Ctrl-E et l'utilise depuis plusieurs mois maintenant.

Mais le service est assez instable. Lorsque ma machine, un MacBook Pro fonctionnant sous OS X 10.8, est en charge normale, qu'elle répond à d'autres tâches, et que Terminal est déjà en fonctionnement, tout ce qui suit peut se produire :

  1. Dans la moitié des cas, il est rapide et prend moins d'une seconde pour répondre.
  2. Environ 25 % du temps, il faut environ trois secondes pour lancer une nouvelle fenêtre de terminal.
  3. Environ 5 % du temps, ça prend une éternité. J'ai tendance à croire qu'il ne répond pas du tout, mais après vingt secondes, une fenêtre apparaît enfin, ce qui est assez bizarre.
  4. Environ 10% du temps, je reçois un message d'erreur Workflow encountered an error ou quelque chose comme ça.
  5. Dans environ 10 % des cas, le raccourci ne répond pas du tout (il met simplement en évidence un autre fichier, mais il n'y a absolument aucun conflit de raccourci). Je dois aller dans Finder->Services->Launch ... pour utiliser le service.

Une idée de la raison pour laquelle le service est si instable ? (Enfin, ce n'est pas mon seul service instable ; en fait, tous les services que j'ai créés sont assez instables...) Merci d'avance.

1voto

Dave Points 986

4. Environ 10% du temps, je reçois un message d'erreur Workflow encountered an error ou quelque chose comme ça.

Hay un bogue dans les versions 10.7 et 10.8 où le Finder ignore les nouvelles fenêtres lorsqu'il obtient la propriété de sélection. Si vous ouvrez une nouvelle fenêtre du Finder, que vous sélectionnez certains éléments et que vous exécutez la commande tell app "Finder" to selection dans l'éditeur AppleScript, le résultat est les éléments sélectionnés dans une fenêtre située derrière la fenêtre la plus en avant (ou une liste vide).

Une solution consiste à déplacer le focus vers une autre application, puis à revenir :

activate application "SystemUIServer"
tell application "Finder"
    activate
    set d to POSIX path of (target of Finder window 1 as alias)
    set f to POSIX path of (item 1 of (get selection) as alias)
end tell
set cmd to "cd " & quoted form of d & " && emacs " & quoted form of f
tell application "Terminal"
    try
        set w to window 1 where visible is true and busy is false
        do script cmd in w
        set frontmost of w to true  
    on error
        do script cmd
    end try
    activate
end tell

Ou, dans ce cas, vous pourriez également obtenir la sélection comme entrée pour le service.

5. Dans environ 10 % des cas, le raccourci ne répond pas du tout (il met simplement en évidence un autre fichier, mais il n'y a absolument aucun conflit de raccourci). Je dois aller dans Finder->Services->Launch ... pour utiliser le service.

Cela pourrait être causé par un autre bug. Parfois, les raccourcis des services Automator ne fonctionnent pas tant que vous ne survolez pas le menu des services dans la barre de menu. Je ne connais pas de solution de contournement pour ce problème.

Essayez simplement de passer à FastScripts ou attribuer des raccourcis aux scripts d'une autre manière . Il y a également un court délai (peut-être 0,1 à 0,5 seconde) avant que les services Automator ne soient exécutés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X