Плагин NppExec заканчивает вывод на первом двоеточии

Я экспериментирую с TypeScript и использую Notepad++ для создания TypeScript и NppExec для компиляции моих скриптов. Похоже, это должно работать, но есть одна очень странная проблема: NppExec показывает мне вывод только до : перед текстом первого предупреждения/сообщения об ошибке. Например, предположим, что вывод компиляции должен быть таким:

C:/temp/tstest/test.ts(26,14): Supplied parameters do not match any signature of call target
C:/temp/tstest/test.ts(33,9): Supplied parameters do not match any signature of call target

Что я увижу в окне консоли NppExec:

node C:\temp\tstest\node_modules\typescript\bin\tsc.js C:\temp\tstest\test.ts
Process started >>>
C:/temp/tstest/test.ts(26,14): <<< Process finished. (Exit code 1)
================ READY ================

Обратите внимание, что вывод был прекращен после первого ):.

Очень интересно, что если я изменю движок JavaScript с Node на cscript (Windows Script Host), то он заработает... но навсегда! Вот что я увижу, если выполню ту же команду с помощью cscript:

cscript C:\temp\tstest\node_modules\typescript\bin\tsc.js C:\temp\tstest\test.ts
Process started >>>
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

C:/temp/tstest/test.ts(26,14): Supplied parameters do not match any signature of call target
C:/temp/tstest/test.ts(33,9): Supplied parameters do not match any signature of call target
<<< Process finished. (Exit code 1)
================ READY ================

Любые предложения о том, куда пойти с этим? Я бы предпочел использовать Node, так как он намного быстрее...

Вот видео, демонстрирующее все это: http://screencast.com/t/xxgodAU8

Редактировать: оказывается, если вы передадите переключатель -w (переключатель "отслеживать файлы и перестраивать при изменении") в tsc.js, он будет работать при выполнении Node... но это не так. build только один раз, он продолжает сборку, и процесс не завершится, пока вы его не убьете.


person Josh    schedule 11.07.2013    source источник


Ответы (3)


Я начал проект плагина notepad ++. вы можете найти его здесь: https://github.com/hansrwindhoff/nppPluginTypescript.git

компилируется при сохранении и запускает js в nodejs

Если кто-то захочет поставить intelli-sense, будет здорово!

XML-файл с окраской синтаксиса находится по адресу: https://gist.github.com/wate/5077019 эта суть не ко мне относится.

person hans    schedule 19.07.2013

У меня нет ответа для вас, но я могу дать вам несколько идей относительно плана атаки.

Вероятно, выводится все сообщение, но какой-то специальный символ или последовательность заставляют Notepad++ прекратить его обработку. Перенаправьте вывод в файл, чтобы увидеть, что там происходит. Плагин шестнадцатеричный редактор может помочь. Обладая этими знаниями, вы можете передать вывод команды через такой инструмент, как awk или sed, чтобы переписать неверные биты, чтобы это понравилось Notepad++.

person Jeffery Grajkowski    schedule 11.07.2013
comment
Я попробую, но я сбит с толку тем, почему все это работает, если вы передаете поток -w. Я ожидаю, что вывод будет побайтно идентичен для каждой компиляции, с ключом -w или без него. - person Josh; 12.07.2013

Некоторое время назад я отправил запрос функции в Codeplex. Проблема, похоже, в том, как nodejs очищает свой буфер. Смотрите обсуждения на github и codeplex:

http://typescript.codeplex.com/workitem/115

https://github.com/joyent/node/issues/4640#issuecomment-12542632

Вы можете проголосовать за запрос, чтобы повысить его приоритет.

person Stefan Reimers    schedule 04.05.2014