Перехват события вставки буфера обмена в консольном приложении - PullRequest
0 голосов
/ 21 октября 2018

При использовании Visual Studio 2017 (текущий уровень исправления, 15.8.7) любой текст, скопированный из файла LF-only и вставленный в консоль, теряет информацию новой строки.Таким образом, весь текст отображается в одной строке.

Я могу изменить консольное приложение, в которое в данный момент используется ReadConsole () .Мне интересно, есть ли что-нибудь, что можно сделать, чтобы перехватить команду вставки и обработать ее, чтобы соблюдать простые переводы строки.Существуют некоторые низкоуровневые консольные API, такие как ReadConsoleInput () , которые, кажется, означают повторную реализацию всей логики управления курсором и редактирования строки.Я, скорее всего, захочу сделать это в какой-то момент ... но если бы я это сделал, был бы способ перехватить вставку (не только Ctrl-V, но более абстрактно, например, из меню?)

Если обойти это невозможно, то нет другого выбора, кроме как назвать это ошибкой Visual Studio.Кажется, это популярная проблема в редакторах программистов под Windows - она ​​упоминается здесь в закрытом выпуске для VScode и в все еще открытом выпуске для Atom ... которыйесть хорошая анимация той же самой старой проблемы:

demo of atom collapsing multiline LF-only input into single-line notepad data

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

Но если нет другого варианта, мне было бы интересно, если кто-нибудь знает, как сказать Visual Studio вставлять содержимое изLF-only файл в несколько строк в консоли ... путем канонизации его в CR-LF при копировании (но, надеюсь, не повреждая все-LF файлы во время редактирования из-за этого).: - /

...