Last active
November 21, 2017 08:07
-
-
Save Naatan/7375244 to your computer and use it in GitHub Desktop.
Komodo Macro - Execute file/selection as PHP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
new function() | |
{ | |
/** | |
* Execute Macro | |
* | |
* @returns {void} | |
*/ | |
this.exec = function() | |
{ | |
// Ensure we're set up correcly | |
komodo.assertMacroVersion(3); | |
if (komodo.view) { komodo.view.setFocus() }; | |
// Get text to execute | |
var ke = komodo.editor; | |
if(!ke.selText) | |
{ | |
// Use all text in file | |
var text = ko.views.manager.currentView.scimoz.text.trim() | |
} | |
else | |
{ | |
// Use selected text | |
var text = komodo.interpolate('%s').trim(); | |
} | |
// Prepend php opening tag if necessary | |
if (text.substr(0,2) != '<?') | |
{ | |
text = '<?php ' + text; | |
} | |
// Write temporary file | |
var file = this.writeFile(text); | |
// get PHP binary path | |
var phpBinary = Components.classes['@activestate.com/koPrefService;1'] | |
.getService(Components.interfaces.koIPrefService) | |
.prefs.getStringPref('phpDefaultInterpreter'); | |
// Run php | |
ko.run.runEncodedCommand(window, phpBinary + ' -d display_errors=true ' + file); | |
}; | |
/** | |
* Write data to file | |
* | |
* @param {string} data Data to write to file | |
* | |
* @returns {string} File path | |
*/ | |
this.writeFile = function(data) | |
{ | |
// Get temp file path | |
var tmpFile = Components.classes["@mozilla.org/file/directory_service;1"]. | |
getService(Components.interfaces.nsIProperties). | |
get("TmpD", Components.interfaces.nsIFile); | |
tmpFile.append("krsp.php"); | |
// Initialize (create) file | |
var file = Components.classes["@mozilla.org/file/local;1"]. | |
createInstance(Components.interfaces.nsILocalFile); | |
file.initWithPath(tmpFile.path); | |
// Open stream to file | |
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]. | |
createInstance(Components.interfaces.nsIFileOutputStream); | |
foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); | |
// Use converter to ensure UTF-8 encoding | |
var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]. | |
createInstance(Components.interfaces.nsIConverterOutputStream); | |
// Write to file | |
converter.init(foStream, "UTF-8", 0, 0); | |
converter.writeString(data); | |
converter.close(); | |
return tmpFile.path; | |
}; | |
this.exec(); | |
} |
See my fork of your gist which checks for missing PHP interpreter.
I get this:
`-d display_errors=true C:\Users\.....\AppData\Local\Temp\krsp.php` returned 1
... And this:
"-d" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.
As far as I can tell, my PHP settings are not anything special. I have "Find on Path" everywhere :-? And my PHP interpreter is in the path.
Try running the command manually from your command prompt
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, Naatan!