2010-04-15 9 views
0

Je tente de remplacer et d'implémenter ma propre TabExpansion. Dans la fonction, je veux analyser le contenu de $ psise.CurrentFile.Editor.Text quand un certain critère $ lastword est trouvé. Le problème que j'ai est que la variable $ psise.CurrentFile.Editor.Text est résolue au contenu de ma fonction TabExpansion plutôt que quel que soit le texte dans un onglet PowerShell ISE.La fonction Tabexpansion ne résout pas la variable

Voici une fonction de test simple. Ouvrez un onglet ISE et collez la définition de la fonction tabexpansion suivante:

function tabexpansion 
{ $psise.CurrentFile.Editor.Text } 

exécuter le script dans ISE. Ensuite, ouvrez un autre onglet dans le type ISE texte et appuyez sur la touche de tabulation La sortie sera

function tabexpansion 
{ $psise.CurrentFile.Editor.Text } 

Plutôt que de tout ce que le texte était dans le deuxième onglet. Est-il possible d'obtenir $ psise.CurrentFile.Editor.Text pour résoudre à l'exécution lorsqu'il est utilisé dans une fonction tabexpansion?

+0

C'est un problème. Vous devriez déposer un bogue sur connect, indépendamment du fait que vous trouviez une solution de contournement: -/ – Jaykul

+0

Cela ne marche même pas: fonction tabexpansion {(Get-Variable psise) .Value.CurrentFile.Editor.Text} – Jaykul

+0

Oui, je Je ne sais pas ce qui se passe là-bas, mais ils exécutent en quelque sorte cette fonction tabexpansion dans un contexte gelé bizarre. Même cela n'aide pas: function get-text {$ psise.CurrentFile.Editor.Text} fonction tabexpansion {get-text} ... get-text fonctionne correctement si vous l'exécutez à la main. Mais lorsque vous cliquez sur tabulation, vous obtenez toujours ce que vous avez obtenu la dernière fois que vous avez lancé get-text, quel que soit l'onglet de fichier ouvert. – Jaykul

Répondre

0

Comme indiqué dans les commentaires, cela semble être un problème dans PowerShell ISE. Un élément Microsoft Connect a été classé.