diff --git a/src/app/constants/commands.js b/src/app/constants/commands.js
index 6406d0911f..fe579ee037 100644
--- a/src/app/constants/commands.js
+++ b/src/app/constants/commands.js
@@ -10,9 +10,11 @@ const allCommands = [
{'remix.debugHelp()': 'Display help message for debugging'},
{'remix.execute(filepath)': 'Run the script specified by file path. If filepath is empty, script currently displayed in the editor is executed.'},
{'remix.exeCurrent()': 'Run the script currently displayed in the editor.'},
+ {'remix.getFile(path)': 'Returns the content of the file located at the given path'},
{'remix.help()': 'Display this help message.'},
{'remix.loadgist(id)': 'Load a gist in the file explorer.'},
{'remix.loadurl(url)': 'Load the given url in the file explorer. The url can be of type github, swarm or ipfs.'},
+ {'remix.setFile(path, content)': 'set the content of the file located at the given path'},
{'remix.setproviderurl(url)': 'Change the current provider to Web3 provider and set the url endpoint.'},
{'swarmgw.get(url, cb)': 'Download files from Swarm via https://swarm-gateways.net/'},
diff --git a/src/app/panels/terminal.js b/src/app/panels/terminal.js
index 0fa4f961f4..a5cb7ea3e7 100644
--- a/src/app/panels/terminal.js
+++ b/src/app/panels/terminal.js
@@ -68,7 +68,10 @@ class Terminal {
self._components.autoCompletePopup.event.register('handleSelect', function (input) {
self._components.autoCompletePopup.data._options = []
self._components.autoCompletePopup._startingElement = 0
- self._view.input.innerText = input
+ let textList = self._view.input.innerText.split(' ')
+ textList.pop()
+ textList.push(input)
+ self._view.input.innerText = `${textList}`.replace(/,/g, ' ')
self._view.input.focus()
yo.update(self._view.autoCompletePopup, self._components.autoCompletePopup.render())
})
@@ -167,7 +170,6 @@ class Terminal {
${self._view.bar}
${self._view.term}
- ${self._view.autoCompletePopup}
`
setInterval(() => {
@@ -428,7 +430,7 @@ class Terminal {
}
} else if (event.which === 38) { //
if (self._components.autoCompletePopup.data._options.length > self._components.autoCompletePopup._elementsToShow) {
- self._components.autoCompletePopup._view.autoComplete.children[1].onclick(event)
+ self._components.autoCompletePopup._view.autoComplete.children[1].children[0].onclick(event)
} else {
var len = self._cmdHistory.length
if (len === 0) return event.preventDefault()
@@ -441,7 +443,7 @@ class Terminal {
}
} else if (event.which === 40) { //
if (self._components.autoCompletePopup.data._options.length > self._components.autoCompletePopup._elementsToShow) {
- self._components.autoCompletePopup._view.autoComplete.children[1].onclick(event)
+ self._components.autoCompletePopup._view.autoComplete.children[1].children[1].onclick(event)
} else {
if (self._cmdIndex > -1) {
self._cmdIndex--
@@ -484,14 +486,16 @@ class Terminal {
function handleAutoComplete (event) {
if (event.which === 9) {
event.preventDefault()
+ let textList = self._view.input.innerText.split(' ')
+ let autoCompleteInput = textList.length > 1 ? textList[textList.length - 1] : textList[0]
if (self._view.input.innerText.length >= 2) {
self._components.autoCompletePopup.data._options = []
Commands.allPrograms.forEach(item => {
- if (Object.keys(item)[0].substring(0, Object.keys(item)[0].length - 1).includes(self._view.input.innerText.trim())) {
+ if (Object.keys(item)[0].substring(0, Object.keys(item)[0].length - 1).includes(autoCompleteInput.trim())) {
self._components.autoCompletePopup.data._options.push(item)
- } else if (self._view.input.innerText.trim().includes(Object.keys(item)[0]) || (Object.keys(item)[0] === self._view.input.innerText.trim())) {
+ } else if (autoCompleteInput.trim().includes(Object.keys(item)[0]) || (Object.keys(item)[0] === autoCompleteInput.trim())) {
Commands.allCommands.forEach(item => {
- if (Object.keys(item)[0].includes(self._view.input.innerText.trim())) {
+ if (Object.keys(item)[0].includes(autoCompleteInput.trim())) {
self._components.autoCompletePopup.data._options.push(item)
}
})
@@ -499,7 +503,9 @@ class Terminal {
})
}
if (self._components.autoCompletePopup.data._options.length === 1) {
- self._view.input.innerText = Object.keys(self._components.autoCompletePopup.data._options[0])[0]
+ textList.pop()
+ textList.push(Object.keys(self._components.autoCompletePopup.data._options[0])[0])
+ self._view.input.innerText = `${textList}`.replace(/,/g, ' ')
self._components.autoCompletePopup.data._options = []
putCursor2End(self._view.input)
}
@@ -513,6 +519,7 @@ class Terminal {
function removeAutoComplete () {
self._components.autoCompletePopup.data._options = []
self._components.autoCompletePopup._startingElement = 0
+ self._components.autoCompletePopup._removePopUp()
yo.update(self._view.autoCompletePopup, self._components.autoCompletePopup.render())
}
}
diff --git a/src/app/ui/auto-complete-popup.js b/src/app/ui/auto-complete-popup.js
index 43c4d760c5..5c829104f0 100644
--- a/src/app/ui/auto-complete-popup.js
+++ b/src/app/ui/auto-complete-popup.js
@@ -2,8 +2,11 @@ var yo = require('yo-yo')
var remixLib = require('remix-lib')
var EventManager = remixLib.EventManager
+var modal = require('./modaldialog.js')
+
// -------------- styling ----------------------
var css = require('./styles/auto-complete-popup-styles')
+var cssModal = require('./styles/modaldialog-styles')
/* USAGE:
@@ -25,49 +28,75 @@ class AutoCompletePopup {
self._view = {}
self._startingElement = 0
self._elementsToShow = 3
+ self._removePopUp = this.resetCSSValuesModalContainer
+ }
+
+ resetCSSValuesModalContainer () {
+ var modalContainer = document.querySelector(`.${cssModal.modal}`)
+ modalContainer.style.display = 'none'
+ var modalContent = document.querySelector(`.${css.modalContent}`)
+ let newModalContent = modalContent ? document.querySelector(`.${css.modalContent}`) : document.querySelector(`.${cssModal.modalContent}`)
+ newModalContent.className = cssModal.modalContent
}
render () {
var self = this
+ var header = yo`Remix Commands
`
self._view.autoComplete = yo`
-