{"action":"opened","issue":{"url":"https://api.github.com/repos/atom/language-coffee-script/issues/53","labels_url":"https://api.github.com/repos/atom/language-coffee-script/issues/53/labels{/name}","comments_url":"https://api.github.com/repos/atom/language-coffee-script/issues/53/comments","events_url":"https://api.github.com/repos/atom/language-coffee-script/issues/53/events","html_url":"https://github.com/atom/language-coffee-script/issues/53","id":68803137,"number":53,"title":"Many symbols without scopes","user":{"login":"benogle","id":69169,"avatar_url":"https://avatars.githubusercontent.com/u/69169?v=3","gravatar_id":"","url":"https://api.github.com/users/benogle","html_url":"https://github.com/benogle","followers_url":"https://api.github.com/users/benogle/followers","following_url":"https://api.github.com/users/benogle/following{/other_user}","gists_url":"https://api.github.com/users/benogle/gists{/gist_id}","starred_url":"https://api.github.com/users/benogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benogle/subscriptions","organizations_url":"https://api.github.com/users/benogle/orgs","repos_url":"https://api.github.com/users/benogle/repos","events_url":"https://api.github.com/users/benogle/events{/privacy}","received_events_url":"https://api.github.com/users/benogle/received_events","type":"User","site_admin":true},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-04-15T22:43:24Z","updated_at":"2015-04-15T22:43:24Z","closed_at":null,"body":"Most of the issues are in the way of parsing variable names. \r\n\r\nLoad this example into atom. When I say something is `not tagged` I mean its scope is only `.source.coffee`.\r\n\r\n```coffee\r\n\r\nsomeFunc = (arg1, arg2, arg3=1, arg4...) ->\r\n  aVariable = 'ok'\r\n  anArray = new Array()\r\n  anArray.slice()           # anArray not tagged\r\n  anArray.otherMethod()     # anArray, otherMethod not tagged\r\n  randomGlobal.prop.omg()   # not tagged\r\n\r\n  functionCall(one)         # functionCall not tagged\r\n  functionCall one          # functionCall not tagged\r\n\r\n  anObject =\r\n    key1: 'val1'\r\n    key2: (one, two) ->\r\n\r\n# Totally messes this line up\r\ngrade = (student, period=(if b? then 7 else 6), messages={\"A\": \"Excellent\"}) ->\r\n  if student.excellentWork  # not tagged\r\n    \"A+\"\r\n  else if student.okayStuff # not tagged\r\n    if student.triedHard then \"B\" else \"B-\" # student.triedHard not tagged\r\n\r\nclass Animal extends Being\r\n  constructor: (@name) ->   # @name not tagged the same as @name in the body, should be?\r\n    @name += ' is cool'\r\n\r\n# Ok\r\nmath =\r\n  root:   Math.sqrt\r\n  square: square\r\n  cube:   (x) -> x * square x\r\n\r\n# Ok\r\nheredoc = \"\"\"\r\n  CoffeeScript subst test #{ 010 + 0xf / 0b10 + \"nested string #{ /\\n/ }\"}\r\n\"\"\"\r\n```\r\n\r\nGiving these symbols correct scopes will greatly improve the support in the coming `SymbolProvider` in the soon-to-be-bundled-in-core autocomplete-plus."}}