Ïêϸ˵Ã÷
1. ¶¨Òå setupEditorActions
º¯Êý
function setupEditorActions(editor) {
- ×÷ÓÃ: ÕâÊÇÒ»¸öÉèÖÃ±à¼Æ÷²Ù×÷µÄº¯Êý£¬½ÓÊÜÒ»¸ö
editor
¶ÔÏó×÷Ϊ²ÎÊý£¬¸Ã¶ÔÏóÊÇ Monaco Editor µÄʵÀý¡£
2. ¶¨Òå addAction
º¯Êý
function addAction(label, order, textToInsert) {
editor.addAction({
id: 'menu-item-' + label,
label: label,
contextMenuGroupId: 'custom',
contextMenuOrder: order,
run: function (ed) {
// ²åÈëÎı¾µÄÂß¼
const position = ed.getPosition();
ed.executeEdits('', [{
range: new monaco.Range(position.lineNumber, position.column, position.lineNumber, position.column),
text: textToInsert,
forceMoveMarkers: true
}]);
}
});
}
- ×÷ÓÃ: Õâ¸öº¯ÊýÓÃÓÚÏò±à¼Æ÷Ìí¼Ó×Ô¶¨ÒåÓÒ¼ü²Ëµ¥Ïî¡£
- ²ÎÊý:
label
: ²Ëµ¥ÏîµÄÏÔʾÎı¾¡£order
: ²Ëµ¥ÏîÔÚ×éÖеÄ˳Ðò¡£textToInsert
: µ±µã»÷²Ëµ¥ÏîʱҪ²åÈëµÄÎı¾¡£
editor.addAction
: Ìí¼ÓÒ»¸ö×Ô¶¨Òå²Ù×÷µ½±à¼Æ÷¡£
id
: ²Ù×÷µÄΨһ±êʶ·û£¬Í¨³£ÊDz˵¥ÏîµÄ±êÇ©¼Óǰ׺¡£label
: ²Ëµ¥ÏîµÄÏÔʾÎı¾¡£contextMenuGroupId
: ²Ëµ¥ÏîËùÔÚµÄ×飬ÕâÀïÉèÖÃΪ 'custom'
¡£contextMenuOrder
: ²Ëµ¥ÏîÔÚ×éÖеÄ˳Ðò¡£run
: µã»÷²Ëµ¥ÏîʱִÐеĺ¯Êý¡£ÔÚÕâ¸öº¯ÊýÖУ¬»ñÈ¡µ±Ç°¹â±êλÖò¢²åÈëÖ¸¶¨µÄÎı¾¡£
getPosition
: »ñÈ¡µ±Ç°¹â±êµÄλÖá£executeEdits
: ÔÚÖ¸¶¨Î»ÖòåÈëÎı¾¡£
new monaco.Range
: ¶¨Òå²åÈëÎı¾µÄ·¶Î§£¬ÕâÀïÊÇ´Óµ±Ç°¹â±êλÖÿªÊ¼£¬·¶Î§ÎªÁ㣨¼´²åÈëÔÚ¹â±êλÖã©¡£text
: Òª²åÈëµÄÎı¾¡£forceMoveMarkers
: ÊÇ·ñÇ¿ÖÆÒÆ¶¯±ê¼Ç¡£
3. ¶¨Òå UIControl
º¯Êý
function UIControl(label, order) {
editor.addAction({
id: 'menu-item-' + label,
label: label,
contextMenuGroupId: 'custom',
contextMenuOrder: order,
run: function (ed) {
// ²åÈëÎı¾µÄÂß¼
aiwork.showFastUIMenu();
}
});
}
- ×÷ÓÃ: Õâ¸öº¯ÊýÓÃÓÚÏò±à¼Æ÷Ìí¼ÓÒ»¸ö×Ô¶¨ÒåÓÒ¼ü²Ëµ¥Ï¸Ã²Ëµ¥ÏîÖ´ÐÐÌØ¶¨µÄÃüÁÀýÈçµ÷ÓÃij¸ö UI ¿ØÖƲ˵¥£©¡£
- ²ÎÊý:
label
: ²Ëµ¥ÏîµÄÏÔʾÎı¾¡£order
: ²Ëµ¥ÏîÔÚ×éÖеÄ˳Ðò¡£
editor.addAction
: Ìí¼ÓÒ»¸ö×Ô¶¨Òå²Ù×÷µ½±à¼Æ÷¡£
id
: ²Ù×÷µÄΨһ±êʶ·û£¬Í¨³£ÊDz˵¥ÏîµÄ±êÇ©¼Óǰ׺¡£label
: ²Ëµ¥ÏîµÄÏÔʾÎı¾¡£contextMenuGroupId
: ²Ëµ¥ÏîËùÔÚµÄ×飬ÕâÀïÉèÖÃΪ 'custom'
¡£contextMenuOrder
: ²Ëµ¥ÏîÔÚ×éÖеÄ˳Ðò¡£run
: µã»÷²Ëµ¥ÏîʱִÐеĺ¯Êý¡£ÔÚÕâ¸öº¯ÊýÖУ¬µ÷Óà aiwork.showFastUIMenu()
À´Ö´ÐÐÌØ¶¨µÄÃüÁî¡£
aiwork.showFastUIMenu
: ¼ÙÉèÕâÊÇÒ»¸öÒѾ¶¨ÒåµÄº¯Êý£¬ÓÃÓÚÏÔʾij¸ö¿ìËÙ UI ²Ëµ¥¡£
4. µ÷ÓÃ UIControl
º¯Êý
UIControl('¿Ø¼þµ÷ÓÃ', 0);
- ×÷ÓÃ: µ÷ÓÃ
UIControl
º¯ÊýÀ´Ìí¼ÓÒ»¸öÃûΪ ¡°¿Ø¼þµ÷Óá± µÄÓÒ¼ü²Ëµ¥Ï²¢ÉèÖÃÆäÔÚ×éÖеÄ˳ÐòΪ 0
¡£
5. µ÷ÓÃ addAction
º¯Êý
addAction('if...', 1,
`
if(){
}
`
);
- ×÷ÓÃ: µ÷ÓÃ
addAction
º¯ÊýÀ´Ìí¼ÓÒ»¸öÃûΪ ¡°if¡¡± µÄÓÒ¼ü²Ëµ¥Ï²¢ÉèÖÃÆäÔÚ×éÖеÄ˳ÐòΪ 1
¡£ - ²åÈëµÄÎı¾:
if(){
}
6. µ÷ÓÃ addAction
º¯Êý
addAction('if...else', 2,
`
if(){
}else{
}
`
);
- ×÷ÓÃ: µ÷ÓÃ
addAction
º¯ÊýÀ´Ìí¼ÓÒ»¸öÃûΪ ¡°if¡else¡± µÄÓÒ¼ü²Ëµ¥Ï²¢ÉèÖÃÆäÔÚ×éÖеÄ˳ÐòΪ 2
¡£ - ²åÈëµÄÎı¾:
if(){
}else{
}
7. µ÷ÓÃ addAction
º¯Êý
addAction('for..i', 3,
`
for(let i=0;i<10;i++){
}
`
);
- ×÷ÓÃ: µ÷ÓÃ
addAction
º¯ÊýÀ´Ìí¼ÓÒ»¸öÃûΪ ¡°for¡i¡± µÄÓÒ¼ü²Ëµ¥Ï²¢ÉèÖÃÆäÔÚ×éÖеÄ˳ÐòΪ 3
¡£ - ²åÈëµÄÎı¾:
for(let i=0;i<10;i++){
}
×ܽá
- Õâ¶Î´úÂëͨ¹ý
setupEditorActions
º¯ÊýÀ´ÉèÖÃ±à¼Æ÷µÄÓÒ¼ü²Ëµ¥Ïî¡£ addAction
º¯ÊýÓÃÓÚÌí¼Ó²åÈëÌØ¶¨´úÂëµÄ²Ëµ¥Ïî¡£UIControl
º¯ÊýÓÃÓÚÌí¼ÓÖ´ÐÐÌØ¶¨ÃüÁÀýÈçÏÔʾ UI ²Ëµ¥£©µÄ²Ëµ¥Ïî¡£- ͨ¹ý
editor.addAction
·½·¨Ïò±à¼Æ÷Ìí¼Ó×Ô¶¨Òå²Ù×÷¡£ - ÿ¸ö²Ëµ¥Ïî¶¼ÓÐΨһµÄ
id
ºÍÏÔʾµÄ label
¡£ contextMenuGroupId
ÓÃÓÚÖ¸¶¨²Ëµ¥ÏîËùÔÚµÄ×飬ÕâÀïͳһΪ 'custom'
¡£contextMenuOrder
ÓÃÓÚÖ¸¶¨²Ëµ¥ÏîÔÚ×éÖеÄ˳Ðò¡£run
º¯Êý¶¨ÒåÁ˵ã»÷²Ëµ¥ÏîʱҪִÐеIJÙ×÷£¬¿ÉÒÔÊDzåÈëÎı¾»òµ÷ÓÃÆäËûº¯Êý¡£