Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for the Nix expression language (Nix / NixOS) #261

Closed
blueyed opened this issue Mar 7, 2015 · 5 comments
Closed

Support for the Nix expression language (Nix / NixOS) #261

blueyed opened this issue Mar 7, 2015 · 5 comments

Comments

@blueyed
Copy link
Contributor

blueyed commented Mar 7, 2015

Description: https://nixos.org/nix/manual/#ch-expression-language

There is some very basic config in https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/tools/misc/ctags/wrapped.nix:

--langdef=NIX
--langmap=NIX:.nix
--regex-NIX=/([^ \t*]*)[ \t]*=/\1/f/

I have (hopefully) improved this a bit locally:

--regex-NIX=/([^ \t*]*)[ \t]*=.*:/\1/f/

But it's still too basic and would need a separate parser probably.

I am new to Nix/NixOS myself, and have therefore not much knowledge
about this language myself.

blueyed referenced this issue in NixOS/nixpkgs Mar 7, 2015
svn path=/nixpkgs/trunk/; revision=18483
@vcunat
Copy link

vcunat commented Mar 7, 2015

Nix itself parses the language - it uses standard parsing and lexing tools https://github.com/NixOS/nix/tree/master/src/libexpr (probably most useful in context of this issue). Then I know about some stuff in haskell https://github.com/peti/language-nix, and there are syntax highlighters for various editors (or highlighting libraries).

@masatake
Copy link
Member

masatake commented Mar 8, 2015

As an initial version, a regular expression based implementation is o.k; it is always better than nothing.
Though I have to rethink the directory structures, optlib is the first class way to implement an parser.
You can write a C based parser later. The important point is the "kinds" compatibility between regex
based parser and C based parser. If the compatibility of kinds are kept, no one takes care the way of implementation.

However, if nix implementation has real parser, why don't you utilize it? My xmcd is for you.
See data/optlib/cofee.ctags and libexec/drivers/coffeetags.

@roosemberth
Copy link

Hi, what's the status of this issue?

@masatake
Copy link
Member

masatake commented Dec 9, 2020

A pull request is welcome.

@masatake masatake closed this as completed Dec 9, 2020
@lf-
Copy link

lf- commented Jul 4, 2021

If anyone wants a Nix ctags implementation, I wrote one in my tool here: https://github.com/lf-/nix-doc

It's Rust so not possible to integrate here though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants