{"id":13661126,"url":"https://github.com/winstonwolff/ctags-javascript-coffeescript","last_synced_at":"2026-03-01T04:09:31.126Z","repository":{"id":31148073,"uuid":"34707939","full_name":"winstonwolff/ctags-javascript-coffeescript","owner":"winstonwolff","description":"exhuberant ctags options file plus tests","archived":false,"fork":false,"pushed_at":"2017-07-03T21:49:53.000Z","size":22,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-10T23:36:39.730Z","etag":null,"topics":["coffeescript","exuberant-ctags","javascript"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/winstonwolff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-28T04:19:18.000Z","updated_at":"2023-09-14T23:58:19.000Z","dependencies_parsed_at":"2022-08-27T08:21:00.077Z","dependency_job_id":null,"html_url":"https://github.com/winstonwolff/ctags-javascript-coffeescript","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/winstonwolff/ctags-javascript-coffeescript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winstonwolff%2Fctags-javascript-coffeescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winstonwolff%2Fctags-javascript-coffeescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winstonwolff%2Fctags-javascript-coffeescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winstonwolff%2Fctags-javascript-coffeescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/winstonwolff","download_url":"https://codeload.github.com/winstonwolff/ctags-javascript-coffeescript/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winstonwolff%2Fctags-javascript-coffeescript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29960236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T01:47:18.291Z","status":"online","status_checked_at":"2026-03-01T02:00:07.437Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coffeescript","exuberant-ctags","javascript"],"created_at":"2024-08-02T05:01:30.113Z","updated_at":"2026-03-01T04:09:31.106Z","avatar_url":"https://github.com/winstonwolff.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Exuberant CTAGS configuration for JavaScript and CoffeeScript\n\n[Exuberant CTAGS](http://ctags.sourceforge.net) doesn't support CoffeeScript\nnatively and its JavaScript support doesn't handle modern usage.\n\nThere are a bunch of sample regex's around to solve this. However I found\nthey worked most of the time and would fail for some situations. Different sets of \nconfigurations would fail for different bits of code. How can we unify them?\n\nI wrote some automated tests to check all the different scenarios as any\nagile programmer would.  Now we can adjust the configuration and see that\nall our situations are handled.\n\nThe regex rules in ctags.conf will support these idioms:\n\n## JavaScript\nFunctions \u0026 Methods in various forms:\n```\nfunction global_function(a, b){}                -\u003e global_function\nvar object_class = {                            -\u003e object_class\n  constructor: function(){}\n  object_method: function(){}                   -\u003e object_method\n}\nvar assigned_function = function(){}            -\u003e asigned_function\nNamespace.namespaced_func = function() {}       -\u003e namespaced_function\n```\n\nVariables, arrays, objects:\n```\nvar myarray = [1, 2];                           -\u003e myarray\nvar myobject = {a: 1};                          -\u003e myobject\nvar myvar = 1;                                  -\u003e myvar\n```\n\njQuery `bind` event handlers. Because the extracted symbol names include both the\nselector and the event, they are not useful for searches, but are very handy in\nthe TagBar window to see your file's structure.\n```\n$(\"#foo\").bind(\"dollar_bind_event\", function() {        -\u003e \"#foo\".dollar_bind_event\njQuery('#foo').bind(\"jquery_bind_event\", function() {   -\u003e '#foo'.jquery_bind_event\n$(bar).bind(\"var_bind_event\", function() {              -\u003e bar.var_bind_event\n```\n\nSymbols in RSpec style tests. \n`describe()` blocks use the first parameter as the symbol name.\n`context()` and `it()` blocks include the line's indentation for use in TagBar\nso you can sort of see the file's nested structure\n```\ndescribe(\"Dog\", function() {                            -\u003e Dog\n  describe(\"bark\", function() {                         -\u003e bark\n    context(\"while running\", function() {               -\u003e .    while running\n      it(\"is loud\", function() {                        -\u003e .      is loud\n```\n\n## Coffeescript\nClasses and functions are identified. When there is a namespace\nprefix, or an `@` instance prefix, the symbol name is correctly extracted.\n```\ncreate:  -\u003e                                             -\u003e create\n@_setWorkspaceXml: (workspace, codeXml) -\u003e              -\u003e _setWorkspaceXml\nclass stratego.CamperAppEditor extends phaser.State     -\u003e CamperAppEditor\nlocal_function = (gfx, focusObj) -\u003e                     -\u003e local_function\nwindow.global_function = (gfx, focusObj) -\u003e             -\u003e global_function\nwindow.pkg.pkg_function = (gfx, focusObj) -\u003e            -\u003e pkg_function\n```\n\nThis configuration started from here:\n\n - https://github.com/majutsushi/tagbar/wiki#exuberant-ctags-vanilla\n - https://github.com/majutsushi/tagbar/wiki#coffeescript\n\nIncedentally, if you are interested in electronics, check out [Electropoclypse](http://electropocalypse.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinstonwolff%2Fctags-javascript-coffeescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwinstonwolff%2Fctags-javascript-coffeescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinstonwolff%2Fctags-javascript-coffeescript/lists"}