{"action":"created","issue":{"url":"https://api.github.com/repos/sublimehq/Packages/issues/563","repository_url":"https://api.github.com/repos/sublimehq/Packages","labels_url":"https://api.github.com/repos/sublimehq/Packages/issues/563/labels{/name}","comments_url":"https://api.github.com/repos/sublimehq/Packages/issues/563/comments","events_url":"https://api.github.com/repos/sublimehq/Packages/issues/563/events","html_url":"https://github.com/sublimehq/Packages/pull/563","id":168532551,"number":563,"title":"[Scala] Significant Improvements","user":{"login":"djspiewak","id":752,"avatar_url":"https://avatars.githubusercontent.com/u/752?v=3","gravatar_id":"","url":"https://api.github.com/users/djspiewak","html_url":"https://github.com/djspiewak","followers_url":"https://api.github.com/users/djspiewak/followers","following_url":"https://api.github.com/users/djspiewak/following{/other_user}","gists_url":"https://api.github.com/users/djspiewak/gists{/gist_id}","starred_url":"https://api.github.com/users/djspiewak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djspiewak/subscriptions","organizations_url":"https://api.github.com/users/djspiewak/orgs","repos_url":"https://api.github.com/users/djspiewak/repos","events_url":"https://api.github.com/users/djspiewak/events{/privacy}","received_events_url":"https://api.github.com/users/djspiewak/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":21,"created_at":"2016-07-31T18:58:06Z","updated_at":"2016-08-14T16:14:33Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/sublimehq/Packages/pulls/563","html_url":"https://github.com/sublimehq/Packages/pull/563","diff_url":"https://github.com/sublimehq/Packages/pull/563.diff","patch_url":"https://github.com/sublimehq/Packages/pull/563.patch"},"body":"Several adjustments, fixes, enhancements and general better-ness:\r\n\r\n- Indexing\r\n  + `for`/`case` variables are no longer indexed\r\n  + Initialization (i.e. `new`) are no longer erroneously indexed (#560)\r\n  + Upper-case `val` declarations are indexed in base position, and considered constants in more complex patterns\r\n- Type expressions are identified and parsed (subsumes #549)\r\n  + Upper-case identifiers are now highlighted as constant references\r\n  + Upper-case types are now highlighted as class references\r\n  + Symbols in type position are highlighted as types\r\n  + Underscores in type position… don't have a highlighting\r\n  + Bounds (`<:`, `>:`, `<%`, `+`, `-` and `:`) are highlighted as special operators in type position\r\n  + Dereferencing is identified (`#` and `.`)\r\n  + Type lambdas are more stable now\r\n  + `.type` is given special highlighting, since it is not a declaration when it appears in type position\r\n  + `_*` is given special highlighting (also in pattern matching).  Note that we don't specially highlight the `*` type suffix yet, though we probably should.\r\n- Lambdas are identified and highlighted (#558)\r\n  + There are limitations to this.  Specifically, if your parameter block contains more than three nested parentheses sets, it will not be identified\r\n  + Another limitation is that the parameters must be on the same line as the `=>` token\r\n- Identifier regexes have been significantly improved\r\n  + Invalid identifiers will no longer parse as operators (e.g. `:`, `_`, `<-` and others)\r\n  + Prefix `_` characters are allowed (e.g. `_foo` is a valid identifier)\r\n- The `_` operator is now scoped as a language variable in expression and pattern positions\r\n- Assignment in all its forms has been given the appropriate scoping\r\n- The `()` constant is now highlighted as such (similar to `true`/`false`)\r\n- Numeric regexes have been rewritten entirely, based on the spec\r\n  + Color schemes which highlight floats/integers/hex distinctly will now do so with Scala literals\r\n  + The expression `42.toString` will no longer incorrectly highlight the `.` as part of the numeric\r\n  + One deviation from the Scala spec here: `-12` will *not* highlight the `-` as part of the numeric.  This is sort of semantically justifiable (it can be viewed as a unary operator on `Int`), and it doesn't look horrible.  The main reason I did it is because it would require extreme contortion of the `op` regex\r\n  + Octal literals are not highlighted, as they are no longer part of the language (e.g. `042` will not scope as anything).  I considered scoping these as `invalid.deprecated`, since that's exactly what they now are, but I can't remember how long ago they were removed.\r\n- **All lookbehind has been removed.**  Previously, lookbehind was used for strings and imports, for no particularly good reason.  I would expect this should lead to significantly better performance, both on indexing and on highlighting, though I haven't actually noticed a difference.  Also, I have occasionally seen the indexer crash on some code (not very repeatably, and I saw it in master as often as on this PR), and when the indexer has crashed it produced a stack trace indicating that Oniguruma is still being used.  I wonder if we have some sort of regex weirdness somewhere that is forcing the fallback?\r\n- Import matching has been completely rewritten and is now more robust\r\n- `Nil` and `None` are no longer highlighted as primitives (since they aren't)\r\n- A lot of random word boundary and keyword stuff that *was* broken is now fixed\r\n  + As an example, classes/traits/objects who's name ends with \"`extends`\" or \"`with`\" no longer completely break highlighting at their declaration site\r\n- Handling of default parameters in method and class definitions is now substantially more robust\r\n- Comments are now more consistently handled (there may still be some latent bugs with this, but I think I got them all)\r\n- Punctuation is now given the appropriate scoping (e.g. `.` is scoped as `punctuation.accessor.scala`).  Most color schemes ignore this, but it's good practice.\r\n- Interpolated expressions within `${...}` blocks inside of strings now highlight with base scopes, rather than as if they were just part of the string.  (#580)\r\n- `eq` is now considered a keyword (in particular, a word operator similar to Ruby's `and`)"},"comment":{"url":"https://api.github.com/repos/sublimehq/Packages/issues/comments/239681953","html_url":"https://github.com/sublimehq/Packages/pull/563#issuecomment-239681953","issue_url":"https://api.github.com/repos/sublimehq/Packages/issues/563","id":239681953,"user":{"login":"djspiewak","id":752,"avatar_url":"https://avatars.githubusercontent.com/u/752?v=3","gravatar_id":"","url":"https://api.github.com/users/djspiewak","html_url":"https://github.com/djspiewak","followers_url":"https://api.github.com/users/djspiewak/followers","following_url":"https://api.github.com/users/djspiewak/following{/other_user}","gists_url":"https://api.github.com/users/djspiewak/gists{/gist_id}","starred_url":"https://api.github.com/users/djspiewak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djspiewak/subscriptions","organizations_url":"https://api.github.com/users/djspiewak/orgs","repos_url":"https://api.github.com/users/djspiewak/repos","events_url":"https://api.github.com/users/djspiewak/events{/privacy}","received_events_url":"https://api.github.com/users/djspiewak/received_events","type":"User","site_admin":false},"created_at":"2016-08-14T16:14:33Z","updated_at":"2016-08-14T16:14:33Z","body":"@jrappen This PR is an incremental change (albeit a large one) from the current Scala mode.  #94 is a rewrite from scratch.\r\n\r\nGlancing at some of the features listed on #94…  What is still missing here includes the following:\r\n\r\n- Unicode character escapes (e.g. `\\u2101`)\r\n- Scoping for annotations (outside of primitives like `@volatile`)\r\n- Better handling for XML\r\n- Meta scoping\r\n- Sane scaladoc highlighting\r\n\r\n#94 has numerous other features as well, but I personally would not be interested in them.  But nevertheless, it seems clear that this PR does not supersede #94."}}
{"actor":{"display_login":"djspiewak"}}