Page 17 of 31

Posted: Fri Jan 03, 2020 8:54 am
by Diamen
Do it is possible to create a panel docked, not a dialog external, in akelpad edit via script?

Posted: Sat Jan 04, 2020 4:17 pm
by DV
CommandPalette.js
Версия 0.5.2:
- теперь ApplyColorTheme проверяет, активен ли Coder::HighLight.
- миниатюрное изменение в CommandPalette.lng: добавлен вызов '"Coder::CodeFold", 1'.

Posted: Sat Jan 04, 2020 5:17 pm
by Diamen
I tried CommandPalette.js, but I only see a big black square

Posted: Sat Jan 04, 2020 9:23 pm
by opk44
DV
Форма CommandPalette подстраивается под крупный шрифт только по ширине, но не по высоте. В расчете на использование крупных шрифтов желательно несколько увеличить высоту элементов (стр.200-202):

Code: Select all

  //Windows         ID,     CLASS,   HWND,EXSTYLE,   STYLE,   X,   Y,   W,   H
  aWnd.push([IDC_ED_FILTER, "EDIT",     0,      0, nEdStyle,  2,    4,  -1,  30]);
  aWnd.push([IDC_LB_ITEMS,  "LISTBOX",  0,      0, nLbStyle,  2,   36,  -1,  -1]);
стр.201: 20 --> 30
стр.202: 26 --> 36
Проверялось на шрифте с кеглем до 20 включительно. Использование более крупных опять начнет вызывать проблемы. Останется надеяться, что само использование таких размеров уже менее вероятно.

Posted: Mon Jan 06, 2020 11:06 am
by VladSh
Krtec
В TranslateWithGoogleAPI.js добавил возможность вывода вариантов слов - см. параметр "dict".
Можно было, конечно, выдать варианты слов в меню (использовать ShowMenuEx.js), но не хотелось бы его тянуть... Ещё пришлось бы обрезать варианты, т.к. в вертикальную менюху все бы не вошли (иногда их бывает очень много). Да и не знаю я, нужно ли это кому-нибудь, потому оставил как есть.
Спасибо за код!

opk44
Скрипт на странице подновил :)

Всех с наступающим Рождеством Христовым!

Posted: Mon Jan 06, 2020 8:44 pm
by DV
CommandPalette.js
Версия 0.5.3:
- теперь .lng-файл может быть не только UTF-16 LE (1200), но и ANSI (для латиницы);
- теперь под размер шрифта подстраивается не только ширина окна команд, но и высота поля фильтрации;
- в скрипт добавлен короткий FAQ.

Posted: Tue Jan 14, 2020 3:36 pm
by VladSh
Коллеги, а кто-то писал что-то по обработке json?
Есть массив определённых json-объектов, хотелось бы получить из них значения только определённых "полей", и получить ответ в новую вкладку для сохранения в csv.
Помню, где-то что-то подобное было...

Добавлено: Необходимость отпала, т.к. на NP++ и питоне это заняло всего 6 строк кода.

Posted: Fri Mar 27, 2020 10:41 am
by AZJIO
backupVersion.js, строка 26

Code: Select all

var getVersionPattern  = /(^|[^a-z])(version|ver\.?|v\.?)[ \t]*[-:=]?[ \t]*(\S+)/i;
в [-:=] нужно добавить "|", т.е. [-:=|] в AutoIt3 такой разделитель используется.

Keyboard.js, строка 91

Code: Select all

// AkelPad.SetSel(0, -1);
AkelPad.SendMessage(hWndEdit, 3044 /*AEM_KEYDOWN*/, 0x25 /*VK_LEFT*/, 0x02|0x04 /*AEMOD_SHIFT|AEMOD_CONTROL*/);
закомментировать и вставить высылку Ctrl+Shift+Left, т.е. выделение слова слева от курсора.

Posted: Sat Mar 28, 2020 4:40 am
by AZJIO
Я авторский скрипт немного поковырял. Сделал, чтобы язык определялся автоматически по последней букве, а также автоматическое выделение текста слева от курсора до первого разделителя (пробела, запятая и т.д.).

Code: Select all

// http://akelpad.sourceforge.net/en/plugins.php#Scripts
// Version: 1.1 ????
// Author: Shengalts Aleksander aka Instructor (изменял AZJIO)
//
//
// Description(1033): Convert keyboard layout or transliterate text.
//
// Arguments:
// -Type=Layout       -Convert keyboard layout.
// -Type=Translit     -Transliteration.
// -Direction=En->Ru  -From English to Russian.
// -Direction=Ru->En  -From Russian to English.
//
// Usage:
// "Convert layout" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout`)
// "Transliteration" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit`)
//
//
// Description(1049): Исправляет раскладку клавиатуры или транслитерирует текст.
//
// Аргументы:
// -Type=Layout       -Исправление раскладки клавиатуры.
// -Type=Translit     -Транслитерация.
//
// Применение:
// "Исправить набор" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout`)
// "Транслитерация" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit`)

//Arguments
var pType = AkelPad.GetArgValue("Type", "").toLowerCase();

//Include
if (!AkelPad.Include("ShowMenu.js")) WScript.Quit();

//Variables
var hMainWnd = AkelPad.GetMainWnd();
var hWndEdit = AkelPad.GetEditWnd();
var oSys = AkelPad.SystemFunction();
var hInstanceDLL = AkelPad.GetInstanceDll();
var nSelStart;
var nSelEnd;
var nFirstLine;
var pSelText;
var nFlagSel = 0;

if (hWndEdit) {
	if (pType == "") {
		var aItems = [];
		var nItem;

		//Show menu
		aItems[0] = ["Смена раскладки", MF_NORMAL, 0];
		aItems[1] = ["Транслит", MF_NORMAL, 1];

		if ((nItem = ShowMenu(aItems, POS_CARET, POS_CARET)) != -1) {
			if (nItem == 0) {
				pType = "layout";
			} else if (nItem == 1) {
				pType = "translit";
			}
		}
	}
	if (!pType) WScript.Quit();

	//Get selection
	nSelStart = AkelPad.GetSelStart();
	nSelEnd = AkelPad.GetSelEnd();
	if (nSelStart == nSelEnd) {
		AkelPad.SendMessage(hWndEdit, 3044 /*AEM_KEYDOWN*/ , 0x25 /*VK_LEFT*/ , 0x02 | 0x04 /*AEMOD_SHIFT|AEMOD_CONTROL*/ );
		nFlagSel = 1
	}
	pSelText = AkelPad.GetSelText();
	

	var pEnT = 'qwertyuiopasdfghjklzxcvbnm'
	var pRuT = 'ёйцукенгшщзхъфывапролджэячсмитьбю'
	var pLang = ''

	// Определяем язык по последней букве в обрабатываемом тексте, т.е. перебираем буквы справа налево
	for (i = pSelText.length - 1; i > -1; --i) {
		iPos = pRuT.indexOf(pSelText.charAt(i).toLowerCase())
		if (iPos == -1)
		{
			iPos = pEnT.indexOf(pSelText.charAt(i).toLowerCase())
			if (iPos !== -1) {
				pLang = 'en'
				break
			}
		} else {
			pLang = 'ru'
			break
		}
	}
	if (!pLang) {
		if (nFlagSel) AkelPad.SendMessage(hWndEdit, 3044 /*AEM_KEYDOWN*/ , 0x27 /*VK_RIGHT*/ , 0);
		WScript.Quit();
	}

	if (pType == "layout") {
		var pEn = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./~QWERTYUIOP{}ASDFGHJKL:" + '"' + "|ZXCVBNM<>?@#$^&"
		var pRu = 'ёйцукенгшщзхъфывапролджэячсмитьбю.ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,"№;:?'
		
// 		var pEn = "',.:;<>\"[]`{}~#@^$?&/|AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
// 		var pRu = "эбюЖжБЮЭхъёХЪЁ№\":;,?./ФфИиСсВвУуАаПпРрШшОоЛлДдЬьТтЩщЗзЙйКкЫыЕеГгМмЦцЧчНнЯя"
// Удаление дубликатов
		var pLetterUni = RemoveDuplicates(pSelText); // удаление дубликатов букв делает цикл замены с меньшим числом итераций
		var iPos;
		var i;
		if (pLang == 'ru') {
			for (i = 0; i < pLetterUni.length; ++i) {
				iPos = pRu.indexOf(pLetterUni.charAt(i))
				if (iPos != -1)
				{
					oPattern = new RegExp(EscRegExp(pLetterUni.charAt(i)), "g");
					pSelText = pSelText.replace(oPattern, pEn.charAt(iPos));
					// pSelText = pSelText.replace(pLetterUni.charAt(i), pEn.charAt(iPos)); // этот вариант если не удалять дубликаты, но для длинных текстов медленнее
				}
			}
		} else if (pLang == 'en') {
			if (pLetterUni.indexOf('.') != -1) pLetterUni = '.' + pLetterUni.replace('.', ''); // добавление очерёдности замен / -> . -> ю
			if (pLetterUni.indexOf(',') != -1) pLetterUni = ',' + pLetterUni.replace(',', ''); // добавление очерёдности замен ? -> ,  -> б
			for (i = 0; i < pLetterUni.length; ++i) {
				iPos = pEn.indexOf(pLetterUni.charAt(i))
				if (iPos != -1)
				{
					oPattern = new RegExp(EscRegExp(pLetterUni.charAt(i)), "g");
					pSelText = pSelText.replace(oPattern, pRu.charAt(iPos));
					// pSelText = pSelText.replace(pLetterUni.charAt(i), pRu.charAt(iPos));
				}
			}
		}

		
	} else if (pType == "translit") {
		if (pLang == 'en') {
			// Transliteration Latin->Cyrillic
			var pArraySourceMulti = new Array("jo", "yo", "\xF6", "ch", "w", "shh", "sh", "je", "\xE4", "ju", "yu", "\xFC", "ja", "ya", "zh", "ts");
			var pArrayTargetMulti = new Array("ё", "ё", "ё", "ч", "щ", "щ", "ш", "э", "э", "ю", "ю", "ю", "я", "я", "ж", "ц");
			var pArraySourceSingle = new Array("c", "h", "x", "j", "'", "y", "#", "`", "a", "b", "v", "g", "d", "e", "z", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f");
			var pArrayTargetSingle = new Array("ц", "х", "х", "й", "ь", "ы", "ъ", "ъ", "а", "б", "в", "г", "д", "е", "з", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф");

			pSelText = Transliterate(pSelText, pArraySourceMulti, pArrayTargetMulti);
			pSelText = Transliterate(pSelText, pArraySourceSingle, pArrayTargetSingle);
		} else if (pLang == 'ru') {
			// Transliteration Cyrillic->Latin
			var pArraySource = new Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я");
			var pArrayTarget = new Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "ts", "ch", "sh", "shh", "`", "y", "'", "je", "ju", "ja");

			pSelText = Transliterate(pSelText, pArraySource, pArrayTarget);
		}
	}
	AkelPad.ReplaceSel(pSelText, -2);
 	if (nFlagSel) AkelPad.SendMessage(hWndEdit, 3044 /*AEM_KEYDOWN*/ , 0x27 /*VK_RIGHT*/ , 0);
}

//Functions

// Удаление дубликатов с учётом регистра
function RemoveDuplicates(pText) {
	var obj = new Object();
	var i;
	var pTextNew = "";

	for (i = 0; i < pText.length; ++i) {
		if (!obj[pText.charAt(i)])
		{
			obj[pText.charAt(i)] = true
			pTextNew += pText.charAt(i);
		}
	}
	return pTextNew;
}


function Transliterate(pText, pArraySource, pArrayTarget) {
	var oPattern;
	var i;

	for (i = 0; i < pArraySource.length; ++i) {
		oPattern = new RegExp(EscRegExp(pArraySource[i]), "g");
		pText = pText.replace(oPattern, pArrayTarget[i]);
	}
	for (i = 0; i < pArraySource.length; ++i) {
		oPattern = new RegExp(EscRegExp(pArraySource[i]), "gi");
		pText = pText.replace(oPattern, pArrayTarget[i].substr(0, 1).toUpperCase() + pArrayTarget[i].substr(1));
	}
	return pText;
}

function EscRegExp(pString) {
	return pString.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
}


пока не пойму, почему строка //a. и //a при конвертировании дают разный вариант ююфю и ..ф соответственно. Разгадал, двойная замена. Оптимизировал, точку и запятую переместил в начало списка замен, чтобы исключить двойную замену. Проверил, что только 2 символа были подвержены этой проблеме.

вариант как было раньше, но с автоопределением направления

Code: Select all

// http://akelpad.sourceforge.net/en/plugins.php#Scripts
// Version: 1.1 ????
// Author: Shengalts Aleksander aka Instructor (изменял AZJIO)
//
//
// Description(1033): Convert keyboard layout or transliterate text.
//
// Arguments:
// -Type=Layout       -Convert keyboard layout.
// -Type=Translit     -Transliteration.
// -Direction=En->Ru  -From English to Russian.
// -Direction=Ru->En  -From Russian to English.
//
// Usage:
// "Convert layout" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout`)
// "Transliteration" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit`)
//
//
// Description(1049): Исправляет раскладку клавиатуры или транслитерирует текст.
//
// Аргументы:
// -Type=Layout       -Исправление раскладки клавиатуры.
// -Type=Translit     -Транслитерация.
//
// Применение:
// "Исправить набор" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout`)
// "Транслитерация" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit`)

//Arguments
var pType = AkelPad.GetArgValue("Type", "").toLowerCase();

//Include
if (!AkelPad.Include("ShowMenu.js")) WScript.Quit();

//Variables
var hMainWnd = AkelPad.GetMainWnd();
var hWndEdit = AkelPad.GetEditWnd();
var oSys = AkelPad.SystemFunction();
var hInstanceDLL = AkelPad.GetInstanceDll();
var nSelStart;
var nSelEnd;
var nFirstLine;
var pSelText;
var nFlagSel = 0;

if (hWndEdit) {
	if (pType == "") {
		var aItems = [];
		var nItem;

		//Show menu
		aItems[0] = ["Смена раскладки", MF_NORMAL, 0];
		aItems[1] = ["Транслит", MF_NORMAL, 1];

		if ((nItem = ShowMenu(aItems, POS_CARET, POS_CARET)) != -1) {
			if (nItem == 0) {
				pType = "layout";
			} else if (nItem == 1) {
				pType = "translit";
			}
		}
	}
	if (!pType) WScript.Quit();

	//Get selection
	nSelStart = AkelPad.GetSelStart();
	nSelEnd = AkelPad.GetSelEnd();
	if (nSelStart == nSelEnd) {
		AkelPad.SendMessage(hWndEdit, 3044 /*AEM_KEYDOWN*/ , 0x25 /*VK_LEFT*/ , 0x02 | 0x04 /*AEMOD_SHIFT|AEMOD_CONTROL*/ );
		nFlagSel = 1
	}
	pSelText = AkelPad.GetSelText();
	

	var pEnT = 'qwertyuiopasdfghjklzxcvbnm'
	var pRuT = 'ёйцукенгшщзхъфывапролджэячсмитьбю'
	var pLang = ''

	// Определяем язык по последней букве в обрабатываемом тексте, т.е. перебираем буквы справа налево
	for (i = pSelText.length - 1; i > -1; --i) {
		iPos = pRuT.indexOf(pSelText.charAt(i).toLowerCase())
		if (iPos == -1)
		{
			iPos = pEnT.indexOf(pSelText.charAt(i).toLowerCase())
			if (iPos !== -1) {
				pLang = 'en'
				break
			}
		} else {
			pLang = 'ru'
			break
		}
	}
	if (!pLang) {
		if (nFlagSel) AkelPad.SendMessage(hWndEdit, 3044 /*AEM_KEYDOWN*/ , 0x27 /*VK_RIGHT*/ , 0);
		WScript.Quit();
	}

	if (pType == "layout") {
		var iPos;
		var i;
		if (pLang == 'ru') {
			// Convert keyboard layout Ru->En
			var pArraySource=new Array("\"", ":", ";", "?", ",", "/", ".", "э", "б", "ю", "Ж", "ж", "Б", "Ю", "Э",  "х", "ъ", "ё", "Х", "Ъ", "Ё", "№", "Ф", "ф", "И", "и", "С", "с", "В", "в", "У", "у", "А", "а", "П", "п", "Р", "р", "Ш", "ш", "О", "о", "Л", "л", "Д", "д", "Ь", "ь", "Т", "т", "Щ", "щ", "З", "з", "Й", "й", "К", "к", "Ы", "ы", "Е", "е", "Г", "г", "М", "м", "Ц", "ц", "Ч", "ч", "Н", "н", "Я", "я");
			var pArrayTarget=new Array("@",  "^", "$", "&", "?", "|", "/", "'", ",", ".", ":", ";", "<", ">", "\"", "[", "]", "`", "{", "}", "~", "#", "A", "a", "B", "b", "C", "c", "D", "d", "E", "e", "F", "f", "G", "g", "H", "h", "I", "i", "J", "j", "K", "k", "L", "l", "M", "m", "N", "n", "O", "o", "P", "p", "Q", "q", "R", "r", "S", "s", "T", "t", "U", "u", "V", "v", "W", "w", "X", "x", "Y", "y", "Z", "z");
			
			pSelText=ConvertLayout(pSelText, pArraySource, pArrayTarget);
		} else if (pLang == 'en') {

			// Convert keyboard layout En->Ru
			var pArraySource=new Array("'", ",", ".", ":", ";", "<", ">", "\"", "[", "]", "`", "{", "}", "~", "#", "@",  "^", "$", "?", "&", "/", "|", "A", "a", "B", "b", "C", "c", "D", "d", "E", "e", "F", "f", "G", "g", "H", "h", "I", "i", "J", "j", "K", "k", "L", "l", "M", "m", "N", "n", "O", "o", "P", "p", "Q", "q", "R", "r", "S", "s", "T", "t", "U", "u", "V", "v", "W", "w", "X", "x", "Y", "y", "Z", "z");
			var pArrayTarget=new Array("э", "б", "ю", "Ж", "ж", "Б", "Ю", "Э",  "х", "ъ", "ё", "Х", "Ъ", "Ё", "№", "\"", ":", ";", ",", "?", ".", "/", "Ф", "ф", "И", "и", "С", "с", "В", "в", "У", "у", "А", "а", "П", "п", "Р", "р", "Ш", "ш", "О", "о", "Л", "л", "Д", "д", "Ь", "ь", "Т", "т", "Щ", "щ", "З", "з", "Й", "й", "К", "к", "Ы", "ы", "Е", "е", "Г", "г", "М", "м", "Ц", "ц", "Ч", "ч", "Н", "н", "Я", "я");
			
			pSelText=ConvertLayout(pSelText, pArraySource, pArrayTarget);
		}

		
	} else if (pType == "translit") {
		if (pLang == 'en') {
			// Transliteration Latin->Cyrillic
			var pArraySourceMulti = new Array("jo", "yo", "\xF6", "ch", "w", "shh", "sh", "je", "\xE4", "ju", "yu", "\xFC", "ja", "ya", "zh", "ts");
			var pArrayTargetMulti = new Array("ё", "ё", "ё", "ч", "щ", "щ", "ш", "э", "э", "ю", "ю", "ю", "я", "я", "ж", "ц");
			var pArraySourceSingle = new Array("c", "h", "x", "j", "'", "y", "#", "`", "a", "b", "v", "g", "d", "e", "z", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f");
			var pArrayTargetSingle = new Array("ц", "х", "х", "й", "ь", "ы", "ъ", "ъ", "а", "б", "в", "г", "д", "е", "з", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф");

			pSelText = Transliterate(pSelText, pArraySourceMulti, pArrayTargetMulti);
			pSelText = Transliterate(pSelText, pArraySourceSingle, pArrayTargetSingle);
		} else if (pLang == 'ru') {
			// Transliteration Cyrillic->Latin
			var pArraySource = new Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я");
			var pArrayTarget = new Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "ts", "ch", "sh", "shh", "`", "y", "'", "je", "ju", "ja");

			pSelText = Transliterate(pSelText, pArraySource, pArrayTarget);
		}
	}
	AkelPad.ReplaceSel(pSelText, -2);
 	if (nFlagSel) AkelPad.SendMessage(hWndEdit, 3044 /*AEM_KEYDOWN*/ , 0x27 /*VK_RIGHT*/ , 0);
}

//Functions

// Удаление дубликатов с учётом регистра
function ConvertLayout(pText, pArraySource, pArrayTarget)
{
  var oPattern;
  var i;

  for (i=0; i < pArraySource.length; ++i)
  {
    oPattern=new RegExp(EscRegExp(pArraySource[i]), "g");
    pText=pText.replace(oPattern, pArrayTarget[i]);
  }
  return pText;
}


function Transliterate(pText, pArraySource, pArrayTarget) {
	var oPattern;
	var i;

	for (i = 0; i < pArraySource.length; ++i) {
		oPattern = new RegExp(EscRegExp(pArraySource[i]), "g");
		pText = pText.replace(oPattern, pArrayTarget[i]);
	}
	for (i = 0; i < pArraySource.length; ++i) {
		oPattern = new RegExp(EscRegExp(pArraySource[i]), "gi");
		pText = pText.replace(oPattern, pArrayTarget[i].substr(0, 1).toUpperCase() + pArrayTarget[i].substr(1));
	}
	return pText;
}

function EscRegExp(pString) {
	return pString.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
}


Можно не изменяя старый формат, добавить параметр "автоопределения направления". А также можно ещё добавать режим "инвертирование". Сейчас приdtn -> привет, а инвертирование подразумевает приdtn -> ghbвет.

Posted: Fri May 01, 2020 10:18 pm
by AZJIO
DV
На счёт CommandPalette.js - я нашёл пример на PureBasic для раскраски текста внутри пункта для ListView, то есть для списка-таблицы. Было бы удобно если искомый текст в пунктах был бы подсвечен.

Posted: Sat May 02, 2020 2:50 pm
by DV
AZJIO wrote:На счёт CommandPalette.js - я нашёл пример на PureBasic для раскраски текста внутри пункта для ListView, то есть для списка-таблицы
Сейчас в скрипте для списка используется ListBox. Для ListView придётся переписывать часть кода - не уверен, что захочу этим заниматься в ближайшее время.

Сравнение

Posted: Wed May 06, 2020 2:56 pm
by Arhaall
Господа, может у кого-нибудь завалялся скрипт сравнения двух текстов в одной вкладке с пометкой различий и без привлечения сторонних программ как в notepad++? Ну или из двух вкладок.
Вещь нужная, а найти нигде не могу.

Re: Сравнение

Posted: Wed May 06, 2020 6:33 pm
by opk44
Arhaall wrote:Господа, может у кого-нибудь завалялся скрипт сравнения двух текстов в одной вкладке с пометкой различий и без привлечения сторонних программ как в notepad++? Ну или из двух вкладок.
Вещь нужная, а найти нигде не могу.
Если ключевое требование - это "и без привлечения сторонних программ", то такого не встречал. Имеющиеся "скриптовые" решения опираются на использование WinMerge:
1) winMergeTabs.js
2) WinMerge.js
Сам пользуюсь первым. Если решите пользоваться вторым, то имейте в виду, что более новая версия скрипта есть в составе архив-коллекции VladSh.zip

Re: Сравнение

Posted: Wed May 06, 2020 11:31 pm
by Arhaall
opk44 wrote:
Arhaall wrote:Господа, может у кого-нибудь завалялся скрипт сравнения двух текстов в одной вкладке с пометкой различий и без привлечения сторонних программ как в notepad++? Ну или из двух вкладок.
Вещь нужная, а найти нигде не могу.
Если ключевое требование - это "и без привлечения сторонних программ", то такого не встречал. Имеющиеся "скриптовые" решения опираются на использование WinMerge:
1) winMergeTabs.js
2) WinMerge.js
Сам пользуюсь первым. Если решите пользоваться вторым, то имейте в виду, что более новая версия скрипта есть в составе архив-коллекции VladSh.zip
Не то чтобы прямо фатально, но очень предпочтительно было бы именно без стороннего софта. В том же notepad++ такое реализовано, наверняка возможно реализовать и здесь. А значит с большой вероятностью кто-нибудь да пробовал сам или ему такое попадалось.

Re: Сравнение

Posted: Wed May 06, 2020 11:42 pm
by Arhaall
opk44 wrote:Сам пользуюсь первым. Если решите пользоваться вторым, то имейте в виду, что более новая версия скрипта есть в составе архив-коллекции VladSh.zip
За сборку скриптов спасибо - может пригодится.