diff options
-rw-r--r-- | MANUAL.txt | 19 | ||||
-rw-r--r-- | pandoc.cabal | 4 | ||||
-rw-r--r-- | src/Text/Pandoc/App.hs | 18 | ||||
-rw-r--r-- | src/Text/Pandoc/App/CommandLineOptions.hs | 14 | ||||
-rw-r--r-- | test/command/lua-pandoc-state.md | 2 |
5 files changed, 27 insertions, 30 deletions
diff --git a/MANUAL.txt b/MANUAL.txt index 8ef6c54e3..50ca91300 100644 --- a/MANUAL.txt +++ b/MANUAL.txt @@ -349,18 +349,13 @@ General options {.options} : Specify the user data directory to search for pandoc data files. If this option is not specified, the default user data directory - will be used. This is, in UNIX: - - $HOME/.pandoc - - in Windows XP: - - C:\Documents And Settings\USERNAME\Application Data\pandoc - - and in Windows Vista or later: - - C:\Users\USERNAME\AppData\Roaming\pandoc - + will be used. On \*nix and macOS systems this will be the `pandoc` + subdirectory of the XDG data directory (by default, + `$HOME/.local/share`, overridable by setting the `XDG_DATA_HOME` + environment variable). If that directory does not exist, + `$HOME/.pandoc` will be used (for backwards compatibility). + In Windows the default user data directory is + `C:\Users\USERNAME\AppData\Roaming\pandoc`. You can find the default user data directory on your system by looking at the output of `pandoc --version`. A `reference.odt`, `reference.docx`, `epub.css`, `templates`, diff --git a/pandoc.cabal b/pandoc.cabal index 507136790..80b1b8ec7 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -363,7 +363,7 @@ library exceptions >= 0.8 && < 0.11, filepath >= 1.1 && < 1.5, process >= 1.2.3 && < 1.7, - directory >= 1 && < 1.4, + directory >= 1.2.3 && < 1.4, bytestring >= 0.9 && < 0.11, text >= 1.1.1.0 && < 1.3, time >= 1.5 && < 1.10, @@ -661,7 +661,7 @@ test-suite test-pandoc base64-bytestring >= 0.1 && < 1.1, text >= 1.1.1.0 && < 1.3, time >= 1.5 && < 1.10, - directory >= 1 && < 1.4, + directory >= 1.2.3 && < 1.4, filepath >= 1.1 && < 1.5, hslua >= 1.0 && < 1.1, process >= 1.2.3 && < 1.7, diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs index 6718617e1..b0527cd79 100644 --- a/src/Text/Pandoc/App.hs +++ b/src/Text/Pandoc/App.hs @@ -38,7 +38,7 @@ import qualified Data.Text.Lazy.Encoding as TE import qualified Data.Text.Encoding.Error as TE import qualified Data.Text.Encoding.Error as TSE import Network.URI (URI (..), parseURI) -import System.Directory (getAppUserDataDirectory) +import System.Directory (doesDirectoryExist) import System.Exit (exitSuccess) import System.FilePath import System.IO (nativeNewline, stdout) @@ -55,7 +55,8 @@ import Text.Pandoc.PDF (makePDF) import Text.Pandoc.Readers.Markdown (yamlToMeta) import Text.Pandoc.SelfContained (makeDataURI, makeSelfContained) import Text.Pandoc.Shared (eastAsianLineBreakFilter, stripEmptyParagraphs, - headerShift, isURI, tabFilter, uriPathToPath, filterIpynbOutput) + headerShift, isURI, tabFilter, uriPathToPath, filterIpynbOutput, + defaultUserDataDirs) import qualified Text.Pandoc.UTF8 as UTF8 #ifndef _WINDOWS import System.Posix.IO (stdOutput) @@ -89,10 +90,15 @@ convertWithOpts opts = do | otherwise -> xs datadir <- case optDataDir opts of - Nothing -> E.catch - (Just <$> getAppUserDataDirectory "pandoc") - (\e -> let _ = (e :: E.SomeException) - in return Nothing) + Nothing -> do + ds <- defaultUserDataDirs + let selectUserDataDir [] = return Nothing + selectUserDataDir (dir:dirs) = do + exists <- doesDirectoryExist dir + if exists + then return (Just dir) + else selectUserDataDir dirs + selectUserDataDir ds Just _ -> return $ optDataDir opts -- assign reader and writer based on options and filenames diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs index 7f05418d9..36c68057c 100644 --- a/src/Text/Pandoc/App/CommandLineOptions.hs +++ b/src/Text/Pandoc/App/CommandLineOptions.hs @@ -46,15 +46,14 @@ import Text.Pandoc.App.Opt (Opt (..), LineEnding (..)) import Text.Pandoc.Filter (Filter (..)) import Text.Pandoc.Highlighting (highlightingStyles) import Text.Pandoc.Writers.Math (defaultMathJaxURL, defaultKaTeXURL) -import Text.Pandoc.Shared (ordNub, safeRead) +import Text.Pandoc.Shared (ordNub, safeRead, defaultUserDataDirs) import Text.Printf #ifdef EMBED_DATA_FILES import Text.Pandoc.Data (dataFiles) -import System.Directory (getAppUserDataDirectory) #else import Paths_pandoc (getDataDir) -import System.Directory (getAppUserDataDirectory, getDirectoryContents) +import System.Directory (getDirectoryContents) #endif import qualified Control.Exception as E @@ -837,13 +836,11 @@ options = (NoArg (\_ -> do prg <- getProgName - defaultDatadir <- E.catch - (getAppUserDataDirectory "pandoc") - (\e -> let _ = (e :: E.SomeException) - in return "") + defaultDatadirs <- defaultUserDataDirs UTF8.hPutStrLn stdout (prg ++ " " ++ pandocVersion ++ compileInfo ++ "\nDefault user data directory: " ++ - defaultDatadir ++ copyrightMessage) + intercalate " or " defaultDatadirs ++ + ('\n':copyrightMessage)) exitSuccess )) "" -- "Print version" @@ -872,7 +869,6 @@ usageMessage programName = usageInfo (programName ++ " [OPTIONS] [FILES]") copyrightMessage :: String copyrightMessage = intercalate "\n" [ - "", "Copyright (C) 2006-2019 John MacFarlane", "Web: http://pandoc.org", "This is free software; see the source for copying conditions.", diff --git a/test/command/lua-pandoc-state.md b/test/command/lua-pandoc-state.md index 33045f64a..2aece619b 100644 --- a/test/command/lua-pandoc-state.md +++ b/test/command/lua-pandoc-state.md @@ -1,5 +1,5 @@ ``` -% pandoc --lua-filter=command/lua-pandoc-state.lua +% pandoc --lua-filter=command/lua-pandoc-state.lua --data-dir=foo Hello ^D # input files: 0 |