]> git.lyx.org Git - lyx.git/blobdiff - src/lyxrc.C
fix two crashes related to dEPM. Some crashes remain
[lyx.git] / src / lyxrc.C
index db2c8c12f8fff7eff2386e3f5acb9af55a499346..100b22b5fe62a251a1fa20c923d1d31485490e58 100644 (file)
 #include "graphics/GraphicsTypes.h"
 
 #include "support/convert.h"
+#include "support/environment.h"
 #include "support/filetools.h"
 #include "support/lstrings.h"
+#include "support/os.h"
 #include "support/userinfo.h"
 
+namespace os = lyx::support::os;
+
 using lyx::support::ascii_lowercase;
 using lyx::support::bformat;
 using lyx::support::ExpandPath;
-using lyx::support::GetEnv;
+using lyx::support::getEnv;
 using lyx::support::LibFileSearch;
 using lyx::support::token;
 
@@ -154,6 +158,7 @@ keyword_item lyxrcTags[] = {
        { "\\spell_command", LyXRC::RC_SPELL_COMMAND },
        { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
        { "\\template_path", LyXRC::RC_TEMPLATEPATH },
+       { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
        { "\\ui_file", LyXRC::RC_UIFILE },
        { "\\use_alt_language", LyXRC::RC_USE_ALT_LANG },
        { "\\use_escape_chars", LyXRC::RC_USE_ESC_CHARS },
@@ -188,7 +193,7 @@ void LyXRC::setDefaults() {
        ui_file = "default";
        // Get printer from the environment. If fail, use default "",
        // assuming that everything is set up correctly.
-       printer = GetEnv("PRINTER");
+       printer = getEnv("PRINTER");
        print_adapt_output = false;
        print_command = "dvips";
        print_evenpage_flag = "-B";
@@ -267,6 +272,7 @@ void LyXRC::setDefaults() {
        default_language = "english";
        show_banner = true;
        cygwin_path_fix = false;
+       tex_allows_spaces = false;
        date_insert_format = "%A, %e %B %Y";
        cursor_follows_scrollbar = false;
        dialogs_iconify_with_main = false;
@@ -359,15 +365,15 @@ int LyXRC::read(LyXLex & lexrc)
                                }
                        }
                        break;
-               case RC_BINDFILE:                     // RVDK_PATCH_5
+               case RC_BINDFILE:
                        if (lexrc.next()) {
-                               bind_file = lexrc.getString();
+                               bind_file = os::internal_path(lexrc.getString());
                        }
                        break;
 
                case RC_UIFILE:
                        if (lexrc.next()) {
-                               ui_file = lexrc.getString();
+                               ui_file = os::internal_path(lexrc.getString());
                        }
                        break;
 
@@ -383,21 +389,27 @@ int LyXRC::read(LyXLex & lexrc)
                        }
                        break;
 
-               case RC_KBMAP:
-                       if (lexrc.next()) {
-                               use_kbmap = lexrc.getBool();
-                       }
-                       break;
-
                case RC_CYGWIN_PATH_FIX:
                        if (lexrc.next()) {
                                cygwin_path_fix = lexrc.getBool();
                        }
                        break;
 
+               case RC_TEX_ALLOWS_SPACES:
+                       if (lexrc.next()) {
+                               tex_allows_spaces = lexrc.getBool();
+                       }
+                       break;
+
+               case RC_KBMAP:
+                       if (lexrc.next()) {
+                               use_kbmap = lexrc.getBool();
+                       }
+                       break;
+
                case RC_KBMAP_PRIMARY:
                        if (lexrc.next()) {
-                               string const kmap(lexrc.getString());
+                               string const kmap(os::internal_path(lexrc.getString()));
                                if (kmap.empty()) {
                                        // nothing
                                } else if (!LibFileSearch("kbd", kmap,
@@ -411,7 +423,7 @@ int LyXRC::read(LyXLex & lexrc)
 
                case RC_KBMAP_SECONDARY:
                        if (lexrc.next()) {
-                               string const kmap(lexrc.getString());
+                               string const kmap(os::internal_path(lexrc.getString()));
                                if (kmap.empty()) {
                                        // nothing
                                } else if (!LibFileSearch("kbd", kmap,
@@ -497,7 +509,7 @@ int LyXRC::read(LyXLex & lexrc)
 
                case RC_PRINTTOFILE:
                        if (lexrc.next()) {
-                               print_to_file = lexrc.getString();
+                               print_to_file = os::internal_path(lexrc.getString());
                        }
                        break;
 
@@ -558,22 +570,22 @@ int LyXRC::read(LyXLex & lexrc)
                                                PAPER_USLETTER;
                                else if (size == "legal")
                                        default_papersize =
-                                               PAPER_LEGALPAPER;
+                                               PAPER_USLEGAL;
                                else if (size == "executive")
                                        default_papersize =
-                                               PAPER_EXECUTIVEPAPER;
+                                               PAPER_USEXECUTIVE;
                                else if (size == "a3")
                                        default_papersize =
-                                               PAPER_A3PAPER;
+                                               PAPER_A3;
                                else if (size == "a4")
                                        default_papersize =
-                                               PAPER_A4PAPER;
+                                               PAPER_A4;
                                else if (size == "a5")
                                        default_papersize =
-                                               PAPER_A5PAPER;
+                                               PAPER_A5;
                                else if (size == "b5")
                                        default_papersize =
-                                               PAPER_B5PAPER;
+                                               PAPER_B5;
                        }
                        break;
 
@@ -678,19 +690,22 @@ int LyXRC::read(LyXLex & lexrc)
 
                case RC_DOCUMENTPATH:
                        if (lexrc.next()) {
-                               document_path = ExpandPath(lexrc.getString());
+                               document_path = os::internal_path(lexrc.getString());
+                               document_path = ExpandPath(document_path);
                        }
                        break;
 
                case RC_TEMPLATEPATH:
                        if (lexrc.next()) {
-                               template_path = ExpandPath(lexrc.getString());
+                               template_path = os::internal_path(lexrc.getString());
+                               template_path = ExpandPath(template_path);
                        }
                        break;
 
                case RC_TEMPDIRPATH:
                        if (lexrc.next()) {
-                               tempdir_path = ExpandPath(lexrc.getString());
+                               tempdir_path = os::internal_path(lexrc.getString());
+                               tempdir_path = ExpandPath(tempdir_path);
                        }
                        break;
 
@@ -702,7 +717,7 @@ int LyXRC::read(LyXLex & lexrc)
 
                case RC_LASTFILES:
                        if (lexrc.next()) {
-                               lastfiles = ExpandPath(lexrc.getString());
+                               lastfiles = ExpandPath(os::internal_path(lexrc.getString()));
                        }
                        break;
 
@@ -825,7 +840,8 @@ int LyXRC::read(LyXLex & lexrc)
 
                case RC_SERVERPIPE:
                        if (lexrc.next()) {
-                               lyxpipes = ExpandPath(lexrc.getString());
+                               lyxpipes = os::internal_path(lexrc.getString());
+                               lyxpipes = ExpandPath(lyxpipes);
                        }
                        break;
 
@@ -894,7 +910,7 @@ int LyXRC::read(LyXLex & lexrc)
                        break;
                case RC_PERS_DICT:
                        if (lexrc.next()) {
-                               isp_pers_dict = lexrc.getString();
+                               isp_pers_dict = os::internal_path(lexrc.getString());
                        }
                        break;
                case RC_ESC_CHARS:
@@ -909,7 +925,8 @@ int LyXRC::read(LyXLex & lexrc)
                        break;
                case RC_BACKUPDIR_PATH:
                        if (lexrc.next()) {
-                               backupdir_path = ExpandPath(lexrc.getString());
+                               backupdir_path = os::internal_path(lexrc.getString());
+                               backupdir_path = ExpandPath(backupdir_path);
                        }
                        break;
                case RC_DATE_INSERT_FORMAT:
@@ -1208,7 +1225,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
        case RC_BINDFILE:
                if (ignore_system_lyxrc ||
                    bind_file != system_lyxrc.bind_file) {
-                       os << "\\bind_file " << bind_file << "\n";
+                       string const path = os::external_path(bind_file);
+                       os << "\\bind_file \"" << path << "\"\n";
                }
                //
                // Misc Section
@@ -1228,7 +1246,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
        case RC_UIFILE:
                if (ignore_system_lyxrc ||
                    ui_file != system_lyxrc.ui_file) {
-                       os << "\\ui_file \"" << ui_file << "\"\n";
+                       string const path = os::external_path(ui_file);
+                       os << "\\ui_file \"" << path << "\"\n";
                }
        case RC_AUTOREGIONDELETE:
                if (ignore_system_lyxrc ||
@@ -1280,19 +1299,22 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
                        switch (default_papersize) {
                        case PAPER_USLETTER:
                                os << "usletter"; break;
-                       case PAPER_LEGALPAPER:
+                       case PAPER_USLEGAL:
                                os << "legal"; break;
-                       case PAPER_EXECUTIVEPAPER:
+                       case PAPER_USEXECUTIVE:
                                os << "executive"; break;
-                       case PAPER_A3PAPER:
+                       case PAPER_A3:
                                os << "a3"; break;
-                       case PAPER_A4PAPER:
+                       case PAPER_A4:
                                os << "a4"; break;
-                       case PAPER_A5PAPER:
+                       case PAPER_A5:
                                os << "a5"; break;
-                       case PAPER_B5PAPER:
+                       case PAPER_B5:
                                os << "b5"; break;
-                       case PAPER_DEFAULT: break;
+                       case PAPER_DEFAULT: 
+                       case PAPER_CUSTOM: 
+                       case PAPER_B3:
+                       case PAPER_B4: break;
                        }
                        os << "\"\n";
                }
@@ -1311,33 +1333,39 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
                    index_command != system_lyxrc.index_command) {
                        os << "\\index_command \"" << index_command << "\"\n";
                }
-       case RC_KBMAP:
-               if (ignore_system_lyxrc ||
-                   use_kbmap != system_lyxrc.use_kbmap) {
-                       os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
-               }
-
        case RC_CYGWIN_PATH_FIX:
                if (ignore_system_lyxrc ||
                    cygwin_path_fix != system_lyxrc.cygwin_path_fix) {
                        os << "\\cygwin_path_fix_needed "
                           << convert<string>(cygwin_path_fix) << '\n';
                }
+       case RC_TEX_ALLOWS_SPACES:
+               if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
+                       os << "\\tex_allows_spaces "
+                          << convert<string>(tex_allows_spaces) << '\n';
+               }
+       case RC_KBMAP:
+               if (ignore_system_lyxrc ||
+                   use_kbmap != system_lyxrc.use_kbmap) {
+                       os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
+               }
        case RC_KBMAP_PRIMARY:
                if (ignore_system_lyxrc ||
                    primary_kbmap != system_lyxrc.primary_kbmap) {
-                       os << "\\kbmap_primary \"" << primary_kbmap << "\"\n";
+                       string const path = os::external_path(primary_kbmap);
+                       os << "\\kbmap_primary \"" << path << "\"\n";
                }
        case RC_KBMAP_SECONDARY:
                if (ignore_system_lyxrc ||
                    secondary_kbmap != system_lyxrc.secondary_kbmap) {
-                       os << "\\kbmap_secondary \"" << secondary_kbmap
-                          << "\"\n";
+                       string const path = os::external_path(secondary_kbmap);
+                       os << "\\kbmap_secondary \"" << path << "\"\n";
                }
        case RC_SERVERPIPE:
                if (ignore_system_lyxrc ||
                    lyxpipes != system_lyxrc.lyxpipes) {
-                       os << "\\serverpipe \"" << lyxpipes << "\"\n";
+                       string const path = os::external_path(lyxpipes);
+                       os << "\\serverpipe \"" << path << "\"\n";
                }
        case RC_DATE_INSERT_FORMAT:
                if (ignore_system_lyxrc ||
@@ -1659,7 +1687,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
        case RC_PRINTTOFILE:
                if (ignore_system_lyxrc ||
                    print_to_file != system_lyxrc.print_to_file) {
-                       os << "\\print_to_file \"" << print_to_file << "\"\n";
+                       string const path = os::external_path(print_to_file);
+                       os << "\\print_to_file \"" << path << "\"\n";
                }
        case RC_PRINTFILEEXTENSION:
                if (ignore_system_lyxrc ||
@@ -1706,12 +1735,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
        case RC_DOCUMENTPATH:
                if (ignore_system_lyxrc ||
                    document_path != system_lyxrc.document_path) {
-                       os << "\\document_path \"" << document_path << "\"\n";
+                       string const path = os::external_path(document_path);
+                       os << "\\document_path \"" << path << "\"\n";
                }
        case RC_LASTFILES:
                if (ignore_system_lyxrc ||
                    lastfiles != system_lyxrc.lastfiles) {
-                       os << "\\lastfiles \"" << lastfiles << "\"\n";
+                       string const path = os::external_path(lastfiles);
+                       os << "\\lastfiles \"" << path << "\"\n";
                }
        case RC_NUMLASTFILES:
                if (ignore_system_lyxrc ||
@@ -1727,12 +1758,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
        case RC_TEMPLATEPATH:
                if (ignore_system_lyxrc ||
                    template_path != system_lyxrc.template_path) {
-                       os << "\\template_path \"" << template_path << "\"\n";
+                       string const path = os::external_path(template_path);
+                       os << "\\template_path \"" << path << "\"\n";
                }
        case RC_TEMPDIRPATH:
                if (ignore_system_lyxrc ||
                    tempdir_path != system_lyxrc.tempdir_path) {
-                       os << "\\tempdir_path \"" << tempdir_path << "\"\n";
+                       string const path = os::external_path(tempdir_path);
+                       os << "\\tempdir_path \"" << path << "\"\n";
                }
        case RC_USETEMPDIR:
                // Ignore it
@@ -1749,7 +1782,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
        case RC_BACKUPDIR_PATH:
                if (ignore_system_lyxrc ||
                    backupdir_path != system_lyxrc.backupdir_path) {
-                       os << "\\backupdir_path \"" << backupdir_path << "\"\n";
+                       string const path = os::external_path(backupdir_path);
+                       os << "\\backupdir_path \"" << path << "\"\n";
                }
 
                os << "\n#\n"
@@ -1814,8 +1848,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const
                }
        case RC_PERS_DICT:
                if (isp_pers_dict != system_lyxrc.isp_pers_dict) {
-                       os << "\\personal_dictionary \"" << isp_pers_dict
-                          << "\"\n";
+                       string const path = os::external_path(isp_pers_dict);
+                       os << "\\personal_dictionary \"" << path << "\"\n";
                }
        case RC_USE_INP_ENC:
                if (ignore_system_lyxrc ||
@@ -2041,11 +2075,11 @@ string const LyXRC::getDescription(LyXRCTags tag)
                break;
 
        case RC_ASCIIROFF_COMMAND:
-               str = _("Use to define an external program to render tables in the ASCII output. E.g. \"groff -t -Tlatin1 $$FName\" where $$FName is the input file. If \"none\" is specified, an internal routine is used.");
+               str = _("Use to define an external program to render tables in plain text output. E.g. \"groff -t -Tlatin1 $$FName\" where $$FName is the input file. If \"none\" is specified, an internal routine is used.");
                break;
 
        case RC_ASCII_LINELEN:
-               str = _("This is the maximum line length of an exported ASCII file (LaTeX, SGML or plain text).");
+               str = _("This is the maximum line length of an exported text file (LaTeX, SGML or plain text).");
                break;
 
        case RC_AUTOREGIONDELETE:
@@ -2205,6 +2239,9 @@ string const LyXRC::getDescription(LyXRCTags tag)
                break;
 
        case RC_PATH_PREFIX:
+               str = _("Specify those directories which should be "
+                        "prepended to the PATH environment variable. "
+                        "Use the OS native format.");
                break;
 
        case RC_PERS_DICT:
@@ -2356,7 +2393,7 @@ string const LyXRC::getDescription(LyXRCTags tag)
                break;
 
        case RC_SPELL_COMMAND:
-               str = _("What command runs the spell checker?");
+               str = _("What command runs the spellchecker?");
                break;
 
        case RC_TEMPDIRPATH:
@@ -2367,6 +2404,9 @@ string const LyXRC::getDescription(LyXRCTags tag)
                str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
                break;
 
+       case RC_TEX_ALLOWS_SPACES:
+               break;
+
        case RC_UIFILE:
                str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
                break;
@@ -2381,7 +2421,7 @@ string const LyXRC::getDescription(LyXRCTags tag)
                break;
 
        case RC_USE_INP_ENC:
-               str = _("Specify whether to pass the -T input encoding option to ispell. Enable this if you can't spellcheck words with international letters in them. This may not work with all dictionaries.");
+               str = _("Specify whether to pass the -T input encoding option to ispell. Enable this if you cannot check the spelling of words containing accented letters. This may not work with all dictionaries.");
                break;
 
        case RC_USE_SPELL_LIB: