{"action":"created","issue":{"url":"https://api.github.com/repos/atom/symbols-view/issues/138","labels_url":"https://api.github.com/repos/atom/symbols-view/issues/138/labels{/name}","comments_url":"https://api.github.com/repos/atom/symbols-view/issues/138/comments","events_url":"https://api.github.com/repos/atom/symbols-view/issues/138/events","html_url":"https://github.com/atom/symbols-view/issues/138","id":121886405,"number":138,"title":"Enhancement - generate project tags internally and hide from user","user":{"login":"mshenfield","id":4812055,"avatar_url":"https://avatars.githubusercontent.com/u/4812055?v=3","gravatar_id":"","url":"https://api.github.com/users/mshenfield","html_url":"https://github.com/mshenfield","followers_url":"https://api.github.com/users/mshenfield/followers","following_url":"https://api.github.com/users/mshenfield/following{/other_user}","gists_url":"https://api.github.com/users/mshenfield/gists{/gist_id}","starred_url":"https://api.github.com/users/mshenfield/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mshenfield/subscriptions","organizations_url":"https://api.github.com/users/mshenfield/orgs","repos_url":"https://api.github.com/users/mshenfield/repos","events_url":"https://api.github.com/users/mshenfield/events{/privacy}","received_events_url":"https://api.github.com/users/mshenfield/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/atom/symbols-view/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-12-12T23:06:40Z","updated_at":"2015-12-16T18:16:33Z","closed_at":null,"body":"While symbols-view is an awesome plugin, it is still very much an expert user experience which requires knowledge of ctags to generate tag files for `symbols-view:toggle-project-symbols`.  To enhance the experience as an user, it would be nice if ctags was entirely hidden, and symbols-view smartly generated tags when the user requested them through one of the symbols-view methods.\r\n\r\nSome of the mechanism required for this already exist in the [`TagGenerator`](https://github.com/atom/symbols-view/blob/7035e854cf0c768983a8458b59b11c9575457118/lib/tag-generator.coffee#L56) class.\r\n\r\nI think a discussion around when symbols-view would generate and cache the project tags file would be valuable.  Some possibilities:\r\n\r\n* the user manually triggers tag generations through a `symbols-view:generate-project-symbols` command\r\n* symbols-view only generates tags only when it has none in memory, usually the first time symbols are needed after a project is added\r\n* like the previous, but file watchers are added that trigger symbol regeneration when a file is changed\r\n\r\nI also am interested in the best way to notify users of these changes. If a tag file is found in their project root, a subtle notification could inform them that symbols-view now generates the tag files internally. The option to turn this feature off and read tag files from the project root as in previous versions could also be helpful.  This could be accomplished by implementing #127 and allowing the user to specify a project-specific tag source in the notification."},"comment":{"url":"https://api.github.com/repos/atom/symbols-view/issues/comments/165200809","html_url":"https://github.com/atom/symbols-view/issues/138#issuecomment-165200809","issue_url":"https://api.github.com/repos/atom/symbols-view/issues/138","id":165200809,"user":{"login":"nathansobo","id":1789,"avatar_url":"https://avatars.githubusercontent.com/u/1789?v=3","gravatar_id":"","url":"https://api.github.com/users/nathansobo","html_url":"https://github.com/nathansobo","followers_url":"https://api.github.com/users/nathansobo/followers","following_url":"https://api.github.com/users/nathansobo/following{/other_user}","gists_url":"https://api.github.com/users/nathansobo/gists{/gist_id}","starred_url":"https://api.github.com/users/nathansobo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathansobo/subscriptions","organizations_url":"https://api.github.com/users/nathansobo/orgs","repos_url":"https://api.github.com/users/nathansobo/repos","events_url":"https://api.github.com/users/nathansobo/events{/privacy}","received_events_url":"https://api.github.com/users/nathansobo/received_events","type":"User","site_admin":true},"created_at":"2015-12-16T18:16:32Z","updated_at":"2015-12-16T18:16:32Z","body":"I really like the idea of generating project-wide tags automatically in the background.\r\n\r\n* An auto-generated tags file should probably be located somewhere in `~/.atom` so we don't spam the user's project directories.\r\n* What about language-specific configuration of the tags generator? Is there a way this could be provided to the symbols view via a service interface by language bundles? My only concern here is a bunch of ctags-specific configuration going into the bundles, but I suppose it's probably fine.\r\n* Watching is going to be tricky with the `path-watcher` library because it requires a file descriptor for each file you watch. It definitely seems like a good idea, but you may want to explore a newer library such as [nsfw](https://github.com/Axosoft/nsfw) that can watch a whole directory tree.\r\n* As for notifying the expert users that we can now generate tags files automatically, I'd actually think we can wait on that. If they're generating tags themselves then it probably works for them, and they could discover it's automatic via social schemes.\r\n* Are you imagining shelling out to a ctags process or somehow generating the tags in JS?"}}