Ïêϸ˵Ã÷
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åÈëÎı¾»òµ÷ÓÃÆäËûº¯Êý¡£