-
-
Save Infocatcher/6200149 to your computer and use it in GitHub Desktop.
| // 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*/ | |
| ); | |
| } | |
| } |
Пока вот так: http://akelpad.sourceforge.net/forum/viewtopic.php?p=25100#25100
Потому как я не понимаю, что можно исправить со стороны скрипта. Разве что как-то сообщить AkelPad'у, что файл был удален...
Исправлено в разрабатываемой версии AkelPad'а:
http://akelpad.sourceforge.net/forum/viewtopic.php?p=25248#25248
Также теперь используется код из этого примера, так что редактору теперь сообщается, что файл удален (и дополнительных сообщений больше не будет).
Бесит промпт, но совсем без него - нельзя.
Можно ли приделать ключ для молчаливого удаления файла и приделать оповещение в имя вкладки (и ещё лучше использовать приписку "!" вместо дефолтной приписки "*" для обозначения локальных изменений в открытом файле, если это возможно)?
Ключ уже есть:
Call("Scripts::Main", 1, "deleteCurrentFile.js", "-confirm=false")
Насчет переименования вкладки не уверен, автоматика скорее всего обновит обратно после переключения вкладок.
Но можно пометить документ как измененный.
У меня скрипт корректно сообщает про «File already deleted», а зависает уже после перехода фокуса на сам редактор, где срабатывает настройка «Следить за изменением файла» в виде сообщения «Невозможно открыть файл "путь/к/файлу".»