forked from lix-project/lix
Allow dashes in identifiers
In Nixpkgs, the attribute in all-packages.nix corresponding to a package is usually equal to the package name. However, this doesn't work if the package contains a dash, which is fairly common. The convention is to replace the dash with an underscore (e.g. "dbus-lib" becomes "dbus_glib"), but that's annoying. So now dashes are valid in variable / attribute names, allowing you to write: dbus-glib = callPackage ../development/libraries/dbus-glib { }; and buildInputs = [ dbus-glib ]; Since we don't have a negation or subtraction operation in Nix, this is unambiguous.
This commit is contained in:
parent
f46612be96
commit
95c74eae26
|
@ -14,6 +14,11 @@
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Dashes are now valid as part of identifiers and attribute
|
||||||
|
names.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Nix no longer sets the immutable bit on files in the Nix
|
<para>Nix no longer sets the immutable bit on files in the Nix
|
||||||
store. Instead, the recommended way to guard the Nix store
|
store. Instead, the recommended way to guard the Nix store
|
||||||
|
|
|
@ -78,7 +78,7 @@ The hook `nix-mode-hook' is run when Nix mode is started.
|
||||||
("\\<isNull\\>" . font-lock-builtin-face)
|
("\\<isNull\\>" . font-lock-builtin-face)
|
||||||
("[a-zA-Z][a-zA-Z0-9\\+-\\.]*:[a-zA-Z0-9%/\\?:@&=\\+\\$,_\\.!~\\*'-]+"
|
("[a-zA-Z][a-zA-Z0-9\\+-\\.]*:[a-zA-Z0-9%/\\?:@&=\\+\\$,_\\.!~\\*'-]+"
|
||||||
. font-lock-constant-face)
|
. font-lock-constant-face)
|
||||||
("\\<\\([a-zA-Z_][a-zA-Z0-9_'\.]*\\)[ \t]*="
|
("\\<\\([a-zA-Z_][a-zA-Z0-9_'\-\.]*\\)[ \t]*="
|
||||||
(1 font-lock-variable-name-face nil nil))
|
(1 font-lock-variable-name-face nil nil))
|
||||||
("<[a-zA-Z0-9._\\+-]+\\(/[a-zA-Z0-9._\\+-]+\\)*>"
|
("<[a-zA-Z0-9._\\+-]+\\(/[a-zA-Z0-9._\\+-]+\\)*>"
|
||||||
. font-lock-constant-face)
|
. font-lock-constant-face)
|
||||||
|
|
|
@ -78,7 +78,7 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s)
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
ID [a-zA-Z\_][a-zA-Z0-9\_\']*
|
ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]*
|
||||||
INT [0-9]+
|
INT [0-9]+
|
||||||
PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
|
PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
|
||||||
SPATH \<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>
|
SPATH \<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>
|
||||||
|
|
|
@ -4,7 +4,7 @@ let
|
||||||
|
|
||||||
as = { x.y.z = 123; a.b.c = 456; };
|
as = { x.y.z = 123; a.b.c = 456; };
|
||||||
|
|
||||||
bs = { foo.bar = "foo"; };
|
bs = { f-o-o.bar = "foo"; };
|
||||||
|
|
||||||
or = x: y: x || y;
|
or = x: y: x || y;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ in
|
||||||
as.foo or "foo"
|
as.foo or "foo"
|
||||||
as.x.y.bla or as.a.b.c
|
as.x.y.bla or as.a.b.c
|
||||||
as.a.b.c or as.x.y.z
|
as.a.b.c or as.x.y.z
|
||||||
as.x.y.bla or bs.foo.bar or "xyzzy"
|
as.x.y.bla or bs.f-o-o.bar or "xyzzy"
|
||||||
as.x.y.bla or bs.bar.foo or "xyzzy"
|
as.x.y.bla or bs.bar.foo or "xyzzy"
|
||||||
123.bla or null.foo or "xyzzy"
|
123.bla or null.foo or "xyzzy"
|
||||||
# Backwards compatibility test.
|
# Backwards compatibility test.
|
||||||
|
|
Loading…
Reference in a new issue