La razón por la que obtienes una selección vacía, es decir, cuando no se selecciona nada y set my_selection to (get selection)
devuelve, por ejemplo, punto de inserción antes del carácter 1 del documento de texto 1
, el bloque de if
falla con el
tell application "System Events"
keystroke "a" using command down
porción del código debido a que TextWrangler no tiene el enfoque.
El comando keystroke
va a lo que tiene el foco, por lo que antes de tener System Events keystroke
algo, activa
primero el objetivo, por ejemplo:
tell application "TextWrangler"
activate
-- delay 1 -- # Descomenta y/o ajusta el valor del comando 'delay' según sea necesario.
set my_selection to (get selection)
set nb_mot to contar palabras de (my_selection)
if nb_mot < 1 then
tell application "System Events"
keystroke "a" using command down
display dialog "Seleccionar todo"
…
Dicho esto, puedes omitir el comando activate
y utilizar el siguiente ejemplo de AppleScript código:
tell application "TextWrangler"
set my_selection to selection
set nb_mot to contar palabras de my_selection
if nb_mot < 1 then
set my_selection to characters 1 a -1 de documento de texto 1
set nb_new_mot to contar palabras de my_selection
end if
set var_1 a (replace "(" utilizando "(" buscando en my_selection opciones {modo de búsqueda:literal, comenzando en la parte superior:falso, envolver:falso, atrás:falso, sensible a mayúsculas/minúsculas:falso, coincidir palabras:falso, ampliar selección:falso})
fin decir
Nota para claridad, he eliminado los comandos display dialog
y delay
junto con todo el código de System Events, y otro código innecesario, ya que la siguiente línea de código es todo lo que es necesario si el nb_mot es < 1
:
set my_selection a characters 1 a -1 de documento de texto 1
El Registro de Eventos y el Resultado de este ejemplo de AppleScript código es:
tell application "TextWrangler"
get selection
--> punto de inserción antes del carácter 1 del documento de texto 1
contar cada palabra de punto de inserción antes del carácter 1 del documento de texto 1
--> 0
get characters 1 a -1 de documento de texto 1
--> caracteres 1 a 499 de documento de texto 1
contar cada palabra de caracteres 1 a 499 de documento de texto 1
--> 70
replace "(" utilizando "(" buscando en caracteres 1 a 499 de documento de texto 1 opciones {modo de búsqueda:literal, comenzando en la parte superior:falso, envolver:falso, atrás:falso, sensible a mayúsculas/minúsculas:falso, coincidir palabras:falso, ampliar selección:falso}
--> 3
end tell
Resultado:
3
Como puedes ver, reemplaza los tres (
en:
set var_1 a (replace "(" utilizando "(" buscando en my_selection opciones {modo de búsqueda:literal, comenzando en la parte superior:falso, envolver:falso, atrás:falso, sensible a mayúsculas/minúsculas:falso, coincidir palabras:falso, ampliar selección:falso})