13.06.2010, 15:54 | #1 |
MCTS
|
AXGoBack - скрипт для возврата к предыдущей позиции курсора в редакторе
ver. 1.0.0 beta, 13.06.2010
Возможности: - Позволяет вернуться к позиции курсора в редакторе, предварительно сохраненной в кэше скриптом AXGoToDeclarationXRef ver. 1.0.3 beta (AXGoToDeclarationXRef - утилита перехода к объявлению переменной) или более поздней с включенным параметром #SaveGoBackPosition. - Работает в AX 3, AX 4, AX 2009. Установка: - Добавить метод в класс EditorScripts и скомпилировать. После этого в контекстном подменю редактора Scripts/addIns появится пункт aaAXGoBack. Примечание: - Данный скрипт использует реализацию отложенного вызова функции перехода к позиции курсора из скрипта AXGoToDeclarationXRef ver. 1.0.3 beta (AXGoToDeclarationXRef - утилита перехода к объявлению переменной) или более поздней. Спасибо Alex_KD и kashperuk за некоторые использованные идеи. Сообщения об ошибках, конструктивная критика и идеи по доработке приветствуются. X++: //AXGoBack ver. 1.0.0 beta (for AX 3, AX 4, AX 2009), 13.06.2010 //Developed by alex55 (AXforum.info), 13.06.2010 //Home page: axforum.info/forums/showthread.php?p=226663 //Thanks to Alex_KD and kashperuk from AXForum.info for some used ideas void aaAXGoBack(Editor e) { #AOT #if.ReferencesPath #define.AX4OrAX5 #endif #define.ThisClassCache('AXGoToDeclarationXRefClass') #define.ParamsCache('AXGoToDeclarationXRefParams') #define.GoBackParamsCache('AXGoBackParams') SysGlobalCache globalCache; Column editorColumn; Line editorLine; TreeNodePath methodNodePath; TreeNode treeNode; ; globalCache = infolog.globalCache(); if (globalCache) { [methodNodePath, editorLine, editorColumn] = globalCache.get(#GoBackParamsCache, #GoBackParamsCache, conNull()); treeNode = TreeNode::findNode(methodNodePath); if (treeNode) { #if.AX4OrAX5 treeNode.AOTedit(editorLine, editorColumn); #endif #ifnot.AX4OrAX5 infolog.globalCache().set(#ThisClassCache, #ThisClassCache, this); infolog.globalCache().set(#ParamsCache, #ParamsCache, [methodNodePath, editorLine, editorColumn]); infolog.addTimeOut(this, methodstr(EditorScripts, aaAXGoToDeclarationXRef), 10, false); #endif } globalCache.clear(#GoBackParamsCache); } return; } |
|
|
За это сообщение автора поблагодарили: Logger (4), Red Stranger (1), coolibin (1), gl00mie (4). |
14.06.2010, 16:34 | #2 |
Участник
|
Спасибо. Попробую.
Иногда моск взрывает от необходимости прокручивать код, после перещелка между методами. :-)
__________________
Функциональное тестирование сайтов |
|
17.02.2012, 00:02 | #3 |
MCTS
|
Небольшое логическое продолжение по итогам активного использования hot-keys для скриптов:
AXSaveLocation ver. 1.0.0 beta (for AX4, AX5), 16.02.2012 Назначение: Скрипт для сохранения текущей позиции курсора в редакторе с целью последующего возврата к ней скриптом AXGoBack. X++: //AXSaveLocation ver. 1.0.0 beta (for AX4, AX5), 16.02.2012 //Developed by alex55 (AXforum.info) //Home page: axforum.info/forums/showthread.php?p=226663 void aaAXSaveLocation(Editor e) { #define.SaveLocationParamsCache('AXSaveLocationParams') Column editorColumn; Line editorLine; TreeNodePath methodNodePath; //Initial method path ; editorLine = e.currentLineNo() + 1; editorColumn = e.ColumnNo() + 1; methodNodePath = e.path(); infolog.globalCache().set(#SaveLocationParamsCache, #SaveLocationParamsCache, [methodNodePath, editorLine, editorColumn]); return; } AXGoBack ver. 1.0.1 beta (for AX4, AX5), 16.02.2012 Доработано: - Возможность однократного возврата после перехода к объявлению переменной объединена с возможностью многократного возврата к позиции курсора, сохраненной скриптом AXSaveLocation. Думаю в таком варианте будет удобно использовать на общем hot-key. - Убрана поддержка AX3. X++: //AXGoBack ver. 1.0.1 beta (for AX4, AX5), 16.02.2012 //Developed by alex55 (AXforum.info) //Home page: axforum.info/forums/showthread.php?p=226663 //Thanks to Alex_KD and kashperuk from AXForum.info for some used ideas void aaAXGoBack(Editor e) { #AOT #if.ReferencesPath #define.AX4OrAX5 #endif #define.ThisClassCache('AXGoToDeclarationXRefClass') #define.ParamsCache('AXGoToDeclarationXRefParams') #define.GoBackParamsCache('AXGoBackParams') #define.SaveLocationParamsCache('AXSaveLocationParams') SysGlobalCache globalCache; Column editorColumn; Line editorLine; TreeNodePath methodNodePath; TreeNode treeNode; ; globalCache = infolog.globalCache(); if (globalCache) { [methodNodePath, editorLine, editorColumn] = globalCache.get(#GoBackParamsCache, #GoBackParamsCache, conNull()); treeNode = TreeNode::findNode(methodNodePath); if (treeNode) { #if.AX4OrAX5 treeNode.AOTedit(editorLine, editorColumn); #endif globalCache.clear(#GoBackParamsCache); } else { [methodNodePath, editorLine, editorColumn] = globalCache.get(#SaveLocationParamsCache, #SaveLocationParamsCache, conNull()); treeNode = TreeNode::findNode(methodNodePath); if (treeNode) { #if.AX4OrAX5 treeNode.AOTedit(editorLine, editorColumn); #endif } } } return; } |
|