{"id":13417929,"url":"https://github.com/Andersbakken/rtags","last_synced_at":"2025-03-15T02:32:02.477Z","repository":{"id":1582735,"uuid":"2070482","full_name":"Andersbakken/rtags","owner":"Andersbakken","description":"A client/server indexer for c/c++/objc[++] with integration for Emacs based on clang.","archived":false,"fork":false,"pushed_at":"2024-03-13T00:07:22.000Z","size":25384,"stargazers_count":1819,"open_issues_count":175,"forks_count":253,"subscribers_count":80,"default_branch":"master","last_synced_at":"2024-04-14T05:47:44.100Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.rtags.net","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Andersbakken.png","metadata":{"files":{"readme":"README.org","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-07-19T05:15:16.000Z","updated_at":"2024-05-02T00:53:33.378Z","dependencies_parsed_at":"2023-12-13T22:46:40.486Z","dependency_job_id":"5dd756f6-4786-47f3-887a-c45160ab3e12","html_url":"https://github.com/Andersbakken/rtags","commit_stats":{"total_commits":7379,"total_committers":147,"mean_commits":"50.197278911564624","dds":"0.18186746171567958","last_synced_commit":"9e442e5b30b6e9bbd3eb3bbc59db33177f15d730"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andersbakken%2Frtags","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andersbakken%2Frtags/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andersbakken%2Frtags/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andersbakken%2Frtags/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Andersbakken","download_url":"https://codeload.github.com/Andersbakken/rtags/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243675057,"owners_count":20329200,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-07-30T22:00:55.633Z","updated_at":"2025-03-15T02:32:02.471Z","avatar_url":"https://github.com/Andersbakken.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings","Integrated Development Environment","C++","排序","集成开发环境"],"sub_categories":["集成开发环境"],"readme":"#+OPTIONS: ^:nil\n\n#+html: \u003cdiv align=\"center\"\u003e\u003ca href=\"https://travis-ci.org/Andersbakken/rtags\"\u003e\u003cimg alt=\"MELPA\" src=\"https://travis-ci.org/Andersbakken/rtags.svg?branch=master\"/\u003e\u003c/a\u003e \u003ca href=\"https://www.gnu.org/licenses/gpl-3.0.txt\"\u003e\u003cimg alt=\"MELPA\" src=\"https://img.shields.io/badge/license-GPL%203-brightgreen.svg\"/\u003e\u003c/a\u003e\u003c/div\u003e\n#+html: \u003cdiv align=\"center\"\u003e\u003ctable align=\"center\" style=\"width:100%\"\u003e\u003ctr\u003e\u003cth\u003ertags\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://melpa.org/#/rtags\"\u003e\u003cimg alt=\"MELPA\" src=\"https://melpa.org/packages/rtags-badge.svg\"/\u003e\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\u003c/div\u003e\n#+html: \u003ctable align=\"center\" style=\"width:100%\"\u003e\u003ctr\u003e\u003cth\u003ertags-xref\u003c/th\u003e\u003cth\u003eac-rtags\u003c/th\u003e\u003cth\u003ecompany-rtags\u003c/th\u003e\u003cth\u003eflycheck-rtags\u003c/th\u003e\u003cth\u003ehelm-rtags\u003c/th\u003e\u003cth\u003eivy-rtags\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://melpa.org/#/rtags-xref\"\u003e\u003cimg alt=\"MELPA\" src=\"https://melpa.org/packages/rtags-xref-badge.svg\"/\u003e\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://melpa.org/#/ac-rtags\"\u003e\u003cimg alt=\"MELPA\" src=\"https://melpa.org/packages/ac-rtags-badge.svg\"/\u003e\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://melpa.org/#/company-rtags\"\u003e\u003cimg alt=\"MELPA\" src=\"https://melpa.org/packages/company-rtags-badge.svg\"/\u003e\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://melpa.org/#/flycheck-rtags\"\u003e\u003cimg alt=\"MELPA\" src=\"https://melpa.org/packages/flycheck-rtags-badge.svg\"/\u003e\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://melpa.org/#/helm-rtags\"\u003e\u003cimg alt=\"MELPA\" src=\"https://melpa.org/packages/helm-rtags-badge.svg\"/\u003e\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://melpa.org/#/ivy-rtags\"\u003e\u003cimg alt=\"MELPA\" src=\"https://melpa.org/packages/ivy-rtags-badge.svg\"/\u003e\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\n* Introduction\nRTags is a client/server application that indexes C/C++ code and keeps a\npersistent file-based database of references, declarations, definitions,\nsymbolnames etc. There's also limited support for ObjC/ObjC++. It allows you\nto find symbols by name (including nested class and namespace scope). Most\nimportantly we give you proper follow-symbol and find-references support. We\nalso have neat little things like rename-symbol, integration with clang's\n\"fixits\" (https://clang.llvm.org/diagnostics.html). We also integrate with\nflymake using clang's vastly superior errors and warnings. Since RTags\nconstantly will reindex \"dirty\" files you get live updates of compiler errors\nand warnings. Since we already know how to compile your sources we have a way\nto quickly bring up the preprocessed output of the current source file in a\nbuffer.\n\nWhile existing taggers like gnu global, cscope, etags, ctags etc do a decent\njob for C they often fall a little bit short for C++. With its incredible\nlexical complexity, parsing C++ is an incredibly hard task and we make no\nbones about the fact that the only reason we are able to improve on the\ncurrent tools is because of clang (https://clang.llvm.org/). RTags is named\nRTags in recognition of Roberto Raggi on whose C++ parser we intended to base\nthis project but he assured us clang was the way to go. The name stuck\nthough.\n\nTarball releases are available here:\nhttps://github.com/Andersbakken/rtags/releases/\n\n* TLDR Quickstart\nWe assume you have something to generate a [[https://sarcasm.github.io/notes/dev/compilation-database.html][JSON Compilation Database]]\nfor your project. Your build system probably has a way to generate it,\nor you can look at something like [[https://github.com/rizsotto/Bear][Bear]].\n\nBuild RTags\n\n#+BEGIN_SRC sh\ngit clone --recursive https://github.com/Andersbakken/rtags.git\ncd rtags\ncmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .\nmake\n#+END_SRC\n\nStart the RTags daemon (=rdm=)\n\n#+BEGIN_SRC sh\n./bin/rdm \u0026\n#+END_SRC\n\nIndex the RTags project, and wait until =rdm= is silent\n\n#+BEGIN_SRC sh\n./bin/rc -J .\n#+END_SRC\n\nOpen source file in =emacs=\n\n#+BEGIN_SRC sh\nemacs +74:34 src/rdm.cpp\n#+END_SRC\n\nLoad =rtags.el=\n\n#+BEGIN_EXAMPLE\nM-: (load-file \"rtags.el\") RET\n#+END_EXAMPLE\n\nEnsure =rc= can be found\n\n#+BEGIN_EXAMPLE\nM-x set-variable RET rtags-path RET \"../bin\" RET\n#+END_EXAMPLE\n\nCall =rtags-find-symbol-at-point=\n\n#+BEGIN_EXAMPLE\nM-x rtags-find-symbol-at-point RET\n#+END_EXAMPLE\n\nYour location is now on the definition of =Server::instance()=\n\n* Documentation\nThe documentation can be found in the [[https://github.com/Andersbakken/rtags/wiki][Wiki]].\n* Disclaimer\nRTags is still under development and is not the most stable piece of software\nyou'll ever find. We're constantly working to improve on it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAndersbakken%2Frtags","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAndersbakken%2Frtags","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAndersbakken%2Frtags/lists"}