From d73b19e379bcc96557e0178ff3d4a2a5184c3d43 Mon Sep 17 00:00:00 2001 From: Kaushal Modi Date: Fri, 17 Aug 2018 04:52:10 -0400 Subject: [PATCH] Look for user nim.cfg in "nim/" subdir in usual config dir locations (#8662) Fixes https://github.com/nim-lang/Nim/issues/8661. --- changelog.md | 7 +++++++ compiler/nimconf.nim | 2 +- lib/pure/ospaths.nim | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 73d526136..90d74608b 100644 --- a/changelog.md +++ b/changelog.md @@ -230,4 +230,11 @@ - On Posix systems the global system wide configuration is now put under ``/etc/nim/nim.cfg``, it used to be ``/etc/nim.cfg``. Usually it does not exist, however. +- On Posix systems the user configuration is now looked under ``$XDG_CONFIG_HOME/nim/nim.cfg`` + (if ``XDG_CONFIG_HOME`` is not defined, then under ``~/.config/nim/nim.cfg``). It used to be + ``$XDG_CONFIG_DIR/nim.cfg`` (and ``~/.config/nim.cfg``). + + Similarly, on Windows, the user configuration is now looked under ``%APPDATA%/nim/nim.cfg``. + This used to be ``%APPDATA%/nim.cfg``. + ### Bugfixes diff --git a/compiler/nimconf.nim b/compiler/nimconf.nim index cb7e52cf7..1a8a0acb5 100644 --- a/compiler/nimconf.nim +++ b/compiler/nimconf.nim @@ -220,7 +220,7 @@ proc readConfigFile( return true proc getUserConfigPath(filename: string): string = - result = joinPath(getConfigDir(), filename) + result = joinPath([getConfigDir(), "nim", filename]) proc getSystemConfigPath(conf: ConfigRef; filename: string): string = # try standard configuration file (installation did not distribute files diff --git a/lib/pure/ospaths.nim b/lib/pure/ospaths.nim index cfa5e53c1..0414eae5d 100644 --- a/lib/pure/ospaths.nim +++ b/lib/pure/ospaths.nim @@ -525,14 +525,14 @@ proc getConfigDir*(): string {.rtl, extern: "nos$1", ## Returns the config directory of the current user for applications. ## ## On non-Windows OSs, this proc conforms to the XDG Base Directory - ## spec. Thus, this proc returns the value of the XDG_CONFIG_DIR environment + ## spec. Thus, this proc returns the value of the XDG_CONFIG_HOME environment ## variable if it is set, and returns the default configuration directory, ## "~/.config/", otherwise. ## ## An OS-dependent trailing slash is always present at the end of the ## returned string; `\\` on Windows and `/` on all other OSs. when defined(windows): return string(getEnv("APPDATA")) & "\\" - elif getEnv("XDG_CONFIG_DIR"): return string(getEnv("XDG_CONFIG_DIR")) & "/" + elif getEnv("XDG_CONFIG_HOME"): return string(getEnv("XDG_CONFIG_HOME")) & "/" else: return string(getEnv("HOME")) & "/.config/" proc getTempDir*(): string {.rtl, extern: "nos$1",