то есть готовим список часто используемых файлов и папок, ну тоже что избранное, но если пунктов 100, и более, то не совсем удобно использовать. Набираем имя файла или папки которое хотим открыть и Enter.
или так
По поводу скрипта сравнения файлов winMergeTabs.js, может имеет смысл сравнить размеры, если одинаковы, то получить md5, если одинаковы, то просто мессага, что файлы одинаковы, иначе запускать в проге winMerge. Просто мессага вылетит мгновенно, а то запускается winMerge и та же мессага, что файлы идентичны.
AZJIO wrote:По поводу скрипта сравнения файлов winMergeTabs.js, может имеет смысл сравнить размеры, если одинаковы, то получить md5, если одинаковы, то просто мессага, что файлы одинаковы, иначе запускать в проге winMerge. Просто мессага вылетит мгновенно, а то запускается winMerge и та же мессага, что файлы идентичны.
Ускорение будет только если считать контрольные суммы внешним не скриптовым приложением, на JScript расчеты весьма медлительны…
И, скорее всего, прямое сравнение будет быстрее (причем небольшими кусками, чтобы не помещать в память все содержимое документа – а у меня есть подозрение, что память задублируется), но все равно может оказаться медленнее, чем отработает полноценное скомпилированное внешнее приложение.
AZJIO wrote:Набираем имя файла или папки которое хотим открыть и Enter.
Не совсем понятно, что должно происходить по нажатию Enter.
В случае папки можно предположить, что её следует открыть в Explorer.
А что делать в случае, если файл имеет расширение:
- .txt или .log и т.д. [текстовый файл - открыть в AkelPad или в ассоциированной программе?]
- .cpp или .pas или .cs и т.д. [исходный файл - открыть в AkelPad или в ассоциированной программе?]
- .bat или .reg или .ps1 и т.д. [файл скрипта - открыть в AkelPad или выполнить?]
- .docx или .odt или .rtf и т.д. [файл документа - открыть в AkelPad или в ассоциированной программе?]
- .exe или .cpl и т.д. [исполняемый файл - открыть в AkelPad или выполнить?]
И бонусный вопрос: как скрипт будет различать эти типы файлов?
DV
Нет, просто открытие в AkelPad, ведь у нас же всё в контексте AkelPad. Хотя возможность сделать галку и заставить плаг/скрипт не только открывать в AkelPad но и выполнять запуск в ассоциированной программе было бы свободой второго уровня. Хотя ранее я сам забыл что уже предлагал это, сделать как историю открытия файлов как в "visual code", тогда бы можно было хранить не последние 20 файлов, а 100 и более.
Но недавно я выкладывал прогу SaveFolders и хотел прикрутить фичу с поиском, но так как её не могу сделать в виде поля в пункте меню, то подумал, что использовать в AkelPad так как половина контента может быть "текстовые файлы" и до кучи папки туда же ручным списком, только я уже привнёс иное (в отличии от предыдущего поста) - иметь 2 части, то есть если есть только первая часть, то поиск по ней, а если есть вторая часть (псевдоним), то по ней и разделение как в командах/скриптах, а тут папки/файлы/псевдонимы.
Мечтать не вредно, но как идею... Что мы решаем: если делать историю как я ранее хотел, то надо следить за добавлением открываемых файлов .удаление дубликатов строк. Если папки, то просто быстрый доступ в любые папки проектов, которые разбросаны по всему диску. Если псевдонимы, то допустим вводим "торренты", а у нас несколько папок от разных систем имеют собственные папки и мы сразу получаем список допустим из 3-х папок торрентов, вводим "фильмы и получаем 5 папок с фильмами, но это уж каждый сам волен что-как называть, ввёл пурик и получил папки PureBasic. Таким же образом можно и файлы одной поляны группировать с разных точек, допустим подключил телефон, ввёл "по работе" получил 2 файла с телефона и копию с компа, синхронизировал содержимое открыв в AkelPad.
Направленность конечно AkelPad, но применять можно болеев широком смысле, тем более что AkelPad часто открыт. И то что движок уже написан, там вроде как поменять только списки, т.е. уже требует меньше трудозатрат, а пользы много.
AZJIO,
Это тянет на полноценный специализированный скрипт для работы с историей файлов/папок наподобие бомбезного плагина AltHistory для FAR Manager (очень рекомендую).
Думаю, в качестве основы скрипта (для отображения окна со списком и фильтром) можно взять недавний GoToAnything.js, который основан на том же CommandPalette.js, но пока что более легковесный.
DV
Попробовал GoToAnything.js, понравилось. Можно ли сделать префиксы :@# в виде переменных в начале скрипта? чтобы легко поменять их не вдаваясь в скрипт и их поиск. Во первых они зависят от раскладки, во вторых набор с Shift, а я бы себе сделал *+- с цифровой панели.
DV wrote:Это тянет на полноценный специализированный скрипт для работы с историей файлов/папок
Ну на этом бы движке историю, пускай даже не контролируемую открытие файлов, я бы ручками прописал некоторые файлы. То есть тоже самое что сейчас, скрипт ищет текст в документе, а надо тоже самое просто по не открытому документу, считывает с диска и выводит пути. Можно даже с префиксами *папка, +файл, -псевдоним (без префикса по всем) и стрелками перемещаемся по пунктам и Enter открывает. Можно в меню вкладки сделать пункт "Добавить документ в историю" чтобы путь был записан в список или можно "Все открытые добавить в историю" и флаг удаления дубликатов.
Обновил GoToAnything.js: много изменений и нововведений.
Теперь скрипт поддерживает Избранное (Favourites) и Историю Открытия Файлов (Recent Files History). Это настолько удобно, что я сам в восторге.
Ещё одно обновление с новыми плюшками: ShowItemPrefixes; Environment variables in Favourites; Refactoring.
if (!CheckIfFavouriteFileExist || oFSO.FileExists(fpath))
убрал восклицательный знак, тогда появились файлы с [F]
То есть скрипт (функция oFSO.FileExists(fpath)) считает пути не существующими? и добавляет их только если установить флаг проверки в false?
oFSO.FileExists(fpath) возвращает false, что с ним не так не понимаю
WScript.Echo("|" + fpath + "|"); проверил пути всё отлично, не закрадываются ни пробелы не переносы.
список путей стандартный:
C:\Users
C:\Windows\Web\Wallpaper
C:\Windows\SysWOW64
C:\Windows\System32
C:\Windows
ага, понял, папки это не файлы ))))))))
При вводе первого символа у меня теряет фокус поле ввода и я уже пишу в документе AkelPad. При закрытии окна скрипта закрывается открытый им документ.
AZJIO wrote:При вводе первого символа у меня теряет фокус поле ввода и я уже пишу в документе AkelPad.
Режим PMDI? Для PMDI при вызове AKD_FRAMEACTIVATE фокус ввода почему-то переходит в окно редактирования. В режиме MDI такого не происходит.
Тут нужна экспертиза Instructor, написал Александру письмо.
AZJIO wrote:При закрытии окна скрипта закрывается открытый им документ.
Чтобы не закрывался, нужно нажать Enter, а не Esc:
Enter - close and stay where we are
Esc - close and return to the original file and position in that file
GoToAnything.js - Сделал "костыль" для режима PMDI. Вроде, работает, пока Instructor не предложит лучшее решение.
Версия 0.4.4 - экспериментальная поддержка папок в Favourites. Использует плагин Explorer. Для активации установите значение FoldersInFavourites в true.
Версия 0.5 - серьёзные оптимизации и рефакторинг. Также в окно скрипта добавлены сочетания клавиш:
Alt+F - edit the Favourites ("GoToAnything.fav")
Alt+H - manage the Recent Files History (calling RecentFiles::Manage)
Версия 0.5.1 -
Alt+A - select window / manage the currently opened files
Идеи и размышления насчет фильтрации.
Могут пригодиться регулярные выражения: /…/, /…/i
Насчет потенциальных конфликтов не уверен, не должно бы быть, но на всякий случай можно сделать отключаемую поддержку.
И для быстрого поиска полезно обрабатывать поисковый ввод с разбивкой по пробелам и фильтровать строки, содержащие все такие «слова». По типу такого:
«doc file» -> \Docs\something\file.txt
Я когда-то делал (да так и не успел выпустить в свет до отклеивания платформы) с фильтрацией, зависящей от префиксов и автоматическим добавлением/снятием модифицирующих поведение префиксов сочетаниями клавиш: /Bookmarks_Menu_Filter/#hotkeys
+ …/preferences/prefs.js
В таком виде:
«\d» (ничего не находит) – Ctrl+R – меняет фильтр на «/ \d», начинает обрабатываться как регулярное выражение и находит цифры.