commit 8a70d0ff9a09c5cdb180650935aefb4b9f8841df
Author: Georg Baum <[email protected]>
Date: Thu Feb 12 21:22:21 2015 +0100
Fix viewer file paths on windows (bug #8892)
Some applications do not accept forward slashes, so call external viewers
and editors with backward slashes which is the usual convention under
windows.
diff --git a/src/Format.cpp b/src/Format.cpp
index 9e221be..b76ad99 100644
--- a/src/Format.cpp
+++ b/src/Format.cpp
@@ -694,8 +694,10 @@ bool Formats::view(Buffer const & buffer, FileName const &
filename,
if (!contains(command, token_from_format))
command += ' ' + token_from_format;
- command = subst(command, token_from_format,
quoteName(onlyFileName(filename.toFilesystemEncoding())));
- command = subst(command, token_path_format,
quoteName(onlyPath(filename.toFilesystemEncoding())));
+ command = subst(command, token_from_format,
+
quoteName(onlyFileName(filename.toFilesystemEncoding()), quote_shell_filename));
+ command = subst(command, token_path_format,
+ quoteName(onlyPath(filename.toFilesystemEncoding()),
quote_shell_filename));
command = subst(command, token_socket_format,
quoteName(theServerSocket().address()));
LYXERR(Debug::FILES, "Executing command: " << command);
// FIXME UNICODE utf8 can be wrong for files
@@ -762,8 +764,10 @@ bool Formats::edit(Buffer const & buffer, FileName const &
filename,
if (!contains(command, token_from_format))
command += ' ' + token_from_format;
- command = subst(command, token_from_format,
quoteName(filename.toFilesystemEncoding()));
- command = subst(command, token_path_format,
quoteName(onlyPath(filename.toFilesystemEncoding())));
+ command = subst(command, token_from_format,
+ quoteName(filename.toFilesystemEncoding(),
quote_shell_filename));
+ command = subst(command, token_path_format,
+ quoteName(onlyPath(filename.toFilesystemEncoding()),
quote_shell_filename));
command = subst(command, token_socket_format,
quoteName(theServerSocket().address()));
LYXERR(Debug::FILES, "Executing command: " << command);
// FIXME UNICODE utf8 can be wrong for files
diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp
index 131e177..8f409d7 100644
--- a/src/support/filetools.cpp
+++ b/src/support/filetools.cpp
@@ -178,6 +178,8 @@ string const quoteName(string const & name, quote_style
style)
// simple parser in Systemcall.cpp do the substitution.
return '"' + subst(name, "\"", "\\\"") + '"';
#endif
+ case quote_shell_filename:
+ return quoteName(os::external_path(name), quote_shell);
case quote_python:
return "\"" + subst(subst(name, "\\", "\\\\"), "\"", "\\\"")
+ "\"";
diff --git a/src/support/filetools.h b/src/support/filetools.h
index 58d1154..bc1561c 100644
--- a/src/support/filetools.h
+++ b/src/support/filetools.h
@@ -110,6 +110,9 @@ enum quote_style {
/** Quote for the (OS dependant) shell. This is needed for command
line arguments of subprocesses. */
quote_shell,
+ /** Quote a file name for the (OS dependant) shell. This is needed
+ for file names as command line arguments of subprocesses. */
+ quote_shell_filename,
/** Quote for python. Use this if you want to store a filename in a
python script. Example: \code
os << "infile = " << quoteName(filename) << '\\n';
diff --git a/status.21x b/status.21x
index 388bd65..eaa85e4 100644
--- a/status.21x
+++ b/status.21x
@@ -69,6 +69,8 @@ What's new
- Fix output encoding information for non-TeX fonts XeTeX/LuaTeX on preview
pane (bug 8919).
+- Work around limitations of external image viewers on windows (bug 8892).
+
* INTERNALS