adding ctags-wropped. A wrapper for ctags adding some language (more)
language support for .php .js .nix and .as files svn path=/nixpkgs/trunk/; revision=15476
This commit is contained in:
parent
8cc8965379
commit
3cf455286f
pkgs
69
pkgs/development/tools/misc/ctags/wrapped.nix
Normal file
69
pkgs/development/tools/misc/ctags/wrapped.nix
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{pkgs, ctags, writeScriptBin, lib, makeOverridable}:
|
||||||
|
|
||||||
|
# define some ctags wrappers adding support for some not that common languages
|
||||||
|
# customization:
|
||||||
|
# a) add stuff here
|
||||||
|
# b) override asLang, phpLang, ... using packageOverrides
|
||||||
|
# c) use ctagsWrapped.override {args = [ your liste ];}
|
||||||
|
|
||||||
|
# install using -iA ctagsWrapped.ctagsWrapped
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
# the derivation. use language extensions specified by args
|
||||||
|
ctagsWrapped = makeOverridable ( {args, name} : pkgs.writeScriptBin name ''
|
||||||
|
#!/bin/sh
|
||||||
|
exec ${pkgs.ctags}/bin/ctags ${lib.concatStringsSep " " (map lib.escapeShellArg args)} "$@"
|
||||||
|
'') {
|
||||||
|
args = let x = pkgs.ctagsWrapped; in lib.concatLists [
|
||||||
|
x.defaultArgs x.phpLang x.jsLang x.nixLang x.asLang
|
||||||
|
];
|
||||||
|
name = "${ctags.name}-wrapped";
|
||||||
|
};
|
||||||
|
|
||||||
|
### language arguments
|
||||||
|
|
||||||
|
# don't scan version control directories
|
||||||
|
defaultArgs = [
|
||||||
|
"--exclude=\.svn"
|
||||||
|
"--exclude=\.hg"
|
||||||
|
"--exclude=\.git"
|
||||||
|
"--exclude=\_darcs"
|
||||||
|
"--sort=yes"
|
||||||
|
];
|
||||||
|
|
||||||
|
# actionscript
|
||||||
|
asLang = [
|
||||||
|
"--langdef=ActionScript"
|
||||||
|
"--langmap=ActionScript:.as"
|
||||||
|
"--regex-ActionScript=/function[ \\t]+([A-Za-z0-9_]+)[ \\t]*\\(/\1/f,function,functions/"
|
||||||
|
"--regex-ActionScript=/function[ \\t]+(set|get)[ \\t]+([A-Za-z0-9_]+)[ \\t]*\\(/\2/p,property,properties/"
|
||||||
|
"--regex-ActionScript=/interface[ \\t]+[a-z0-9_.]*([A-Z][A-Za-z0-9_]+)/\\1/i,interface,interfaces/"
|
||||||
|
"--regex-ActionScript=/package[ \\t]+([^ \\t]*)/\\1/p/"
|
||||||
|
"--regex-ActionScript=/class[ \\t]+[a-z0-9_.]*([A-Z][A-Za-z0-9_]+)/\\1/c,class,classes/"
|
||||||
|
];
|
||||||
|
|
||||||
|
# PHP
|
||||||
|
phpLang = [
|
||||||
|
"--langmap=PHP:.php"
|
||||||
|
"--regex-PHP=/abstract class ([^ ]*)/\\1/c/"
|
||||||
|
"--regex-PHP=/interface ([^ ]*)/\\1/i/"
|
||||||
|
"--regex-PHP=/function[ \\t]+([^ (]*)/\\1/f/"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Javascript: also find unnamed functions and funtions beeing passed within a dict.
|
||||||
|
# the dict properties is used to implement duck typing in frameworks
|
||||||
|
# var foo = function () { ... }
|
||||||
|
# {
|
||||||
|
# a : function () {}
|
||||||
|
jsLang = [
|
||||||
|
"--regex-JavaScript=/([^ \\t]*)[ \\t]*:[ \\t]*function[ \\t]*\\(/\\1/f/"
|
||||||
|
];
|
||||||
|
|
||||||
|
# find foo in "foo =", don't think we can do a lot better
|
||||||
|
nixLang = [
|
||||||
|
"--langdef=NIX"
|
||||||
|
"--langmap=NIX:.nix"
|
||||||
|
"--regex-NIX=/\([^ \\t*]*\)[ \\t]*=/\\1/f/"
|
||||||
|
];
|
||||||
|
}
|
@ -2371,6 +2371,10 @@ let
|
|||||||
inherit fetchurl stdenv;
|
inherit fetchurl stdenv;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ctagsWrapped = import ../development/tools/misc/ctags/wrapped.nix {
|
||||||
|
inherit pkgs ctags writeScriptBin lib makeOverridable;
|
||||||
|
};
|
||||||
|
|
||||||
cmake = import ../development/tools/build-managers/cmake {
|
cmake = import ../development/tools/build-managers/cmake {
|
||||||
inherit fetchurl stdenv replace ncurses;
|
inherit fetchurl stdenv replace ncurses;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user