Cocoa Scripting: devolviendo los objetos clonados desde un comando "duplicado"

El AppleScriptduplicate Se supone que el comando devuelve los objetos copiados.

Y aunque las aplicaciones que usan las funciones basadas en AE originales parecen hacer eso, las aplicaciones basadas en el marco de Cocoa Scripting parecen no devolver nada más quevalor que falta.

Parece que el controlador de comandos deNSCloneCommand es responsable de no devolver los especificadores para los objetos clonados.

Intenté arreglar esto en mi aplicación programable subclasificando el comando, recolectando los especificadores de objetos clonados y luego devolviéndolos.

Esto funciona bien si solo un elemento está duplicado.

También funciona si se clonan varios elementos junto con el uso deto parámetro con el comando (como enduplicate every widget to end): Entonces puedo devolver un especificador de tipoNSRangeSpecifier que designa el primero y el último de esos elementos clonados.

Sin embargo, si uno usa el comando duplicar en varios elementossin elto parámetro, luego los elementos se ordenan en la matriz en unmanera no consecutiva. Por ejemplo, si inicialmente hay 2 elementos "x", con id 1 y 2,duplicate every x insertará una copia de cada elemento justo después de su original, de modo que los tengamos en este orden: 1, 3, 2, 4.

Ahora,¿Cómo se devolvería un especificador para esto, es decir, un especificador para los elementos 3 y 4?

No hay un especificador de "lista" en las subclases deNSScriptObjectSpecifier, y no puedo devolver un NSArray para cada individuoNSScriptObjectSpecifier tampoco, parece. Y mientrasNSAppleEventDescriptor admite la creación de listas, no puedo entender cómo convertiría los especificadores de objetos en NSAppleEventDescriptors.

¿Cómo puedo resolver esto aparte de imponer un orden consecutivo de los objetos clonados (lo que requeriría que vuelva a implementar elNSCloneCommandoperación completamente, me temo).

Por cierto,Mark Aldritt, autor de Script Debugger,confirma el problema eseduplicate (además:move, open) no devuelve valores como se supone que deben hacerlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta