From 6651c3b84bdbcd0d0cadc8926c3d5f116a12ea7d Mon Sep 17 00:00:00 2001 From: Alan Zimmerman Date: Fri, 1 Jan 2016 12:49:55 +0200 Subject: [PATCH 1/3] Create Report-2015-12.md Draft --- docs/Report-2015-12.md | 109 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 docs/Report-2015-12.md diff --git a/docs/Report-2015-12.md b/docs/Report-2015-12.md new file mode 100644 index 000000000..688143e60 --- /dev/null +++ b/docs/Report-2015-12.md @@ -0,0 +1,109 @@ +Welcome Haskell IDE Engine (future) users, + +Haskell IDE Engine progress report for December 2015. + +Still no release, it is a work in progress. + +### What is Haskell IDE Engine? + +Not an IDE. + +It is a common point to join together the effort of integrating tools into an IDE and the effort of writing tools for an IDE, by providing an API in the middle that each of these parties can work from and to. + +### Important developments + +This month has been mostly about turning ideas into practice, and dealing with the details that come out when things become concrete. + +The more concrete things we have are: + +#### 1. Auto-generated API documentation (@cocreature) + +One of the principles of HIE is that each plugin/command provides a `PluginDescriptor` documenting the commands it provides, parameters they take and return types. + +Moritz Kiefer has created a module[1] to take this information and generate API documentation[2]. The information is present, but help with styling / presentation will be gladly accepted. + +- [1] https://github.com/haskell/haskell-ide-engine/tree/master/hie-docs-generator +- [2] https://cocreature.github.io/haskell-ide-engine/ + +#### 2. Leksah context menu (@jpmoresmau) + +JP Moresmau has extended the Leksah integration[3][4] to now provide a context-specific menu providing available HIE commands. This includes the ability to invoke HaRe to do refactorings. To enable this we now have a specific hie-base[5] module with just the basic types which can be included in the IDE side if it is fortunate enough to use haskell. + +- [3] https://github.com/JPMoresmau/leksah/tree/hie_integration +- [4] https://github.com/JPMoresmau/leksah-server/tree/hie_integration +- [5] https://github.com/haskell/haskell-ide-engine/tree/master/hie-base + +#### 3. Deeper emacs integration (@cocreature) + +The emacs integration uses the `PluginDescriptor` to generate a set of elisp functions corresponding to each plugin command. + +- The macro generating these has been extended to populate the docstrings for these. +- It also handles the `HieDiff` return type which means it can apply the changes from a HaRe refactoring, or any other plugin generating a diff. +- It prompts interactively for any additional parameters required. + +#### 4. New plugins + +- applyrefact is a wrapper around Matthew Pickering's library to apply hlint changes to source code. +- egasync is an example wrapper showing how a plugin can launch its own process in the server and stream output from it back to the IDE, if the transport used supports this. Otherwise the transport will batch it up when a request is received for the output. + +### Current project focus + +Well defined tasks? Getting out the door? Go to market strategy? + +### Issues closed in December +- Decide on matching an existing IDE protocol or designing a new one [#2](https://github.com/haskell/haskell-ide-engine/issues/2) +- Representation of arbitrary types for a plugin [#14](https://github.com/haskell/haskell-ide-engine/issues/14) +- Plugin function definition [#16](https://github.com/haskell/haskell-ide-engine/issues/16) +- Add QuickCheck tests for FromJSON / ToJSON instances [#48](https://github.com/haskell/haskell-ide-engine/issues/48) +- Check PluginDescriptor on loading [#52](https://github.com/haskell/haskell-ide-engine/issues/52) +- Add a signal handler to flush logs on exit [#58](https://github.com/haskell/haskell-ide-engine/issues/58) +- Plugin startup / private data [#83](https://github.com/haskell/haskell-ide-engine/issues/83) +- Create a diff type [#95](https://github.com/haskell/haskell-ide-engine/issues/95) +- Replace logging package [#112](https://github.com/haskell/haskell-ide-engine/issues/112) +- Split between haskell-ide-engine and haskell-plugin-api [#118](https://github.com/haskell/haskell-ide-engine/issues/118) +- Document existance of `module-management` package and ghc-vis [#124](https://github.com/haskell/haskell-ide-engine/issues/124) +- Provide ghc-modi transport? [#125](https://github.com/haskell/haskell-ide-engine/issues/125) +- Sort out ghc-mod session management [#127](https://github.com/haskell/haskell-ide-engine/issues/127) +- Git integration [#128](https://github.com/haskell/haskell-ide-engine/issues/128) +- apply-refact plugin [#131](https://github.com/haskell/haskell-ide-engine/issues/131) +- emacs: how to run hie with arguments / logging [#134](https://github.com/haskell/haskell-ide-engine/issues/134) +- Change HieDiff to represent a standard patch format [#138](https://github.com/haskell/haskell-ide-engine/issues/138) + +### Pull requests merged in December +- Detect plugin param name collisions [#115](https://github.com/haskell/haskell-ide-engine/pull/115) +- Bring in a diff type, and introduce semantic types [#116](https://github.com/haskell/haskell-ide-engine/pull/116) +- New logger [#120](https://github.com/haskell/haskell-ide-engine/pull/120) +- Rework api split [#122](https://github.com/haskell/haskell-ide-engine/pull/122) +- (elisp) Add log of hie process input / output [#123](https://github.com/haskell/haskell-ide-engine/pull/123) +- Ghc mod session [#130](https://github.com/haskell/haskell-ide-engine/pull/130) +- Apply refact plugin [#133](https://github.com/haskell/haskell-ide-engine/pull/133) +- Ghc mod find [#135](https://github.com/haskell/haskell-ide-engine/pull/135) +- Plugin state [#137](https://github.com/haskell/haskell-ide-engine/pull/137) +- Change HieDiff to use a patch format [#139](https://github.com/haskell/haskell-ide-engine/pull/139) +- Hare context [#141](https://github.com/haskell/haskell-ide-engine/pull/141) +- Initial example async process plugin [#143](https://github.com/haskell/haskell-ide-engine/pull/143) +- Base split [#144](https://github.com/haskell/haskell-ide-engine/pull/144) +- Support more commands [#145](https://github.com/haskell/haskell-ide-engine/pull/145) +- Add tests for hie-create-command [#146](https://github.com/haskell/haskell-ide-engine/pull/146) +- Add integration test for hie-hare-rename [#147](https://github.com/haskell/haskell-ide-engine/pull/147) +- Move to a plugin/command url scheme [#148](https://github.com/haskell/haskell-ide-engine/pull/148) +- Documentation generator [#149](https://github.com/haskell/haskell-ide-engine/pull/149) + +### Contributors active in December +Alan Zimmerman, +Daniel Gröber, +JP Moresmau, +Michael Sloan, +Moritz Kiefer, +Tobias G. Waaler + +### Contributing + +Haskell IDE Engine needs volunteers like any other open source project. +For more information see: + +https://github.com/haskell/haskell-ide-engine + +Also drop by our IRC channel: #haskell-ide-engine at irc.freenode.net. + +Thanks! From c4551a56aab86cac54ac776c8650437f5c2b8598 Mon Sep 17 00:00:00 2001 From: Alan Zimmerman Date: Fri, 1 Jan 2016 12:53:42 +0200 Subject: [PATCH 2/3] update current focus --- docs/Report-2015-12.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Report-2015-12.md b/docs/Report-2015-12.md index 688143e60..903621430 100644 --- a/docs/Report-2015-12.md +++ b/docs/Report-2015-12.md @@ -48,7 +48,9 @@ The emacs integration uses the `PluginDescriptor` to generate a set of elisp fun ### Current project focus -Well defined tasks? Getting out the door? Go to market strategy? +The current project focus is still on getting our collective heads straight on what actually needs to be done, and providing working integrations to at least 2 IDEs to get a better feel for what is needed. + +Both of these are well in hand, and if anyone would like to join in the discussion happens via the github issue tracker and docs section of the project, as well as IRC at #haskell-ide-engine on freenode. ### Issues closed in December - Decide on matching an existing IDE protocol or designing a new one [#2](https://github.com/haskell/haskell-ide-engine/issues/2) From c25e5ab137432f31cf732f612a2e9f8664b928c8 Mon Sep 17 00:00:00 2001 From: Alan Zimmerman Date: Fri, 1 Jan 2016 13:12:00 +0200 Subject: [PATCH 3/3] tweaks based on irc feedback --- docs/Report-2015-12.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Report-2015-12.md b/docs/Report-2015-12.md index 903621430..d11deb932 100644 --- a/docs/Report-2015-12.md +++ b/docs/Report-2015-12.md @@ -23,7 +23,7 @@ One of the principles of HIE is that each plugin/command provides a `PluginDescr Moritz Kiefer has created a module[1] to take this information and generate API documentation[2]. The information is present, but help with styling / presentation will be gladly accepted. - [1] https://github.com/haskell/haskell-ide-engine/tree/master/hie-docs-generator -- [2] https://cocreature.github.io/haskell-ide-engine/ +- [2] https://haskell.github.io/haskell-ide-engine/ #### 2. Leksah context menu (@jpmoresmau) @@ -33,9 +33,9 @@ JP Moresmau has extended the Leksah integration[3][4] to now provide a context-s - [4] https://github.com/JPMoresmau/leksah-server/tree/hie_integration - [5] https://github.com/haskell/haskell-ide-engine/tree/master/hie-base -#### 3. Deeper emacs integration (@cocreature) +#### 3. Deeper Emacs integration (@cocreature) -The emacs integration uses the `PluginDescriptor` to generate a set of elisp functions corresponding to each plugin command. +The Emacs integration uses the `PluginDescriptor` to generate a set of elisp functions corresponding to each plugin command. - The macro generating these has been extended to populate the docstrings for these. - It also handles the `HieDiff` return type which means it can apply the changes from a HaRe refactoring, or any other plugin generating a diff.