On Thu, Mar 31, 2011 at 03:16:23AM +0800, zwz wrote:
> I found the tip of saving the last save-path, and I modified it a little
> so as to rename the file-name according to what is selected in the
> buffer.
> Here is the problematic code
> #+BEGIN_SRC js
> {
> var save_path = get_home_directory();
>
> ... 
>
> function suggest_save_path_from_file_name(file_name, buffer) {
>     // var cwd = with_current_buffer(buffer, function (I) I.local.cwd);
>     var sel = with_current_buffer(buffer, function (I) 
> I.buffer.top_frame.getSelection());
>     // var file = cwd.clone();
>     var file = make_file(save_path);
> 
>     if (sel != ""){
>        var index = file_name.lastIndexOf(".");
>        if (index >= 0) file_name = sel + file_name.substr(index);
>     }
>     for (let re in replace_map) {
>         if (file_name.match(re)) {
>             if (replace_map[re].path) {
>                 file = make_file(replace_map[re].path);
>             }
>             file_name = replace_map[re].transformer(file_name);
>         }
>     }
>     file.append(file_name);
>     return file.path;
> }
> }
> #+END_SRC
> Some problem happens as
> 
> C-x C-s, and C-g immediately; and then C-x C-s again, the saving
> directory changes.
> 


I think this problem may be due to suggest_save_path_from_file modifying
the global variable save_path.  When you do make_file(save_path), if
save_path is already an nsILocalFile, which it is initially, the argument
is returned unchanged.  You need to clone the object before calling
file.append(file_name).

-- 
John Foerch
_______________________________________________
Conkeror mailing list
[email protected]
https://www.mozdev.org/mailman/listinfo/conkeror

Reply via email to