Last active

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

AkelPad: delete current file, for Scripts plugin

View deleteCurrentFile.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
// https://gist.github.com/Infocatcher/6200149
 
// Version: 0.1.2 - 2014-07-17
// Author: Infocatcher
//// Delete current file
 
// Usage:
// Call("Scripts::Main", 1, "deleteCurrentFile.js")
 
var confirm = AkelPad.GetArgValue("confirm", true);
var curFile = AkelPad.GetEditFile(0);
if(curFile) {
var hMainWnd = AkelPad.GetMainWnd();
var oSys = AkelPad.SystemFunction();
if(oSys.Call("kernel32::GetFileAttributes" + _TCHAR, curFile) != -1) {
if(
!confirm
|| AkelPad.MessageBox(
hMainWnd,
"Delete file?\n" + curFile,
WScript.ScriptName,
33 /*MB_OKCANCEL|MB_ICONQUESTION*/
) == 1 /*IDOK*/
) {
if(oSys.Call("kernel32::DeleteFile" + _TCHAR, curFile)) {
var lpFileTime = AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 133 /*FI_FILETIME*/, 0);
AkelPad.MemCopy(lpFileTime + 0 /*offsetof(FILETIME, dwLowDateTime)*/, 0, 3 /*DT_DWORD*/);
AkelPad.MemCopy(lpFileTime + 4 /*offsetof(FILETIME, dwHighDateTime)*/, 0, 3 /*DT_DWORD*/);
}
}
}
else {
AkelPad.MessageBox(
hMainWnd,
"File already deleted:\n" + curFile,
WScript.ScriptName,
64 /*MB_OK|MB_ICONINFORMATION*/
);
}
}
Drugoy commented

Если сделать 2 вызова подряд, то второй вызов вешает акелпад, т.к. файл был уже удалён после первого вызова.

Owner

Если сделать 2 вызова подряд, то второй вызов вешает акелпад, т.к. файл был уже удалён после первого вызова.

У меня скрипт корректно сообщает про «File already deleted», а зависает уже после перехода фокуса на сам редактор, где срабатывает настройка «Следить за изменением файла» в виде сообщения «Невозможно открыть файл "путь/к/файлу".»

Owner

Пока вот так: http://akelpad.sourceforge.net/forum/viewtopic.php?p=25100#25100
Потому как я не понимаю, что можно исправить со стороны скрипта. Разве что как-то сообщить AkelPad'у, что файл был удален...

Owner

Исправлено в разрабатываемой версии AkelPad'а:
http://akelpad.sourceforge.net/forum/viewtopic.php?p=25248#25248

Также теперь используется код из этого примера, так что редактору теперь сообщается, что файл удален (и дополнительных сообщений больше не будет).

Бесит промпт, но совсем без него - нельзя.
Можно ли приделать ключ для молчаливого удаления файла и приделать оповещение в имя вкладки (и ещё лучше использовать приписку "!" вместо дефолтной приписки "*" для обозначения локальных изменений в открытом файле, если это возможно)?

Owner

Ключ уже есть:

Call("Scripts::Main", 1, "deleteCurrentFile.js", "-confirm=false")

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.