3.5 DrRacket Files
3.5.1 Program Files
DrRacket’s editor can save a program file in two different formats:
Plain-text file format —
All text editors can read this format. DrRacket saves a program in plain-text format by default, unless the program contains images or text boxes. (Plain-text format does not preserve images or text boxes.)
Plain-text format is platform-specific because different platforms have different newline conventions. However, most tools for moving files across platforms support a “text” transfer mode that adjusts newlines correctly.
Multimedia file format —
This format is specific to DrRacket, and no other editor recognizes it. DrRacket saves a program in multimedia format by default when the program contains images, text boxes, or formatted text.
Multimedia format is platform-independent, and it uses an ASCII encoding (so that different ways of transferring the file are unlikely to corrupt the file).
3.5.2 Backup and First Change Files
Every 30 seconds, DrRacket checks each open file. If any file is modified and not saved, DrRacket saves the contents of the file in a backup file, just in case there is a power failure or some other catastrophic error. If the original file is later saved, or if the user exits DrRacket and explicitly declines to save the file, the backup file is removed. The backup file is saved in the same directory as the original file, and the back file’s name is generated from the original file’s name:
On Unix and Mac OS, a "#" is added to the start and end of the file’s name, then a number is added after the ending "#", and then one more "#" is appended after the number. The number is selected to make the backup filename unique.
On Windows, the file’s extension is replaced with a number to make the backup filename unique.
In DrRacket’s implementation, these files are called “autosave” files, not backup files.
When DrRacket first starts up, it looks to see if there are any backup files still present and if so, offers to restore the backup files, on the assumption that DrRacket was closed unintentionally. When it restores the files, DrRacket moves the current version of the original file out of the way (adding “autorec” to the name) and the moves the backup file in place of the original file.
Separately, DrRacket creates “first change” files. When you modify an existing file in DrRacket and save it, DrRacket copies the old version of the file to a special first-change file if no such file exists. The first-change file is saved in the same directory as the original file, and the first-change file’s name is generated from the original file’s name:
On Unix and Mac OS, a "~" is added to the end of the file’s name.
On Windows, the file’s extension is replaced with ".bak".
3.5.3 Preference Files
On start-up, DrRacket reads configuration information from a preferences file. The name and location of the preferences file depends on the platform and user:
The expression (find-system-path 'pref-file) returns the platform- and user-specific preference file path.
On Windows, preferences are stored in a file "racket-prefs.rktd" in a sub-directory "Racket" in the user’s application-data folder as specified by the Windows registry; the application-data folder is usually "Application Data" in the user’s profile directory, and that directory is usually hidden in the Windows GUI.
A lock file is used while modifying the preferences file, and it is created in the same directory as the preferences file. On Windows, the lock file is named "_LOCKracket-prefs.rktd"; on Unix, it is ".LOCK.racket-prefs.rktd"; on Mac OS, it is ".LOCK.org.racket-lang.prefs.rktd".
If the user-specific preferences file does not exist, and the file "racket-prefs.rktd" in the "defaults" collection does exist, then it is used for the initial preference settings. (See Libraries and Collections for more information about collections.) This file thus allows site-specific configuration for preference defaults. To set up such a configuration, start DrRacket and configure the preferences to your liking. Then, exit DrRacket and copy your preferences file into the "defaults" collection as "racket-prefs.rktd". Afterward, users who have no preference settings already will get the preference settings that you chose.