Как правильно добавить Sublime Text в контекстное меню windows? - PullRequest
0 голосов
/ 07 мая 2020

Я хочу добавить возможность открывать папку с Sublime Text в контекстное меню, как это по умолчанию в VS Code, я попробовал следующий скрипт:

@echo off
SET st3Path=C:\Program Files\Sublime Text 3\sublime_text.exe

rem add it for folders
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3"         /t REG_SZ /v "" /d "Open with Sublime Text 3"   /f
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3"         /t REG_EXPAND_SZ /v "Icon" /d "%st3Path%,0" /f
@reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3\command" /t REG_SZ /v "" /d "%st3Path% \"%%1\"" /f
pause

Это работает, но каждый Когда открываю папку, все предыдущие папки тоже открываются в отдельном windows. Можно как-нибудь исправить?

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Для выполнения этого действия следует использовать subl.exe, а не sublime_text.exe; subl предназначен для взаимодействия с запущенным экземпляром Sublime (и запустит его, если он еще не запущен), а sublime_text - это само приложение.

Однако, независимо от этого, ваша проблема также ( несколько), связанный с этим параметром, который, как видно здесь, по умолчанию включен:

    // Exiting the application with hot_exit enabled will cause it to close
    // immediately without prompting. Unsaved modifications and open files will
    // be preserved and restored when next starting.
    //
    // Closing a window with an associated project will also close the window
    // without prompting, preserving unsaved changes in the workspace file
    // alongside the project.
    "hot_exit": true,

Когда он включен, вы можете выйти из Sublime в любой момент и сохранить его сеанс (включая несохраненные изменения файлов, выбор утверждает, et c), а затем восстановите это, чтобы вернуть вас туда, где вы были.

Итак, если вы ранее вышли из Sublime, когда у вас было открыто windows, тогда, когда вы выполните действие выше, Sublime восстановит его сеанс (и все остальные windows), а затем создаст новый.

Отключение настройки останавливает это, так что каждый запуск Sublime является «чистым» состоянием без восстановления windows или состояния. Однако это также означает, что при выходе из Sublime вам необходимо убедиться, что вы сохранили изменения, иначе ваша работа будет потеряна.

0 голосов
/ 08 мая 2020

Учитывая предоставленную вами информацию и информацию, предоставленную в справке по командам, reg add /?, я бы предположил, что ваш командный файл должен выглядеть примерно так:

@Set "st3Path=%%Program Files%%\Sublime Text 3\sublime_text.exe"
@Set "regPath=HKCU\Software\Classes\Folder\shell\Open with Sublime Text 3"
@%__AppDir__%reg.exe Add "%regPath%" /VE /D "Open with Sublime Text 3" /F >NUL
@%__AppDir__%reg.exe Add "%regPath%" /V Icon /T REG_EXPAND_SZ /D "\"%st3Path%\",0" /F >NUL
@%__AppDir__%reg.exe Add "%regPath%\command" /VE /D "\"%st3Path%\" \"%%~1\"" /F >NUL

Что касается открытия вашего программного обеспечения ранее открытые «папки», я уверен, что вы можете настроить программное обеспечение так, чтобы оно не открывало повторно предыдущие файлы при запуске, непосредственно в Программном обеспечении или путем редактирования его файлов конфигурации. Таким образом, это выходит за рамки проблемы вашего кода и будет рассматриваться отдельно.

Вы заметите, что я использовал реестр «Текущий пользователь», а не «Локальный компьютер», поскольку он не требуется быть «Запуск от имени администратора», и вы не должны вносить глобальные изменения в персонализацию; не всем они нужны. Если вы используете sh, чтобы сделать это для всех пользователей, просто замените HKCU в строке 2 на HKLM.

Обратите внимание, что я ничего не знаю о самом вашем программном обеспечении, поэтому, принимая во внимание информацию, представленную в ответе OdatNurd, подумайте, следует ли заменить sublime_text.exe в строке 1 на subl.exe

...