diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,13 @@
 # Revision history for haskell-lsp-types
 
+## 0.18.0.0 -- 2019-11-17
+
+* Fix response type for CodeLensResolve, add the ContentModified error
+  code (@SquidDev)
+* Add missing fmClientPrepareRenameRequest to MessageFuncs export (@alanz)
+* Rework Core.Options and infer all server capabilities from handlers (@bubba)
+* Generate lenses for WorkDoneProgress data types (@alanz)
+
 ## 0.17.0.0 -- 2019-10-18
 
 * Update progress reporting to match the LSP 3.15 specification (@cocreature)
diff --git a/haskell-lsp-types.cabal b/haskell-lsp-types.cabal
--- a/haskell-lsp-types.cabal
+++ b/haskell-lsp-types.cabal
@@ -1,5 +1,5 @@
 name:                haskell-lsp-types
-version:             0.17.0.0
+version:             0.18.0.0
 synopsis:            Haskell library for the Microsoft Language Server Protocol, data types
 
 description:         An implementation of the types to allow language implementors to
diff --git a/src/Language/Haskell/LSP/Types/DataTypesJSON.hs b/src/Language/Haskell/LSP/Types/DataTypesJSON.hs
--- a/src/Language/Haskell/LSP/Types/DataTypesJSON.hs
+++ b/src/Language/Haskell/LSP/Types/DataTypesJSON.hs
@@ -211,13 +211,32 @@
      * The characters that trigger completion automatically.
      */
     triggerCharacters?: string[];
+
+    /**
+     * The list of all possible characters that commit a completion. This field can be used
+     * if clients don't support individual commmit characters per completion item. See
+     * `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport`.
+     *
+     * If a server provides both `allCommitCharacters` and commit characters on an individual
+     * completion item the once on the completion item win.
+     *
+     * @since 3.2.0
+     */
+    allCommitCharacters?: string[];
 }
 -}
 
 data CompletionOptions =
   CompletionOptions
-    { _resolveProvider   :: Maybe Bool
-    , _triggerCharacters :: Maybe [String]
+    { _resolveProvider     :: Maybe Bool
+    -- | The characters that trigger completion automatically.
+    , _triggerCharacters   :: Maybe [String]
+    -- | The list of all possible characters that commit a completion. This field can be used
+    -- if clients don't support individual commmit characters per completion item. See
+    -- `_commitCharactersSupport`.
+    -- Since LSP 3.2.0
+    -- @since 0.18.0.0
+    , _allCommitCharacters :: Maybe [String]
     } deriving (Read,Show,Eq)
 
 deriveJSON lspOptions {omitNothingFields = True } ''CompletionOptions
@@ -232,11 +251,28 @@
      * The characters that trigger signature help automatically.
      */
     triggerCharacters?: string[];
+    /**
+     * List of characters that re-trigger signature help.
+     *
+     * These trigger characters are only active when signature help is already showing. All trigger characters
+     * are also counted as re-trigger characters.
+     *
+     * @since 3.15.0
+     */
 -}
 
 data SignatureHelpOptions =
   SignatureHelpOptions
-    { _triggerCharacters :: Maybe [String]
+    { -- | The characters that trigger signature help automatically.
+      _triggerCharacters   :: Maybe [String]
+
+    -- | List of characters that re-trigger signature help.
+    -- These trigger characters are only active when signature help is already showing. All trigger characters
+    -- are also counted as re-trigger characters.
+    --
+    -- Since LSP 3.15.0
+    -- @since 0.18.0.0
+    , _retriggerCharacters :: Maybe [String]
     } deriving (Read,Show,Eq)
 
 deriveJSON lspOptions ''SignatureHelpOptions
@@ -304,7 +340,7 @@
 data DocumentOnTypeFormattingOptions =
   DocumentOnTypeFormattingOptions
     { _firstTriggerCharacter :: Text
-    , _moreTriggerCharacter  :: Maybe [String]
+    , _moreTriggerCharacter  :: Maybe [Text]
     } deriving (Read,Show,Eq)
 
 deriveJSON lspOptions ''DocumentOnTypeFormattingOptions
@@ -327,7 +363,7 @@
 
 data DocumentLinkOptions =
   DocumentLinkOptions
-    { -- |Document links have a resolve provider as well.
+    { -- | Document links have a resolve provider as well.
       _resolveProvider :: Maybe Bool
     } deriving (Show, Read, Eq)
 
@@ -352,7 +388,7 @@
 data RenameOptions =
   RenameOptionsStatic Bool
   | RenameOptions
-    { -- |Renames should be checked and tested before being executed.
+    { -- | Renames should be checked and tested before being executed.
       _prepareProvider :: Maybe Bool
     } deriving (Show, Read, Eq)
 
@@ -451,7 +487,7 @@
       -- | Will save wait until requests are sent to the server.
     , _willSaveWaitUntil :: Maybe Bool
 
-      -- |Save notifications are sent to the server.
+      -- | Save notifications are sent to the server.
     , _save              :: Maybe SaveOptions
     } deriving (Show, Read, Eq)
 
@@ -673,7 +709,7 @@
 
 data WorkspaceOptions =
   WorkspaceOptions
-    { -- |The server supports workspace folder. Since LSP 3.6
+    { -- | The server supports workspace folder. Since LSP 3.6
       --
       -- @since 0.7.0.0
       _workspaceFolders :: Maybe WorkspaceFolderOptions
@@ -2283,8 +2319,8 @@
 
 -}
 
-type CodeLensResolveRequest  = RequestMessage ClientMethod CodeLens (List CodeLens)
-type CodeLensResolveResponse = ResponseMessage (List CodeLens)
+type CodeLensResolveRequest  = RequestMessage ClientMethod CodeLens CodeLens
+type CodeLensResolveResponse = ResponseMessage CodeLens
 
 -- ---------------------------------------------------------------------
 {-
diff --git a/src/Language/Haskell/LSP/Types/Lens.hs b/src/Language/Haskell/LSP/Types/Lens.hs
--- a/src/Language/Haskell/LSP/Types/Lens.hs
+++ b/src/Language/Haskell/LSP/Types/Lens.hs
@@ -197,3 +197,5 @@
 makeFieldsNoPrefix ''WorkDoneProgressBeginParams
 makeFieldsNoPrefix ''WorkDoneProgressReportParams
 makeFieldsNoPrefix ''WorkDoneProgressEndParams
+makeFieldsNoPrefix ''WorkDoneProgressCancelParams
+makeFieldsNoPrefix ''WorkDoneProgressCreateParams
diff --git a/src/Language/Haskell/LSP/Types/Message.hs b/src/Language/Haskell/LSP/Types/Message.hs
--- a/src/Language/Haskell/LSP/Types/Message.hs
+++ b/src/Language/Haskell/LSP/Types/Message.hs
@@ -322,6 +322,7 @@
 
         // Defined by the protocol.
         export const RequestCancelled: number = -32800;
+        export const ContentModified: number = -32801;
 }
 -}
 
@@ -335,6 +336,7 @@
                | ServerNotInitialized
                | UnknownErrorCode
                | RequestCancelled
+               | ContentModified
                -- ^ Note: server error codes are reserved from -32099 to -32000
                deriving (Read,Show,Eq)
 
@@ -349,6 +351,7 @@
   toJSON ServerNotInitialized = A.Number (-32002)
   toJSON UnknownErrorCode     = A.Number (-32001)
   toJSON RequestCancelled     = A.Number (-32800)
+  toJSON ContentModified      = A.Number (-32801)
 
 instance A.FromJSON ErrorCode where
   parseJSON (A.Number (-32700)) = pure ParseError
@@ -361,6 +364,7 @@
   parseJSON (A.Number (-32002)) = pure ServerNotInitialized
   parseJSON (A.Number (-32001)) = pure UnknownErrorCode
   parseJSON (A.Number (-32800)) = pure RequestCancelled
+  parseJSON (A.Number (-32801)) = pure ContentModified
   parseJSON _                   = mempty
 
 -- -------------------------------------
diff --git a/src/Language/Haskell/LSP/Types/MessageFuncs.hs b/src/Language/Haskell/LSP/Types/MessageFuncs.hs
--- a/src/Language/Haskell/LSP/Types/MessageFuncs.hs
+++ b/src/Language/Haskell/LSP/Types/MessageFuncs.hs
@@ -59,6 +59,7 @@
   , fmClientDocumentLinkRequest
   , fmClientDocumentLinkResolveRequest
   , fmClientRenameRequest
+  , fmClientPrepareRenameRequest
   ) where
 
 import qualified Data.Aeson as J
