far2l icon indicating copy to clipboard operation
far2l copied to clipboard

Annoying prefix like <user@host>//path_to/some_file

Open LanThrusteR opened this issue 1 year ago • 6 comments

If a user opens NetBrikcs and selects a file on a remote server and then presses Ctrl+F the user gets in the command line a string like:

user@host//path_to/some_file

instead of

/path_to/some_file

Suppose you use this path in a program or config and want to copy paste it in a program source, config file or a Terminal opened on your computer. Each time before you use the path from NetBricks you need always to clean the path out of user@host//

Not to mention if a user wants to keep the path in the the buffer and then execute it later with some parameters from NetBricks itself the users needs always to strip it out of user@host//

Example: you point cursor in the Far2l panel to /bin/netstat then you want to execute /bin/netstat with -a parameter you press Ctrl-F then you add -a and you get something like user@host//bin/netstat -a

which cannot be executed or used anywhere else without stripping user@host/

It's so annoying. Can we roll back to Far 1.70 WinSCP behavior the only time when it was right?

LanThrusteR avatar Feb 09 '24 14:02 LanThrusteR

This prefix is connection name and is editeable. Its needed in case you want to open some connection from command line - then you just have to type something like net://<user@host>//path_to/some_file This also makes possible storing NetRocks location in Bookmarks and navigating to same panel by Alt-F1/-

elfmz avatar Feb 09 '24 20:02 elfmz

А в "Folders history" не пашет...

  ╔════════════════════════════════ Folders history ─ 2024-02-22 ═════════════════════════════════╗
  ║ mars:<mars>//scratch                                                                          ▼
  ╚════════════ Up/Down,Enter,Esc,Shift-Del,Del,Ins,Ctrl-C,Ctrl-T,Ctrl-F10,Ctrl-Alt-F ════════════╝

Выдаёт:

   ╔═══════════════ Error ════════════════╗
   ║         Not a directory (20)         ║
   ║         mars:<mars>//scratch         ║
   ║ Jump to the nearest existing folder? ║
   ╟──────────────────────────────────────╢
   ║            { Yes } [ No ]            ║
   ╚══════════════════════════════════════╝

dodo-16 avatar Feb 23 '24 03:02 dodo-16

А в "Folders history" не пашет...

Пашет, по крайней мере для префиксов ftp:, sftp:, scp:, shell:, но только для соединений по логину, паролю (запрашивает их). Если соединение по ключу, то запрос вылезает запрос пароля, который тут ни к чему. Причём даже, если на панели уже открыто это соединение. @elfmz это хорошо бы поправить.

akruphi avatar Feb 23 '24 07:02 akruphi

У меня вот так выходит на 2.5.3-beta Darwin x86_64

╔═════════════════════════════════════ Folders history ─ 2024-02-22 ═════════════════════════════════════╗
║ 22:17.30 mars:<mars>//scratch                                                                          ░
║ 22:19.42 /                                                                                             ░
║ 23:15.45 mars:<mars>//tmp                                                                              ░
║ 23:15.48 mars:<mars>/                                                                                  ░
║ 23:15.50 mars:<mars>//etc                                                                              ░
║ 23:16.16 mars:<mars>//etc/cron.d                                                                       ░
╟────────────────────────────────────────────── 2024-02-23 ──────────────────────────────────────────────░
║ 09:49.50 /Users                                                                                        ░
║ 10:22.24 ftp.full.dns:<ftp.full.dns>//root                                                             ▓
║ 10:22.27 ftp.full.dns:<ftp.full.dns>/                                                                  ▓
║ 10:22.29 ftp.full.dns:<ftp.full.dns>//home                                                             ▼
╚════════════════ Up/Down,Enter,Esc,Shift-Del,Del,Ins,Ctrl-C,Ctrl-T,Ctrl-F10,Ctrl-Alt-F ═════════════════╝


   ╔═ Operation failed ═╗
   ║  Wrong protocol:   ║
   ╟────────────────────╢
   ║       { Ok }       ║
   ╚════════════════════╝

Log:

NewDir=ftp.full.dns:<ftp.full.dns>//home strCurDir=/Users/xxx/Documents dot2Present=0
AddToHistory - disallowed: ''
PluginImpl::SetDirectory('ftp.full.dns:<ftp.full.dns>//home', 0)
NetRocks::OpBase('ftp.full.dns:<ftp.full.dns'): ERROR='Wrong protocol: '

Что я делаю не так? 😕

Только сейчас заметил: У меня МАК М2, а ФАР пишет, что он под Darwin x86_64... 😕

dodo-16 avatar Feb 23 '24 15:02 dodo-16

во вложении патч, который приближает то что мы ранее видели в WinSCP плагине по FAR первых версии, что именно меняется этим патчем:

  • когда вы нажимаете Ctrl + F : теперь нет дурцакого user@host префикса, и можно копировать и использовать имена из FAR2L в командах, при это заголовок панели работает как прежде (но поддерживает теперь HOME DIR)
  • решена проблема - когда происходид логин через NetRocks в домашний каталог, заголовок панели показывает / как будто вы находитесь в руте сервера хотя вы находитесь в руте своего HOME теперь и Ctrl+F работает как надо и поддерживается работа с HOME каталога

в чем не уверен

  1. только протестировал патч в SCP/SFTP протоколах, остальными я пока не понял как пользоваться

  2. есть ещё один баг, который остался не решенным, почему то если сделать в FAR2L после логина в домашний каталог cd в существующую папку cd /home/video/tst то в командной строке путь изменится только в случае случае если Ctrl+O нажать или переход в каталог сделать или переместить окно FAR - я пока не понял что надо выдать в FarAPI и почему он не обновляется сам сейчас и где именно не хватает

  3. нерешенная проблема - то как NetRocks работает с файлами и папками в которых есть пробелы, т.е. он вообще не работает с например

cd ~/Videos/Penguins\ of\ Madagascar\ (2014)

--- a/NetRocks/src/.PluginImpl.cpp	2024-03-16 04:54:23.000000000 +0300
+++ b/NetRocks/src/PluginImpl.cpp	2024-03-16 04:39:39.000000000 +0300
@@ -121,11 +121,31 @@
 {
 	std::wstring tmp;
 	if (_remote) {
+
+		tmp = StrMB2Wide(_location.ToString(false));
+		if(tmp[0] != '/' && tmp[0] != '~')
+		{
+		  tmp.insert(0, L"~/");
+		}
 		wcsncpy(_format, StrMB2Wide(_location.server).c_str(), ARRAYSIZE(_format) - 1);
-		wcsncpy(_cur_dir, StrMB2Wide(_location.ToString(true)).c_str(), ARRAYSIZE(_cur_dir) - 1 );
+		wcsncpy(_cur_dir, tmp.c_str(), ARRAYSIZE(_cur_dir) - 1 );
+
+		std::string pref;
+
+		if (_location.server_kind == Location::SK_SITE) {
+			pref+= '<';
+		}
+
+		pref+= _location.server;
+
+		if (_location.server_kind == Location::SK_SITE) {
+			pref+= '>';
+		}
+
 //		tmp = _remote->SiteInfo();
 //		tmp+= '/';
-		tmp+= _cur_dir;
+//		tmp+= _cur_dir;
+                tmp = std::wstring(pref.begin(), pref.end()) + tmp;
 
 	} else {
 		tmp = StrMB2Wide(_sites_cfg_location.TranslateToPath(false));

netrocks_filepath.txt

LanThrusteR avatar Mar 16 '24 02:03 LanThrusteR

У меня вот так выходит на 2.5.3-beta Darwin x86_64

╔═════════════════════════════════════ Folders history ─ 2024-02-22 ═════════════════════════════════════╗
║ 22:17.30 mars:<mars>//scratch                                                                          ░
║ 22:19.42 /                                                                                             ░
║ 23:15.45 mars:<mars>//tmp                                                                              ░
║ 23:15.48 mars:<mars>/                                                                                  ░
║ 23:15.50 mars:<mars>//etc                                                                              ░
║ 23:16.16 mars:<mars>//etc/cron.d                                                                       ░
╟────────────────────────────────────────────── 2024-02-23 ──────────────────────────────────────────────░
║ 09:49.50 /Users                                                                                        ░
║ 10:22.24 ftp.full.dns:<ftp.full.dns>//root                                                             ▓
║ 10:22.27 ftp.full.dns:<ftp.full.dns>/                                                                  ▓
║ 10:22.29 ftp.full.dns:<ftp.full.dns>//home                                                             ▼
╚════════════════ Up/Down,Enter,Esc,Shift-Del,Del,Ins,Ctrl-C,Ctrl-T,Ctrl-F10,Ctrl-Alt-F ═════════════════╝


   ╔═ Operation failed ═╗
   ║  Wrong protocol:   ║
   ╟────────────────────╢
   ║       { Ok }       ║
   ╚════════════════════╝

Log:

NewDir=ftp.full.dns:<ftp.full.dns>//home strCurDir=/Users/xxx/Documents dot2Present=0
AddToHistory - disallowed: ''
PluginImpl::SetDirectory('ftp.full.dns:<ftp.full.dns>//home', 0)
NetRocks::OpBase('ftp.full.dns:<ftp.full.dns'): ERROR='Wrong protocol: '

Что я делаю не так? 😕

Только сейчас заметил: У меня МАК М2, а ФАР пишет, что он под Darwin x86_64... 😕

Скорее всего этот то же баг, если PluginImpl.cpp тот же самый - попробуйте патч выше, я только что попробовал 2.6.0 и с этим патчем нет такого бага в истории (может быть его и без патча нет в 2.6.0, я его не наблюдаю)

если патч уже или ещё не работает, то можно вручную

найдите в /home/igor/Documents/man/far2l/patches/PluginImpl.cpp void PluginImpl::UpdatePathInfo()

и замените её содержимое, так чтобы метод выглядел:

void PluginImpl::UpdatePathInfo()
{
	std::wstring tmp;
	if (_remote) {

		tmp = StrMB2Wide(_location.ToString(false));
		if(tmp[0] != '/' && tmp[0] != '~')
		{
		  tmp.insert(0, L"~/");
		}
		wcsncpy(_format, StrMB2Wide(_location.server).c_str(), ARRAYSIZE(_format) - 1);
		wcsncpy(_cur_dir, tmp.c_str(), ARRAYSIZE(_cur_dir) - 1 );

		std::string pref;

		if (_location.server_kind == Location::SK_SITE) {
			pref+= '<';
		}

		pref+= _location.server;

		if (_location.server_kind == Location::SK_SITE) {
			pref+= '>';
		}

//		tmp = _remote->SiteInfo();
//		tmp+= '/';
//		tmp+= _cur_dir;
                tmp = std::wstring(pref.begin(), pref.end()) + tmp;

	} else {
		tmp = StrMB2Wide(_sites_cfg_location.TranslateToPath(false));
		wcsncpy(_cur_dir, tmp.c_str(), ARRAYSIZE(_cur_dir) - 1);
		if (!_standalone_config.empty()) {
			tmp = ExtractFileName(_standalone_config);

		} else {
			wcsncpy(_format, L"NetRocks sites", ARRAYSIZE(_format) - 1);
			if (!tmp.empty()) {
				if (tmp[tmp.size() - 1] == '/') {
					tmp.resize(tmp.size() - 1);
				}
				tmp.insert(0, L": ");
			}
			tmp.insert(0, L"NetRocks sites");
		}
	}

	if (tmp.size() >= ARRAYSIZE(_panel_title)) {
		size_t rmlen = 4 + (tmp.size() - ARRAYSIZE(_panel_title));
		tmp.replace((tmp.size() - rmlen) / 2 , rmlen, L"...");
	}

	wcscpy(_panel_title, tmp.c_str());
}

и это зло, наконец отступит, это тянется слишком долго в WinSCP плагине это было сделано очень удобно не знаю зачем решили добавлять эту лишнюю информацию в путь, невозможно пользоваться стало Ctrl+F в путь добавляет постоянно префикс, ни в консоль другую ни скопируй ни используй в программах, все время надо было вырезать перфикс, но теперь этого делать не нужно, кроме того теперь поддерживатся корректно дефолтный HOME каталог, правда не совсем так как хотелось бы, желательно чтобы он попадал не в ~/ сразу а в /home/user/ и чтобы этот путь и отображался сразу а не ~/ (как после патча сейчас) но это уже лучше чем было т.к. до этого это был вообще "как будто рут сервера"

LanThrusteR avatar Mar 16 '24 02:03 LanThrusteR