]> git.donarmstrong.com Git - dactyl.git/blobdiff - common/modules/io.jsm
Import r6948 from upstream hg supporting Firefox up to 24.*
[dactyl.git] / common / modules / io.jsm
index 9e717d74ed51ebd217ea017e821b017e7a7ef7c7..8a3a06b2994c4f7a7e40a39c28c361f9b0b71bdd 100644 (file)
@@ -149,7 +149,7 @@ var IO = Module("io", {
                     let sourceJSM = function sourceJSM() {
                         context = contexts.Module(uri);
                         dactyl.triggerObserver("io.source", context, file, file.lastModifiedTime);
-                    }
+                    };
 
                     if (/\.jsm$/.test(filename))
                         sourceJSM();
@@ -307,23 +307,20 @@ var IO = Module("io", {
     },
 
     /**
-     * Creates a temporary file.
+     * Returns a temporary file.
      *
+     * @param {string} ext The filename extension.
+     *     @default "txt"
+     * @param {string} label A metadata string appended to the filename. Useful
+     *     for identifying the file, beyond its extension, to external
+     *     applications.
+     *     @default ""
      * @returns {File}
      */
-    createTempFile: function createTempFile(name, type) {
-        if (name instanceof Ci.nsIFile) {
-            var file = name.clone();
-            if (!type || type == "file")
-                file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, octal(666));
-            else
-                file.createUnique(Ci.nsIFile.DIRECTORY_TYPE, octal(777));
-        }
-        else {
-            file = services.directory.get("TmpD", Ci.nsIFile);
-            file.append(this.config.tempFile + (name ? "." + name : ""));
-            file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, octal(666));
-        }
+    createTempFile: function createTempFile(ext = "txt", label = "") {
+        let file = services.directory.get("TmpD", Ci.nsIFile);
+        file.append(config.name + label + "." + ext);
+        file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, octal(666));
 
         services.externalApp.deleteTemporaryFileOnExit(file);
 
@@ -543,9 +540,9 @@ var IO = Module("io", {
      * @returns {boolean} false if temp files couldn't be created,
      *     otherwise, the return value of *func*.
      */
-    withTempFiles: function withTempFiles(func, self, checked, ext) {
+    withTempFiles: function withTempFiles(func, self, checked, ext, label) {
         let args = array(util.range(0, func.length))
-                    .map(bind("createTempFile", this, ext)).array;
+                    .map(bind("createTempFile", this, ext, label)).array;
         try {
             if (!args.every(util.identity))
                 return false;
@@ -639,7 +636,7 @@ var IO = Module("io", {
                 lines.push("\n\" vim: set ft=" + config.name + ":");
 
                 try {
-                    file.write(lines.join("\n"));
+                    file.write(lines.join("\n").concat("\n"));
                     dactyl.echomsg(_("io.writing", file.path.quote()), 2);
                 }
                 catch (e) {
@@ -675,13 +672,13 @@ var IO = Module("io", {
                     item.file = file;
                 }
 
-                rtItems.ftdetect.template = // {{{
+                rtItems.ftdetect.template = //{{{
 literal(/*" Vim filetype detection file
 <header>
 
 au BufNewFile,BufRead *<name>rc*,*.<fileext> set filetype=<name>
 */);//}}}
-                rtItems.ftplugin.template = // {{{
+                rtItems.ftplugin.template = //{{{
 literal(/*" Vim filetype plugin file
 <header>
 
@@ -708,7 +705,7 @@ endif
 let &cpo = s:cpo_save
 unlet s:cpo_save
 */);//}}}
-                rtItems.syntax.template = // {{{
+                rtItems.syntax.template = //{{{
 literal(/*" Vim syntax file
 <header>
 
@@ -812,7 +809,7 @@ unlet s:cpo_save
                     return lines.map(function (l) l.join("")).join("\n").replace(/\s+\n/gm, "\n");
                 }//}}}
 
-                let params = { // {{{
+                let params = { //{{{
                     header: ['" Language:    ' + config.appName + ' configuration file',
                              '" Maintainer:  Doug Kearns <dougkearns@gmail.com>',
                              '" Version:     ' + config.version].join("\n"),
@@ -830,7 +827,7 @@ unlet s:cpo_save
                                         array(o.realNames for (o in options) if (o.type == "boolean"))
                                             .flatten().map(String.quote),
                                         ", ") + "]"
-                }; // }}}
+                }; //}}}
 
                 for (let { file, template } in values(rtItems)) {
                     try {
@@ -1165,4 +1162,4 @@ endModule();
 
 } catch(e){ if (isString(e)) e = Error(e); dump(e.fileName+":"+e.lineNumber+": "+e+"\n" + e.stack); }
 
-// vim: set fdm=marker sw=4 ts=4 et ft=javascript:
+// vim: set fdm=marker sw=4 sts=4 ts=8 et ft=javascript: