Group Abstract Group Abstract

Message Boards Message Boards

1
|
14.8K Views
|
7 Replies
|
7 Total Likes
View groups...
Share
Share this post:

Set the default folder to be that of the notebook?

Posted 6 years ago
POSTED BY: Jyrki Lahtonen
7 Replies
Posted 6 years ago

I only got around to testing it now. It works as prescribed. Problem solved.

Thank you, Ian.

POSTED BY: Jyrki Lahtonen

My uneducated guess is that the mouse action in "Save Graphics As" does not touch the kernel, and it is thus blissfully unaware of the above command.

I'm sorry, I misunderstood what you were asking, but I cannot delete the previous post.

What you say above is correct.

I don't know how to change the default location for "Save As..."

POSTED BY: Szabolcs Horvát
Posted 6 years ago

No problem, Szabolcs. Thanks for your time. What happens when there are several programs running simultaneously is a bit fuzzy to me, so I was unable to phrase my question clearly. Should I have posted this somewhere else, where people responsible for the development of the FrontEnd can see it?

POSTED BY: Jyrki Lahtonen

You can use the following to temporarily reset the default directory for the dialog:

CurrentValue[$FrontEndSession, "NotebookBrowseDirectory"] = 
 NotebookDirectory[EvaluationNotebook[]]

IIRC, this only works on Windows and Linux. Mac's behavior is baked into the system.

POSTED BY: Ian Hojnicki

First, let me offer a practical solution: instead of changing Mathematica's behaviour, define a function that will do this for you.

export[file_String, rest___] :=
 Export[FileNameJoin[{NotebookDirectory[], file}], rest]

What you ask (i.e. that programmatic exporting goes to the notebook's directory by default) is not reasonable, as it is not compatible with how Mathematica (and all comparable programs) work. It breaks a fundamental analogy/metaphor/concept (whatever you want to call it) that helps us think about file system organization. Mathematica, like basically everything other similar system, uses the concept of a "current directory". You can think of the filesystem as a "space" that you move through. The current directory is where you are standing right now. Anything do you happens here.

Notebooks are not isolated from each other. It makes no difference which notebook you are running code in. They all see the same system state (i.e. kernel state). Thus they all share the same working directory.

The "Mathematica kernel" is the program that does all the computation and holds the system state. If you define a variable or function, they live in the kernel process's memory. Normally, there is one kernel running, shared by all notebooks. It is the kernel where your work lives and where your program runs, so it is the kernel that defined "where you are located" in the filesystem.

You could start a different kernel for each notebook, but you would soon run out of licenses. This would also prevent any sharing of information between notebooks. If a variable is defined in one notebook, it will not be visible in another.


Of course, all this does not mean that there are no practical workarounds to exporting to the same directory where the notebook is saved: see the export function at the beginning of my post. Clearly, wanting to do this is reasonable and useful.

POSTED BY: Szabolcs Horvát
Posted 6 years ago

I believe Gianluca is right on this one. I have had similar experiences in other environments.

POSTED BY: Mike Besso

Maybe the directory for saving through the FrontEnd is handled by the operating system, not by Mathematica. Just a guess.

POSTED BY: Gianluca Gorni
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard