{"id":13861598,"url":"https://github.com/dkogan/xcscope.el","last_synced_at":"2025-02-28T10:25:16.858Z","repository":{"id":11564930,"uuid":"14052131","full_name":"dkogan/xcscope.el","owner":"dkogan","description":"cscope interface for (X)Emacs","archived":false,"fork":false,"pushed_at":"2023-06-26T21:10:29.000Z","size":217,"stargazers_count":122,"open_issues_count":6,"forks_count":29,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-01-11T04:50:19.193Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","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/dkogan.png","metadata":{"files":{"readme":"README.org","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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2013-11-01T19:44:59.000Z","updated_at":"2025-01-09T15:27:35.000Z","dependencies_parsed_at":"2024-04-13T15:17:43.731Z","dependency_job_id":"d229037a-c496-4488-b648-33c8b41523a7","html_url":"https://github.com/dkogan/xcscope.el","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Fxcscope.el","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Fxcscope.el/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Fxcscope.el/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Fxcscope.el/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkogan","download_url":"https://codeload.github.com/dkogan/xcscope.el/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241137689,"owners_count":19916176,"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-08-05T06:01:25.923Z","updated_at":"2025-02-28T10:25:16.827Z","avatar_url":"https://github.com/dkogan.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"* Overview\n\nThis is an emacs interface to the 'cscope' source cross-referencing tool\n(http://cscope.sf.net). It can answer such questions as\n\n- Where is this variable used?\n- What is the value of this preprocessor symbol?\n- Where is this function in the source files?\n- What functions call this function?\n- What functions are called by this function?\n- Where does the message \"out of space\" come from?\n- Where is this source file in the directory structure?\n- What files include this header file?\n- Where was this variable assigned-to?\n\nThe 'cscope' tool does the actual searching and lookup, while xcscope.el\nprovides a convenient interface.\n\n* GNU Global support\n\nGNU global (http://www.gnu.org/s/global/) is another source indexer much like\ncscope. It's better than cscope in some ways and worse in others. It also\nprovides a compatibility interface to allow it to be used just like cscope. This\nmeans that xcscope.el can be used as a front-end to GNU Global. To do that,\nsimply evaluate\n\n (setq cscope-program \"gtags-cscope\")\n\n* Usage\n\n** Quick-start\n\n1. Install xcscope.el through your system package manager or MELPA, or simply\n   evaluate xcscope.el.\n\n2. Evaluate\n\n- (require 'xcscope)\n- (cscope-setup)\n\nDone! cscope-minor-mode is now hooked to C, C++ and dired modes. Default\nbindings are all prefixed with C-c s. So, for instance, to find a symbol do C-c\ns s. This is analogous to the M-. of tags. All results are shown in a new\n*cscope* buffer which pops up when needed.\n\n** More-detailed usage instructions\n\nWhen xcscope.el is active, you can just use the keybindings (described below)\nwhen looking at source. You can also use the *Cscope* menu or a mouse pop-up\nmenu (button 3).\n\nWhen a search is performend, by default xcscope.el will traverse the directory\nhierarchy upwards, looking for the cscope database. If it doesn't find it, a new\ndatabase will be made in the *current* directory. To create the database in a\ndifferent (higher) directory, explicitly invoke C-c s I. A currently-existing\ndatabase can be removed simply by deleting cscope.*. By default, cscope updates\nthe database with every search. This is very convenient, but can be too slow for\nvery large source trees.\n\nThe third mouse button is bound to a popup menu for cscope. Shift-mouse\nbutton 3 invokes the last find command again. E.g. if you look for the symbol\n'main' and afterwards you want to look for another symbol, just press Shift\nand click the third button.\n\nSearch results are displayed in a *cscope* buffer, which pops up when results\nare available. You can then use button 2 (the middle button) on the mouse to\nedit the selected file, or you can move the text cursor over a selection and\npress [Enter]. You can also press [space] to show the result in the other window\n(*cscope* buffer stays focused). Alternately, the navigation commands invoked\nwith n/p, show the results too.\n\nEach cscope search adds its results to the *cscope* buffer. Thus this buffer\ncontains a history of all past searches. These sets of results can be navigated\nand manupulated similar to patches in diff-mode:\n\n - n/p navigates over individual results\n - k kills individual results\n\n - N/P or M-n/M-p navigates over file results\n - M-k kills file results\n\n - M-N/M-P navigates over result sets\n - M-K kills result sets\n\n - Navigation from outside the *cscope* buffer (C-c s n/p/N/P) is restricted to\n   the result set at (point)\n\nAny result set in the *cscope* buffer can be re-run with the 'r' key. This is\nuseful if the sources changed\n\n** Keybindings:\n\nAll keybindings use the \"C-c s\" prefix:\n\n | C-c s s | Find symbol.                                                   |\n | C-c s = | Find assignments to this symbol                                |\n | C-c s d | Find global definition.                                        |\n | C-c s g | Find global definition (alternate binding).                    |\n | C-c s G | Find global definition without prompting.                      |\n | C-c s c | Find functions calling a function.                             |\n | C-c s C | Find called functions (list functions called from a function). |\n | C-c s t | Find text string.                                              |\n | C-c s e | Find egrep pattern.                                            |\n | C-c s f | Find a file.                                                   |\n | C-c s i | Find files #including a file.                                  |\n\nThese pertain to navigation through the search results:\n\n | C-c s b | Display *cscope* buffer.             |\n | C-c s B | Auto display *cscope* buffer toggle. |\n | C-c s n | Next symbol.                         |\n | C-c s N | Next file.                           |\n | C-c s p | Previous symbol.                     |\n | C-c s P | Previous file.                       |\n | C-c s u | Pop mark.                            |\n\nThese pertain to setting and unsetting the variable,\n`cscope-initial-directory', (location searched for the cscope database\n directory):\n\n | C-c s a | Set initial directory.   |\n | C-c s A | Unset initial directory. |\n\nThese pertain to cscope database maintenance:\n\n | C-c s L | Create list of files to index.                                              |\n | C-c s I | Create list and index.                                                      |\n | C-c s E | Edit list of files to index.                                                |\n | C-c s W | Locate this buffer's cscope directory (\"W\" --\u003e \"where\").                    |\n | C-c s S | Locate this buffer's cscope directory. (alternate binding: \"S\" --\u003e \"show\"). |\n | C-c s T | Locate this buffer's cscope directory. (alternate binding: \"T\" --\u003e \"tell\"). |\n | C-c s D | Dired this buffer's directory.                                              |\n\n** Interesting configuration variables:\n\n- cscope-truncate-lines\n\n  This is the value of `truncate-lines' to use in cscope\n  buffers; the default is the current setting of\n  `truncate-lines'.  This variable exists because it can be\n  easier to read cscope buffers with truncated lines, while\n  other buffers do not have truncated lines.\n  \n- cscope-use-relative-paths\n\n  If non-nil, use relative paths when creating the list of files\n  to index.  The path is relative to the directory in which the\n  cscope database will be created.  If nil, absolute paths will\n  be used.  Absolute paths are good if you plan on moving the\n  database to some other directory (if you do so, you'll\n  probably also have to modify `cscope-database-regexps').\n  Absolute paths may also be good if you share the database file\n  with other users (you'll probably want to specify some\n  automounted network path for this).\n  \n- cscope-index-recursively\n\n  If non-nil, index files in the current directory and all\n  subdirectories.  If nil, only files in the current directory\n  are indexed.  This variable is only used when creating the\n  list of files to index, or when creating the list of files and\n  the corresponding cscope database.\n  \n- cscope-name-line-width\n\n  The width of the combined \"function name:line number\" field in\n  the cscope results buffer.  If negative, the field is\n  left-justified.\n  \n- cscope-option-....\n\n Various options passed to the 'cscope' process. Controls things like include\n directories, database compression, database type, etc.\n\n- cscope-display-cscope-buffer\n\n  If non-nil, display the *cscope* buffer after each search (default). This\n  variable can be set in order to reduce the number of keystrokes required to\n  navigate through the matches.\n  \n* Provenance\n\nThis is a continuation of the xcscope.el (by Darryl Okahata) that ships in the\nCVS tree of cscope itself. The code in the cscope tree is stable, so /this/ tree\nexpands on the original source, fixing various bugs and adding features.\n\n* New features relative to the cscope CVS tree\n\n- *(cscope-setup) must be called to enable cscope-minor-mode in C and C++ major\n  modes*\n\n- New searches are appended to the *cscope* buffer, instead of overwriting. The\n  user thus sees a history of cscope search results in this buffer, and is able\n  to navigate through all of them. There is a size limit to keep the buffer from\n  growing out of control.\n\n- The *cscope* buffer can be navigated and edited similarly to emacs Diff buffers:\n\n  - n/p navigates over individual results\n  - k kills individual results\n\n  - N/P or M-n/M-p navigates over file results\n  - M-k kills file results\n\n  - M-N/M-P navigates over result sets\n  - M-K kills result sets\n\n  - Navigation from outside the *cscope* buffer (C-c s n/p/N/P) is restricted to\n    the result set at (point)\n\n- Previous searches can be re-run with the 'r' key in the *cscope* buffer. These\n  are written in-place, overwriting the older results.\n\n- Fuzzy matching is now enabled/disabled for specific types of searches. This\n  was implemented earlier, but the implementation had a bug and wasn't working\n\n- xcscope.el can now work remotely over TRAMP\n\n- The cscope-index output now goes to the echo area instead of an explicit new\n  buffer that the user must deal with\n\n- Fuzzy searching now works for non-trivial regex searches\n\n- The mouse face respects cscope-use-face\n\n- Better mouse support:\n  - button3 opens a popup menu that runs prompt-less searches\n  - shift-button3 reruns the last search on the point. This is thus even more\n    prompt-less\n\n- Shift-return or Shift-mouse2 now open the result in the same window as the\n  *cscope* buffer\n\n- Some bold highlighting in the *cscope* results: the sought term, the search\n  directory\n\n- Removed the external 'cscope-indexer' script; this is now handled inside\n  xcscope.el. Additionally the list of source directories to ignore and the list\n  of filename extensions to index are now customizable in the emacs\n  customization interface\n\n- Various cscope options (kernel mode, inverted index, etc) can now be accessed\n  through the emacs variables\n\n* License and authorship\n\nxcscope.el was written by Darryl Okahata, with patches contributed by Triet H.\nLai and Steven Elliott. Dima Kogan added some features.\n\nxcscope.el is distributed under the terms of version 2 (or later) of the GNU\nGeneral Public License\n\n* Contact\n\nThe maintainer is Dima Kogan \u003cdima@secretsauce.net\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkogan%2Fxcscope.el","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdkogan%2Fxcscope.el","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkogan%2Fxcscope.el/lists"}