Замена оверлейных иконок символами в отдельном колумне

Хотите предложить идею нового плагина или знаете, что улучшить в существующем? Пишите сюда.
liquidblasted
Posts: 6
Joined: Wed 21 Jul, 2010 17:35

Замена оверлейных иконок символами в отдельном колумне

Post by liquidblasted » Tue 21 Feb, 2012 09:23

Что бывает часто не хватает при использовании текстового Far - это отсутствие оверлейных иконок, обозначающих статус файла в системах контроля версий. Бывает очень удобно окинуть список файлов в папке взглядом и сразу видеть, какие файлы закоммичены, какие модифицированы, какие конфликтуют. и т.п.
Или например видеть статус синхронизации файлов в папке Dropbox.

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

Например, статус файла в SVN/CVS "закоммичен", в проводнике он имеет иконку "зеленой галки", Far это определяет и в соответствующей колонке напротив имени файла - символ 'u'. А если еще и зеленого цвета (а конфликтующий - красная 'c', например - чтобы сразу бросалось в глаза) - вообще класс.
И так далее.

Сорри может я наивен т.к. сам не разработчик, и не имею представления о работе оверлейных иконок и можно ли их легко "определять", но очень хотелось бы подобный плагин, и я думаю не мне одному :)

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Centaur » Tue 21 Feb, 2012 10:23

Вот честно, никогда не понимал, в чём прикол видеть статус файлов.

Если я работаю с проектом, мне недостаточно видеть статус файлов в текущем каталоге — мне нужно видеть состояние всего проекта. Мне не интересно видеть галочку на неизменённых файлах — наоборот, надо видеть изменённые и новые (не находящиеся под source control) файлы. Наконец, мне нужно видеть весь дифф, который будет закоммичен, если я сейчас скажу «svn commit».

Когда я работал с svn (и ещё не открыл для себя git-svn), у меня был пункт в юзерменю, вызывающий edit:<svn diff, и настройка в Colorer’е, чтоб красило. А потом я стал пользоваться gitk и git gui, чего и всем желаю.

[/offtopic]

А что касается оверлейных иконок, то это тогда надо работать с COM-интерфейсами Explorer’а и shell extension’ов, со всеми вытекающими. Впрочем, я не видел полезных применений оверлеев.

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Maximus5 » Tue 21 Feb, 2012 12:03

а я вот не понимаю, почему не хватает svn_c0?

User avatar
Wave
Posts: 1771
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 16 times

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Wave » Tue 21 Feb, 2012 12:19

svn_c0 работает с tortoisesvn 1.7.x? (просто любопытствую, т.к. смутно помню соотв. жалобы, а самому мне на эти иконки всегда было пох. Ну и кроме свн'а оверлейные иконки цепляет меркурий, гит, наверняка ещё софт…)
Пользуюсь ФАРом больше 20 лет © собирательный.

liquidblasted
Posts: 6
Joined: Wed 21 Jul, 2010 17:35

Re: Замена оверлейных иконок символами в отдельном колумне

Post by liquidblasted » Tue 21 Feb, 2012 17:26

Centaur,

У всех разные методы работы. Я вот например работаю в достаточно крупных и сложных проектах, и при этом только с небольшой частью в них. И не все изменяемые файлы я собираюсь коммитить в репозиторий - что-то я меняю локально для теста. И каждый раз довольно медленно обрабатывать командами ВЕСЬ проект только ради того, чтоб узнать, что же я закоммичу нужного, что нет, запоминать это и закоммитить только нужное - не тот метод.
Кроме того, в силу специфики моей работы оверлей помогает мне при сортировке и визуальном сравнении.
И системы контроля версий это только частный пример, оверлей используется не только в них.

Maximus5,

svn_c0 прежде всего лишь только для SVN (если я не ошибаюсь), а помимо того не обновлялся очень давно и не работает с новыми версиями, т.е. не вариант вообще

User avatar
HaRT
Moderator
Posts: 9170
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 177 times

Re: Замена оверлейных иконок символами в отдельном колумне

Post by HaRT » Tue 21 Feb, 2012 17:56

liquidblasted
А почему вы так хотите привязаться именно к оверлейным иконкам? В чём выигрыш перед другими способами анализа? Ведь всё равно для каждого приложения, добавляющего оверлейные иконки, (например, TortoiseSVN) они будут свои, и знание об этом надо будет закладывать в преобразователь или в его конфигурацию.
Не проще ли написать плагин, который будет брать реальные файлы в директории, анализировать их статус в выбранной системе (например, SVN) и отображать его на файловые атрибуты, а те уже легко перенести на плагиновую файловую панель через механизм Highlighting (например, как предложено в Атрибуции). При желании можно сделать хост-плагин, который будет распознавать, грубо говоря, тип рабочей копии (CVS, SVN 1.6-, SVN 1.7+, git, …) и спрашивать статусы у своего под-плагина (модуля) для этого типа.
Фар есть инструмент, а не нянька. © 2009 DrKnS

liquidblasted
Posts: 6
Joined: Wed 21 Jul, 2010 17:35

Re: Замена оверлейных иконок символами в отдельном колумне

Post by liquidblasted » Tue 21 Feb, 2012 18:13

HaRT wrote:liquidblasted
А почему вы так хотите привязаться именно к оверлейным иконкам? В чём выигрыш перед другими способами анализа?
Нет-нет, без разницы, существует ли привязка к оверлейным иконкам, либо способ, описанный вами - главное - это как-то видеть статус файла. Символами в колонке, или подсветкой. Просто я не программист и не знаю, какой способ лучше/проще/реальней :) И как раз думал, что статус уже отображается на файловые атрибуты, откуда проводник их подхватывает и сует необходимую иконку, но судя по всему ошибался.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Centaur » Wed 22 Feb, 2012 06:06

liquidblasted wrote:Я вот например работаю в достаточно крупных и сложных проектах, и при этом только с небольшой частью в них. И не все изменяемые файлы я собираюсь коммитить в репозиторий - что-то я меняю локально для теста. И каждый раз довольно медленно обрабатывать командами ВЕСЬ проект только ради того, чтоб узнать, что же я закоммичу нужного, что нет, запоминать это и закоммитить только нужное - не тот метод.
Ну разумеется, это не тот метод. Тот метод — это открыть git gui и он покажет, какие файлы добавились/удалились/изменились, и дифф каждого изменённого файла. И затем на каждом файле можно кликнуть либо stage «взять в коммит», либо revert «вернуть как было», либо вообще не кликать («оставить для следующих коммитов»); потом написать commit message и, ткнув кнопочку, закоммитить все за’stage’нные изменения.

liquidblasted
Posts: 6
Joined: Wed 21 Jul, 2010 17:35

Re: Замена оверлейных иконок символами в отдельном колумне

Post by liquidblasted » Wed 22 Feb, 2012 06:15

Centaur wrote:
liquidblasted wrote:Я вот например работаю в достаточно крупных и сложных проектах, и при этом только с небольшой частью в них. И не все изменяемые файлы я собираюсь коммитить в репозиторий - что-то я меняю локально для теста. И каждый раз довольно медленно обрабатывать командами ВЕСЬ проект только ради того, чтоб узнать, что же я закоммичу нужного, что нет, запоминать это и закоммитить только нужное - не тот метод.
Ну разумеется, это не тот метод. Тот метод — это открыть git gui и он покажет, какие файлы добавились/удалились/изменились, и дифф каждого изменённого файла. И затем на каждом файле можно кликнуть либо stage «взять в коммит», либо revert «вернуть как было», либо вообще не кликать («оставить для следующих коммитов»); потом написать commit message и, ткнув кнопочку, закоммитить все за’stage’нные изменения.
Проблема опять же в том, что это работает только в git gui, у нас же используется доработанный своими силами cvsnt, я не в курсе всех технических подробностей, но вроде из-за того, что идет работа с большими данными часто меняющихся бинарников и все эти свн, гиты, меркуриалы в этом плане весьма тормозны и накладны и нам не подходят.

И, повторюсь, не в этом дело, я не имел в виду только цвс, только свн, только гит, а все вместе + еще есть куча софта наподобие dropbox, skyDrive и много чего еще

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by CyberShadow » Thu 08 Mar, 2012 11:18

Я тут поигрался, вот что вышло. ИМО неплохо :)

Идея: хешируем оверлеи и позволяем пользователям наделять хешам имена (пока в ини-файле).

Порадовало, что т.к. Tortoise(Svn|Hg|Git) используют те же иконки, настроить пришлось только одну из них.

Еще не знаю, если я хочу это доделывать и поддерживать, может кто-то с большим опытом захочет взять под крыло. Приметил у Максимуса целую коллекцию c0-плагинов ;)
HaRT wrote:Не проще ли
60 строк кода говорят "нет". :quiet:
Attachments
iconoverlay_c0.7z
Far2/3 x86/64
(13.38 KiB) Downloaded 167 times

liquidblasted
Posts: 6
Joined: Wed 21 Jul, 2010 17:35

Re: Замена оверлейных иконок символами в отдельном колумне

Post by liquidblasted » Thu 08 Mar, 2012 11:32

CyberShadow
Супер, спасибо! Это уже что-то! :)
Есть ли какой-то способ обычному пользователю определять хеш оверлеев, чтобы самому дописать в инишник, для тех же cvs или dropbox?

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by CyberShadow » Thu 08 Mar, 2012 11:36

Если нет описания - отображается хеш. Хеш копируйте в ини и добавляйте описание :)

liquidblasted
Posts: 6
Joined: Wed 21 Jul, 2010 17:35

Re: Замена оверлейных иконок символами в отдельном колумне

Post by liquidblasted » Thu 08 Mar, 2012 13:09

Вообще отлично :)

Выяснил пока что для DropBox, доберусь до работы - выясню и для CVS :)

; Dropbox
777AAEE5=Normal
2EBC8E8F=Syncing
72C386F2=Error

User avatar
Tim Sobolev
Posts: 705
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Tim Sobolev » Thu 08 Mar, 2012 22:14

Работает, но тупит чтение каталога страшно :roll:
Причём даже те, где никак не могут быть оверлейные иконки (FAR 3.0 build 2534 x86).

User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by CyberShadow » Thu 08 Mar, 2012 22:21

Да, для каждого файла нужно запросить иконку. MSDN рекомендует это делать асинхронно, но я так понимаю что FAR API это делать не позволяет.

Впрочем, если просто спрашивать у разных VCS статус как было предложено выше, думаю выйдет не лучше, так как у Tortoise* есть доработанные механизмы кеширования (этим занимаются процессы TSVNCache/TGitCache/TortoiseHgOverlayServer).

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Maximus5 » Thu 08 Mar, 2012 22:48

В bis я сделал опциональное чтение C0 только для видимых файлов. Это немного облегчает ситуацию. Но да, развить апи или таки сделать "менеджер C0 плагинов" не помешало бы

Post Reply

Return to “Предложения и идеи”