Skip to content

Commit

Permalink
Merge pull request #43 from ConsenSys/fix/settings
Browse files Browse the repository at this point in the history
Fix: make settings take effect immediately w/o requiring a vscode reload
  • Loading branch information
tintinweb authored Jan 17, 2020
2 parents 3cd9a2c + 0030ffb commit b1f40bf
Show file tree
Hide file tree
Showing 10 changed files with 44 additions and 42 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ All notable changes to the "solidity-visual-auditor" extension will be documente
## v0.0.22
- update: solidity parser, surya (#41 #42)
- fix: linter warnings (#40)
- fix: configuration changes now take effect immediately (#43)

## v0.0.21
- fix: Support VSCode for Windows (#38, #35)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,6 @@ This feature is provided by [Inline Bookmarks](https://marketplace.visualstudio.

## Known Issues

* changing settings may require a vscode reload.
* outline view does not always refresh. **TempFix**: modify and save the file to trigger a refresh.
* codelenses do not appear. **TempFix**: modify and save the file to trigger a refresh.
* [github issues](https://github.com/tintinweb/vscode-solidity-auditor/issues)
Expand All @@ -288,6 +287,7 @@ This feature is provided by [Inline Bookmarks](https://marketplace.visualstudio.
## v0.0.22
- update: solidity parser, surya (#41 #42)
- fix: linter warnings (#40)
- fix: configuration changes now take effect immediately (#43)

## v0.0.21
- fix: Support VSCode for Windows (#38, #35)
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@
"dependencies": {
"c3-linearization": "^0.3.0",
"keccak": "^2.0.0",
"solidity-parser-diligence": "0.4.14",
"surya": "0.3.2"
"solidity-parser-diligence": "0.4.15",
"surya": "0.3.3"
}
}
24 changes: 11 additions & 13 deletions src/extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ const settings = require('./settings');
/** globals - const */
const languageId = settings.languageId;
const docSelector = settings.docSelector;
const solidityVAConfig = vscode.workspace.getConfiguration('solidity-va');

const g_parser = new SolidityParser();
var activeEditor;
Expand Down Expand Up @@ -71,8 +70,7 @@ async function setDecorations(editor, decorations){
/*** EVENTS *********************************************** */

function onInitModules(context, type){
//mod_codelens.init(context, type, solidityVAConfig);
mod_decorator.init(context, solidityVAConfig);
mod_decorator.init(context);

//globals init
g_diagnostics = new DiliDiagnosticCollection(context, vscode.workspace.rootPath);
Expand Down Expand Up @@ -369,11 +367,11 @@ function analyzeSourceUnit(cancellationToken, document){
}
//annotate external calls?
});
if (solidityVAConfig.deco.arguments) {
if (settings.extensionConfig().deco.arguments) {
decorations = decorations.concat(mod_decorator.semanticHighlightFunctionParameters(highlightIdentifiers));
}

if (solidityVAConfig.deco.warn.reserved){
if (settings.extensionConfig().deco.warn.reserved){
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].functions[functionName].identifiers));
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].functions[functionName].arguments));
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].functions[functionName].returns));
Expand Down Expand Up @@ -519,11 +517,11 @@ function analyzeSourceUnit(cancellationToken, document){
}
//annotate external calls?
});
if (solidityVAConfig.deco.arguments) {
if (settings.extensionConfig().deco.arguments) {
decorations = decorations.concat(mod_decorator.semanticHighlightFunctionParameters(highlightIdentifiers));
}

if (solidityVAConfig.deco.warn.reserved){
if (settings.extensionConfig().deco.warn.reserved){
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].modifiers[functionName].identifiers));
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].modifiers[functionName].arguments));
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].modifiers[functionName].returns));
Expand All @@ -532,7 +530,7 @@ function analyzeSourceUnit(cancellationToken, document){
}
//decorate events
for (var functionName in insights.contracts[contract].events){
if (solidityVAConfig.deco.warn.reserved){
if (settings.extensionConfig().deco.warn.reserved){
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].events[functionName].identifiers));
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].events[functionName].arguments));
decorations = decorations.concat(checkReservedIdentifiers(insights.contracts[contract].events[functionName].returns));
Expand All @@ -546,7 +544,7 @@ function analyzeSourceUnit(cancellationToken, document){
return;
}

if (solidityVAConfig.deco.statevars) {
if (settings.extensionConfig().deco.statevars) {
setDecorations(activeEditor, decorations);
}
console.log("✓ apply decorations - scope");
Expand All @@ -558,7 +556,7 @@ function onDidSave(document){
currentCancellationTokens.onDidSave.dispose();
currentCancellationTokens.onDidSave = new CancellationTokenSource();
// check if there are any
if(solidityVAConfig.diagnostics.cdili_json.import && g_diagnostics){
if(settings.extensionConfig().diagnostics.cdili_json.import && g_diagnostics){
g_diagnostics.updateIssues(currentCancellationTokens.onDidSave.token);
}

Expand Down Expand Up @@ -599,7 +597,7 @@ function onActivate(context) {
vscode.languages.reg
);

if(!solidityVAConfig.mode.active){
if(!settings.extensionConfig().mode.active){
console.log("ⓘ activate extension: entering passive mode. not registering any active code augmentation support.");
return;
}
Expand Down Expand Up @@ -793,7 +791,7 @@ function onActivate(context) {

/** experimental */
//onDidChange() // forces inspection and makes sure data is ready for symbolprovider
if(solidityVAConfig.outline.enable){
if(settings.extensionConfig().outline.enable){
context.subscriptions.push(
vscode.languages.registerDocumentSymbolProvider(
docSel,
Expand All @@ -802,7 +800,7 @@ function onActivate(context) {
);
}

if(solidityVAConfig.codelens.enable){
if(settings.extensionConfig().codelens.enable){
context.subscriptions.push(
vscode.languages.registerCodeLensProvider(
docSel,
Expand Down
15 changes: 7 additions & 8 deletions src/features/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ const mod_symbols = require('./symbols.js');

const surya = require('surya');

const solidityVAConfig = vscode.workspace.getConfiguration('solidity-va');

const suryaDefaultColorSchemeDark = {
digraph : {
Expand Down Expand Up @@ -125,7 +124,7 @@ class Commands{

let files;

if(solidityVAConfig.tools.surya.input.contracts=="workspace"){
if(settings.extensionConfig().tools.surya.input.contracts=="workspace"){
await vscode.workspace.findFiles("**/*.sol",'**/node_modules', 500)
.then(uris => {
files = uris.map(function (uri) {
Expand All @@ -147,7 +146,7 @@ class Commands{
//solidity-va.preview.render.markdown
vscode.workspace.openTextDocument({content: ret, language: "dot"})
.then(doc => {
if(solidityVAConfig.preview.dot){
if(settings.extensionConfig().preview.dot){
vscode.commands.executeCommand("interactive-graphviz.preview.beside", {document: doc, content:ret, callback:null})
.catch(error =>{
vscode.commands.executeCommand("graphviz.previewToSide", doc.uri)
Expand Down Expand Up @@ -176,7 +175,7 @@ class Commands{
ret = surya.inheritance(files,{draggable:false});
vscode.workspace.openTextDocument({content: ret, language: "dot"})
.then(doc => {
if(solidityVAConfig.preview.dot){
if(settings.extensionConfig().preview.dot){
vscode.commands.executeCommand("interactive-graphviz.preview.beside", {document: doc, content:ret, callback:null})
.catch(error =>{
vscode.commands.executeCommand("graphviz.previewToSide", doc.uri)
Expand Down Expand Up @@ -245,7 +244,7 @@ class Commands{
ret = surya.mdreport(files);
vscode.workspace.openTextDocument({content: ret, language: "markdown"})
.then(doc => {
if(solidityVAConfig.preview.markdown){
if(settings.extensionConfig().preview.markdown){
vscode.commands.executeCommand("markdown-preview-enhanced.openPreview", doc.uri)
.catch(error => {
//command does not exist
Expand Down Expand Up @@ -550,8 +549,8 @@ ${topLevelContractsText}`;
let content = `@startuml
' -- for auto-render install: https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml
' -- options --
${solidityVAConfig.uml.options}
${solidityVAConfig.uml.actors.enable ? "allowmixing": ""}
${settings.extensionConfig().uml.options}
${settings.extensionConfig().uml.actors.enable ? "allowmixing": ""}
' -- classes --
`;
Expand Down Expand Up @@ -595,7 +594,7 @@ ${Object.values(contractObj.functions).reduce((umlFuncTxt, funcObj) => {
}, "");


if(solidityVAConfig.uml.actors.enable){
if(settings.extensionConfig().uml.actors.enable){
//lets see if we can get actors as well :)

let addresses = [];
Expand Down
2 changes: 1 addition & 1 deletion src/features/deco.js
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ function semanticHighlightFunctionParameters(arrIdents){
return decorations;
}

function init(context, config){
function init(context){
[...Array(15).keys()].forEach(function(idx){
styles["styleArgument"+idx] = vscode.window.createTextEditorDecorationType({
//cursor: 'crosshair',
Expand Down
5 changes: 2 additions & 3 deletions src/features/hover.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ const vscode = require('vscode');

const builtinsArr = require('./hover/builtins.json');
const asmArr = require('./hover/asm.json');

const solidityVAConfig = vscode.workspace.getConfiguration('solidity-va');
const settings = require('../settings.js');

function createHover(name, snippet, type) {
var text = [];
Expand Down Expand Up @@ -79,7 +78,7 @@ function createHover(name, snippet, type) {
}

function provideHoverHandler(document, position, token, type, g_parser) {
if (solidityVAConfig.hover === false) {
if (settings.extensionConfig().hover === false) {
return;
}
const range = document.getWordRangeAtPosition(position, /(tx\.gasprice|tx\.origin|msg\.data|msg\.sender|msg\.sig|msg\.value|block\.coinbase|block\.difficulty|block\.gaslimit|block\.number|block\.timestamp|abi\.encodePacked|abi\.encodeWithSelector|abi\.encodeWithSignature|abi\.decode|abi\.encode|\.?[0-9_\w>]+)/);
Expand Down
5 changes: 2 additions & 3 deletions src/features/parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ const parserHelpers = require("./parser/parserHelpers");
const { linearize } = require('c3-linearization');
const crypto = require('crypto');
const {CommentMapperRex} = require('./utils');

const solidityVAConfig = vscode.workspace.getConfiguration('solidity-va');
const settings = require('../settings.js');

//https://github.com/ethereum/solidity/blob/c5879589af646bee899745c1a21d065537ad0ea5/test/libsolidity/SolidityParser.cpp#L509
const reservedKeywords = [
Expand Down Expand Up @@ -98,7 +97,7 @@ class SolidityParser{
this.contracts[contractName] = sourceUnit.contracts[contractName];
}

if (solidityVAConfig.parser.parseImports){
if (settings.extensionConfig().parser.parseImports){

/** parse imports */
sourceUnit.imports.forEach(function(imp){
Expand Down
18 changes: 9 additions & 9 deletions src/features/symbols.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* */

const vscode = require('vscode');
const solidityVAConfig = vscode.workspace.getConfiguration('solidity-va');
const settings = require('../settings.js');

function getFakeNode(name, line){
return {
Expand Down Expand Up @@ -149,7 +149,7 @@ function getSymbolKindForDeclaration(node){

result.prefix += "Ⓜ ";

if (solidityVAConfig.outline.decorations){
if (settings.extensionConfig().outline.decorations){
result.prefix += getVisibilityToIcon(astnode.visibility);
result.prefix += getStateMutabilityToIcon(astnode.stateMutability);
}
Expand All @@ -164,12 +164,12 @@ function getSymbolKindForDeclaration(node){
} else {
result.symbol = vscode.SymbolKind.Function;
}
if (solidityVAConfig.outline.decorations){
if (settings.extensionConfig().outline.decorations){
result.prefix += getVisibilityToIcon(astnode.visibility);
result.prefix += getStateMutabilityToIcon(astnode.stateMutability);
}

if (solidityVAConfig.outline.extras){
if (settings.extensionConfig().outline.extras){
result.suffix += " ( ",
result.suffix += " complex: " + node.complexity;
result.suffix += " state: " + (node.accesses_svar?"☑":"☐");
Expand All @@ -183,7 +183,7 @@ function getSymbolKindForDeclaration(node){
result.symbol = vscode.SymbolKind.Struct;
break;
case "VariableDeclaration":
if(solidityVAConfig.outline.var.storage_annotations){
if(settings.extensionConfig().outline.var.storage_annotations){
if(astnode.storageLocation=="memory"){
result.prefix +="💾";
result.details += astnode.storageLocation;
Expand All @@ -205,7 +205,7 @@ function getSymbolKindForDeclaration(node){
result.symbol = getVariableDeclarationTypeAsSymbolKind(astnode, vscode.SymbolKind.Variable);
break;
case "Parameter":
if(solidityVAConfig.outline.var.storage_annotations){
if(settings.extensionConfig().outline.var.storage_annotations){
if(astnode.storageLocation=="memory"){
result.prefix +="💾";
result.details += astnode.storageLocation;
Expand Down Expand Up @@ -286,7 +286,7 @@ class SolidityDocumentSymbolProvider{

var topLevelNode;

if(solidityVAConfig.outline.pragmas.show){
if(settings.extensionConfig().outline.pragmas.show){
topLevelNode = astNodeAsDocumentSymbol(
document,
getFakeNode("pragma",1),
Expand All @@ -305,7 +305,7 @@ class SolidityDocumentSymbolProvider{
console.log("✓ pragmas ");
}

if(solidityVAConfig.outline.imports.show){
if(settings.extensionConfig().outline.imports.show){
topLevelNode = astNodeAsDocumentSymbol(
document,
getFakeNode("imports",1),
Expand Down Expand Up @@ -515,7 +515,7 @@ class SolidityDocumentSymbolProvider{
}
console.log("✓ events");
/** functions - may include constructor / fallback */
if(solidityVAConfig.outline.inheritance.show){
if(settings.extensionConfig().outline.inheritance.show){

var inheritedLevelNode = astNodeAsDocumentSymbol(
document,
Expand Down
10 changes: 8 additions & 2 deletions src/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,18 @@
*
* */
/** globals - const */
const vscode = require('vscode');
const languageId = "solidity";
const docSelector = {
language: languageId
};

function extensionConfig() {
return vscode.workspace.getConfiguration('solidity-va');
}

module.exports = {
languageId:languageId,
docSelector:docSelector
extensionConfig: extensionConfig,
languageId: languageId,
docSelector: docSelector
};

0 comments on commit b1f40bf

Please sign in to comment.