{"action":"created","issue":{"url":"https://api.github.com/repos/elm-tooling/elm-language-server/issues/10","repository_url":"https://api.github.com/repos/elm-tooling/elm-language-server","labels_url":"https://api.github.com/repos/elm-tooling/elm-language-server/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/elm-tooling/elm-language-server/issues/10/comments","events_url":"https://api.github.com/repos/elm-tooling/elm-language-server/issues/10/events","html_url":"https://github.com/elm-tooling/elm-language-server/issues/10","id":382421505,"node_id":"MDU6SXNzdWUzODI0MjE1MDU=","number":10,"title":"Feature: Go to defintion","user":{"login":"andys8","id":13085980,"node_id":"MDQ6VXNlcjEzMDg1OTgw","avatar_url":"https://avatars0.githubusercontent.com/u/13085980?v=4","gravatar_id":"","url":"https://api.github.com/users/andys8","html_url":"https://github.com/andys8","followers_url":"https://api.github.com/users/andys8/followers","following_url":"https://api.github.com/users/andys8/following{/other_user}","gists_url":"https://api.github.com/users/andys8/gists{/gist_id}","starred_url":"https://api.github.com/users/andys8/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andys8/subscriptions","organizations_url":"https://api.github.com/users/andys8/orgs","repos_url":"https://api.github.com/users/andys8/repos","events_url":"https://api.github.com/users/andys8/events{/privacy}","received_events_url":"https://api.github.com/users/andys8/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-11-19T22:36:05Z","updated_at":"2018-11-20T00:18:18Z","closed_at":null,"author_association":"NONE","body":"# Feature\r\n\r\nBased on the selection the user should be able to jump to the file to the position where the selection is defined. This can be in a dependency or the codebase of the application.\r\n\r\n# Gathering information\r\n\r\n## Elm Compiler\r\n\r\n`Interfaces` are defined in `Elm.Interface`.\r\n\r\n```haskell\r\ntype Interfaces =\r\n  Map.Map ModuleName.Canonical Interface\r\n\r\ndata Interface =\r\n  Interface\r\n    { _types   :: Map.Map N.Name Can.Annotation\r\n    , _unions  :: Map.Map N.Name Union\r\n    , _aliases :: Map.Map N.Name Alias\r\n    , _binops  :: Map.Map N.Name Binop\r\n    }\r\n```\r\n\r\nhttps://github.com/matheus23/elm-compiler-library/blob/502c59df4ac3df6578f99d3eb789d3eb96e3b5a0/compiler/src/Elm/Interface.hs#L34-L48\r\n\r\n`Stuff.Verify.verify` emits `Summary` and is already used. Defined in `Elm.Project.Summary`.\r\n\r\n```haskell\r\n\r\ndata Summary =\r\n  Summary\r\n    { _root :: FilePath\r\n    , _project :: Project\r\n    , _exposed :: ExposedModules\r\n    , _ifaces :: Module.Interfaces\r\n    , _depsGraph :: DepsGraph\r\n    }\r\n\r\n\r\ntype ExposedModules =\r\n  Map.Map Module.Raw [Package]\r\n\r\n\r\ntype DepsGraph =\r\n  Map.Map Name ( Version, [Name] )\r\n```\r\nhttps://github.com/matheus23/elm-compiler-library/blob/502c59df4ac3df6578f99d3eb789d3eb96e3b5a0/builder/src/Elm/Project/Summary.hs#L27-L42\r\n\r\n## Language Server Protocol\r\n\r\nCalled \"Goto Type Definition Request\".\r\n\r\n> Request:\r\n> method: ‘textDocument/definition’\r\n> params: TextDocumentPositionParams\r\n\r\n> Response:\r\n> result: Location | Location[] | null\r\n\r\nhttps://microsoft.github.io/language-server-protocol/specification#textDocument_definition\r\n\r\nRelated: Goto Type Definition Request, Goto Implementation Request\r\n\r\n## Haskell LSP\r\n\r\n```haskell\r\ntype DefinitionRequest = \r\n  RequestMessage ClientMethod TextDocumentPositionParams LocationResponseParams\r\n\r\ntype DefinitionResponse = \r\n  ResponseMessage LocationResponseParams\r\n```\r\n\r\nhttps://hackage.haskell.org/package/haskell-lsp-types-0.8.0.1/docs/Language-Haskell-LSP-Types.html#t:DefinitionRequest\r\n\r\n# Comparison\r\n\r\n## intellij-elm\r\n\r\nThe `klazuka/intellij-elm` (elm plugin for IntelliJ in Kotlin) has the go to source feature. \r\nhttps://github.com/klazuka/intellij-elm/blob/master/src/main/kotlin/org/elm/ide/navigation/ElmGoToSymbolContributor.kt"},"comment":{"url":"https://api.github.com/repos/elm-tooling/elm-language-server/issues/comments/440089962","html_url":"https://github.com/elm-tooling/elm-language-server/issues/10#issuecomment-440089962","issue_url":"https://api.github.com/repos/elm-tooling/elm-language-server/issues/10","id":440089962,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0MDA4OTk2Mg==","user":{"login":"andys8","id":13085980,"node_id":"MDQ6VXNlcjEzMDg1OTgw","avatar_url":"https://avatars0.githubusercontent.com/u/13085980?v=4","gravatar_id":"","url":"https://api.github.com/users/andys8","html_url":"https://github.com/andys8","followers_url":"https://api.github.com/users/andys8/followers","following_url":"https://api.github.com/users/andys8/following{/other_user}","gists_url":"https://api.github.com/users/andys8/gists{/gist_id}","starred_url":"https://api.github.com/users/andys8/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andys8/subscriptions","organizations_url":"https://api.github.com/users/andys8/orgs","repos_url":"https://api.github.com/users/andys8/repos","events_url":"https://api.github.com/users/andys8/events{/privacy}","received_events_url":"https://api.github.com/users/andys8/received_events","type":"User","site_admin":false},"created_at":"2018-11-20T00:18:18Z","updated_at":"2018-11-20T00:18:18Z","author_association":"NONE","body":"This is a dump of interface representations for a sample package [`elm-geohash`](https://package.elm-lang.org/packages/andys8/elm-geohash/latest/Geohash) created by deriving `Show` instances:\r\nhttps://pastebin.com/raw/6GeLnsGj"}}
{"actor":{"display_login":"andys8"}}