Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »


Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher wrote:То есть если реализовать некий гипотетический контрол, не делающий прокрутку, то что в нем будет после Ctrl+Home/Ctrl+End?
Что будет можно посмотреть так:

Code: Select all

AkelPad.SendMessage(hWndEdit, 3185 /*AEM_LOCKSCROLL*/, 3 /*SB_BOTH*/, true);
AkelPad.SetSel(-1, -1);
AkelPad.SendMessage(hWndEdit, 3185 /*AEM_LOCKSCROLL*/, 3 /*SB_BOTH*/, false);

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor
Мне нагляднее с

Code: Select all

new ActiveXObject("WScript.shell").SendKeys("^{END}");
:)

Заодно вспомнил одну идею.
Как сохранить, а потом восстановить горизонтальную прокрутку?

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Еще более тестовая: toggleComments-experimental.js
Много чего <del>сломано</del> переписано, кое-где изменена логика работы.
Реализована предварительная обработка строк перед поиском блочных комментариев.
Реализовано вырезание простых вариантов регулярных выражений в js перед поиском.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

The following code crashes AkelPad:

Code: Select all

AkelPad.SendMessage(AkelPad.GetMainWnd(), 1178 /*AKD_WAITKEYBOARD*/, 0, 0);
Why?

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

And the following code does not work:

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 3044 /*AEM_KEYDOWN*/, 0x09 /*VK_TAB*/, 0);

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher wrote:Как сохранить, а потом восстановить горизонтальную прокрутку?
EM_GETSCROLLPOS, EM_SETSCROLLPOS.

KDJ
AKD_WAITKEYBOARD == 1312

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 0x102 /*WM_CHAR*/, 0x09 /*VK_TAB*/, 0);
or

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 3044 /*AEM_KEYDOWN*/, 0x09 /*VK_TAB*/, 0x4 /*AEMOD_CONTROL*/);

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:EM_GETSCROLLPOS, EM_SETSCROLLPOS.
Ммм...

Code: Select all

var hWndEdit = AkelPad.GetEditWnd();
var lpPoint = AkelPad.MemAlloc(8 /*sizeof(POINT)*/);
if(lpPoint) {
	AkelPad.SendMessage(hWndEdit, 1245 /*EM_GETSCROLLPOS*/, 0, lpPoint);
	WScript.Echo(AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/) + "\n" + AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/));
	AkelPad.SetSel(-1, -1);
	AkelPad.SendMessage(hWndEdit, 1246 /*EM_SETSCROLLPOS*/, 0, lpPoint);
	AkelPad.MemFree(lpPoint);
}
.
А мне почему-то казалось, что горизонтальную прокрутку при этом не восстанавливает.
Пожалуй, еще коррекция нужна, чтобы не оказалось, что текст не видно. :?

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor, thanks.
But, in your script SelNextWord.js, I have read:
AkelPad.SendMessage(hMainWnd, 1178 /*AKD_WAITKEYBOARD*/, 0, 0);

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

KDJ
In ReplaceReplicateCharsWithOne.js in regexp second brackets are redundant. It is enough first one /(.)\1+/

PS. It seems we I answered that question simultaneously ;)

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FeyFre
Yes, that's right. I removed this script.

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

KDJ, no, no, do not delete it. It still can be useful for someone else.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FeyFre
You're right. But I can increase the functionality of the script.
I'll think about it. Thank you.

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

KDJ wrote:But, in your script ...
Corrected.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

runScript.js
Arguments now stored for each script.

goToLongestLine.js
Added Ctrl+PageUp and Ctrl+PageDown hotkeys – go to start/end of document.
Locked