|
|
|
@ -330,10 +330,10 @@ function CreateCompletionItem(label: string, kind: monaco.languages.CompletionIt |
|
|
|
|
export function GetCompletionKeywords(range: IRange, monaco): monaco.languages.CompletionItem[] { |
|
|
|
|
const completionItems = []; |
|
|
|
|
const keywords = ['modifier', 'mapping', 'break', 'continue', 'delete', 'else', 'for', |
|
|
|
|
'after', 'promise', 'alias', 'apply','auto', 'copyof', 'default', 'define', 'final', 'implements', |
|
|
|
|
'after', 'promise', 'alias', 'apply', 'auto', 'copyof', 'default', 'define', 'final', 'implements', |
|
|
|
|
'inline', 'let', 'macro', 'match', 'mutable', 'null', 'of', 'partial', 'reference', 'relocatable', |
|
|
|
|
'sealed', 'sizeof', 'static', 'supports', 'switch', 'typedef', |
|
|
|
|
'if', 'new', 'return', 'returns', 'while', 'using', 'emit', 'anonymous', 'indexed',
|
|
|
|
|
'if', 'new', 'return', 'returns', 'while', 'using', 'emit', 'anonymous', 'indexed', |
|
|
|
|
'private', 'public', 'external', 'internal', 'payable', 'nonpayable', 'view', 'pure', 'case', 'do', 'else', 'finally', |
|
|
|
|
'in', 'instanceof', 'return', 'throw', 'try', 'catch', 'typeof', 'yield', 'void', 'virtual', 'override']; |
|
|
|
|
keywords.forEach(unit => { |
|
|
|
@ -389,6 +389,268 @@ export function GeCompletionUnits(range: IRange, monaco): monaco.languages.Compl |
|
|
|
|
|
|
|
|
|
return completionItems; |
|
|
|
|
} |
|
|
|
|
export function GetImports(range: IRange, monaco): monaco.languages.CompletionItem[] { |
|
|
|
|
let list = [ |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/ERC20.sol', |
|
|
|
|
label: 'OZ ERC20', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC721/ERC721.sol', |
|
|
|
|
label: 'OZ ERC721', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/access/Ownable.sol', |
|
|
|
|
label: 'OZ Ownable', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/Counters.sol', |
|
|
|
|
label: 'OZ Counters', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/Address.sol', |
|
|
|
|
label: 'OZ Address', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
detail: '@openzeppelin/contracts/utils/Context.sol', |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/Context.sol', |
|
|
|
|
label: 'OZ Context', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
detail: '@openzeppelin/contracts/utils/EnumerableSet.sol', |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/EnumerableSet.sol', |
|
|
|
|
label: 'OZ EnumerableSet', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
detail: '@openzeppelin/contracts/utils/EnumerableMap.sol', |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/EnumerableMap.sol', |
|
|
|
|
label: 'OZ EnumerableMap', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/Strings.sol', |
|
|
|
|
label: 'OZ Strings', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/ReentrancyGuard.sol', |
|
|
|
|
label: 'OZ ReentrancyGuard', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/Pausable.sol', |
|
|
|
|
label: 'OZ Pausable', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/structs/EnumerableSet.sol', |
|
|
|
|
label: 'OZ EnumerableSet', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/structs/EnumerableMap.sol', |
|
|
|
|
label: 'OZ EnumerableMap', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/math/SafeMath.sol', |
|
|
|
|
label: 'OZ SafeMath', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/math/SafeCast.sol', |
|
|
|
|
label: 'OZ SafeCast', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/math/Math.sol', |
|
|
|
|
label: 'OZ Math', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/math/SignedSafeMath.sol', |
|
|
|
|
label: 'OZ SignedSafeMath', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/math/SafeMath.sol', |
|
|
|
|
label: 'OZ SafeMath', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/utils/math/SafeCast.sol', |
|
|
|
|
label: 'OZ SafeCast', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol', |
|
|
|
|
label: 'OZ ERC20Burnable', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol', |
|
|
|
|
label: 'OZ ERC20Pausable', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Snapshot.sol', |
|
|
|
|
label: 'OZ ERC20Snapshot', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol', |
|
|
|
|
label: 'OZ ERC20Permit', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Votes.sol', |
|
|
|
|
label: 'OZ ERC20Votes', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC1155/ERC1155.sol', |
|
|
|
|
label: 'OZ ERC1155', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/IERC20.sol', |
|
|
|
|
label: 'OZ IERC20', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC721/IERC721.sol', |
|
|
|
|
label: 'OZ IERC721', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC1155/IERC1155.sol', |
|
|
|
|
label: 'OZ IERC1155', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/IERC20Metadata.sol', |
|
|
|
|
label: 'OZ IERC20Metadata', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol', |
|
|
|
|
label: 'OZ IERC721Metadata', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol', |
|
|
|
|
label: 'OZ IERC1155MetadataURI', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol', |
|
|
|
|
label: 'OZ IERC1155Receiver', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol', |
|
|
|
|
label: 'OZ IERC721Receiver', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol', |
|
|
|
|
label: 'OZ SafeERC20', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/Governor.sol', |
|
|
|
|
label: 'OZ Governor', |
|
|
|
|
range |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol', |
|
|
|
|
label: 'OZ GovernorCountingSimple', |
|
|
|
|
range |
|
|
|
|
|
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorVotes.sol', |
|
|
|
|
label: 'OZ GovernorVotes', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol', |
|
|
|
|
label: 'OZ GovernorVotesQuorumFraction', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorTimelockCompound.sol', |
|
|
|
|
label: 'OZ GovernorTimelockCompound', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol', |
|
|
|
|
label: 'OZ GovernorTimelockControl', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol', |
|
|
|
|
label: 'OZ GovernorCountingSimple', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorSettings.sol', |
|
|
|
|
label: 'OZ GovernorSettings', |
|
|
|
|
range |
|
|
|
|
},{ |
|
|
|
|
kind: monaco.languages.CompletionItemKind.Module, |
|
|
|
|
insertText: '@openzeppelin/contracts/governance/extensions/GovernorCompatibilityBravo.sol', |
|
|
|
|
label: 'OZ GovernorCompatibilityBravo', |
|
|
|
|
range |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
list = list.map((item) => { |
|
|
|
|
return { |
|
|
|
|
...item, |
|
|
|
|
label: `${item.label}: ${item.insertText}`, |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
console.log(list) |
|
|
|
|
return list; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
export function GetGlobalVariable(range: IRange, monaco): monaco.languages.CompletionItem[] { |
|
|
|
|
return [ |
|
|
|
@ -668,7 +930,7 @@ export function getAddressCompletionItems(range: IRange, monaco): monaco.languag |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function getContextualAutoCompleteBTypeName(word: string, range: IRange, monaco): monaco.languages.CompletionItem[] { |
|
|
|
|
if (word === 'ArrayTypeName') { |
|
|
|
|
return getArrayCompletionItems(range, monaco); |
|
|
|
|