summaryrefslogtreecommitdiff
path: root/.ctags.d
diff options
context:
space:
mode:
Diffstat (limited to '.ctags.d')
-rw-r--r--.ctags.d/base.ctags11
-rw-r--r--.ctags.d/nix.ctags14
2 files changed, 25 insertions, 0 deletions
diff --git a/.ctags.d/base.ctags b/.ctags.d/base.ctags
new file mode 100644
index 0000000..0bbf5ee
--- /dev/null
+++ b/.ctags.d/base.ctags
@@ -0,0 +1,11 @@
+--languages=Haskell
+--languages=+Python
+--languages=+C
+--languages=+Rust
+--languages=+Lisp
+--languages=+Scheme
+# common excludes
+--exclude=.mypy_cache
+--exclude=.git
+--exclude=.direnv
+--exclude=.ruff_cache
diff --git a/.ctags.d/nix.ctags b/.ctags.d/nix.ctags
new file mode 100644
index 0000000..7a12815
--- /dev/null
+++ b/.ctags.d/nix.ctags
@@ -0,0 +1,14 @@
+--langdef=nix
+--languages=+nix
+--langmap=nix:.nix
+# packages are "name = <tag>" or "pname = <tag>"
+--kinddef-nix=p,package,package definition
+--regex-nix=/[p?]name\s*=\s*"(\w+)"/\1/p/
+# functions have args, so have a : right of the =
+--kinddef-nix=f,function,function definition
+--regex-nix=/(\S+)\s*=\s+\w+:/\1/f/
+# attrs just have =, but only index if they have >=4 chars
+--kinddef-nix=a,attr,attribute definition
+--regex-nix=/\s+([a-zA-Z_0-9-]{4,20})\s*=/\1/a/
+# nixpkgs, ignore tests
+--exclude=*pkgs/test*