prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  [bug] CamelCase instead of snace_case 
  `documentChanges` argument on the left https://github.com/tomv564/LSP/blob/5a472ba6f23d70f6f8f1ebaabb83015c066ce198/plugin/rename.py#L69
  should be `document_changes`, like `LspApplyWorkspaceEditCommand` expects:
  https://github.com/tomv564/LSP/blob/5a472ba6f23d70f6f8f1ebaabb83015c066ce198/plugin/core/edit.py#L19
  
  When doing a rename, this popped up in the console
  ```
  LSP:  --> textDocument/rename
  Traceback (most recent call last):
    File "/opt/sublime_text/sublime_plugin.py", line 1034, in run_
      return self.run(**args)
  TypeError: run() got an unexpected keyword argument 'documentChanges'
  ```
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `plugin/rename.py`
  Content:
  ```
  1 import sublime_plugin
  2 from .core.registry import client_for_view, LspTextCommand
  3 from .core.protocol import Request
  4 from .core.documents import get_document_position, get_position, is_at_word
  5 try:
  6     from typing import List, Dict, Optional
  7     assert List and Dict and Optional
  8 except ImportError:
  9     pass
  10 
  11 
  12 class RenameSymbolInputHandler(sublime_plugin.TextInputHandler):
  13     def __init__(self, view):
  14         self.view = view
  15 
  16     def name(self):
  17         return "new_name"
  18 
  19     def placeholder(self):
  20         return self.get_current_symbol_name()
  21 
  22     def initial_text(self):
  23         return self.get_current_symbol_name()
  24 
  25     def validate(self, name):
  26         return len(name) > 0
  27 
  28     def get_current_symbol_name(self):
  29         pos = get_position(self.view)
  30         current_name = self.view.substr(self.view.word(pos))
  31         # Is this check necessary?
  32         if not current_name:
  33             current_name = ""
  34         return current_name
  35 
  36 
  37 class LspSymbolRenameCommand(LspTextCommand):
  38     def __init__(self, view):
  39         super().__init__(view)
  40 
  41     def is_enabled(self, event=None):
  42         # TODO: check what kind of scope we're in.
  43         if self.has_client_with_capability('renameProvider'):
  44             return is_at_word(self.view, event)
  45         return False
  46 
  47     def input(self, args):
  48         if "new_name" not in args:
  49             return RenameSymbolInputHandler(self.view)
  50         else:
  51             return None
  52 
  53     def run(self, edit, new_name, event=None):
  54         pos = get_position(self.view, event)
  55         params = get_document_position(self.view, pos)
  56 
  57         self.request_rename(params, new_name)
  58 
  59     def request_rename(self, params, new_name) -> None:
  60         client = client_for_view(self.view)
  61         if client:
  62             params["newName"] = new_name
  63             client.send_request(Request.rename(params), self.handle_response)
  64 
  65     def handle_response(self, response: 'Optional[Dict]') -> None:
  66         if response:
  67             self.view.window().run_command('lsp_apply_workspace_edit',
  68                                            {'changes': response.get('changes'),
  69                                             'documentChanges': response.get('documentChanges')})
  70         else:
  71             self.view.window().status_message('No rename edits returned')
  72 
  73     def want_event(self):
  74         return True
  75
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/plugin/rename.py b/plugin/rename.py
  --- a/plugin/rename.py
  +++ b/plugin/rename.py
  @@ -66,7 +66,7 @@
           if response:
               self.view.window().run_command('lsp_apply_workspace_edit',
                                              {'changes': response.get('changes'),
  -                                            'documentChanges': response.get('documentChanges')})
  +                                            'document_changes': response.get('documentChanges')})
           else:
               self.view.window().status_message('No rename edits returned')
  
verification_info: {"golden_diff": "diff --git a/plugin/rename.py b/plugin/rename.py\n--- a/plugin/rename.py\n+++ b/plugin/rename.py\n@@ -66,7 +66,7 @@\n         if response:\n             self.view.window().run_command('lsp_apply_workspace_edit',\n                                            {'changes': response.get('changes'),\n-                                            'documentChanges': response.get('documentChanges')})\n+                                            'document_changes': response.get('documentChanges')})\n         else:\n             self.view.window().status_message('No rename edits returned')\n", "issue": "[bug] CamelCase instead of snace_case \n`documentChanges` argument on the left https://github.com/tomv564/LSP/blob/5a472ba6f23d70f6f8f1ebaabb83015c066ce198/plugin/rename.py#L69\r\nshould be `document_changes`, like `LspApplyWorkspaceEditCommand` expects:\r\nhttps://github.com/tomv564/LSP/blob/5a472ba6f23d70f6f8f1ebaabb83015c066ce198/plugin/core/edit.py#L19\r\n\r\nWhen doing a rename, this popped up in the console\r\n```\r\nLSP:  --> textDocument/rename\r\nTraceback (most recent call last):\r\n  File \"/opt/sublime_text/sublime_plugin.py\", line 1034, in run_\r\n    return self.run(**args)\r\nTypeError: run() got an unexpected keyword argument 'documentChanges'\r\n```\n", "before_files": [{"content": "import sublime_plugin\nfrom .core.registry import client_for_view, LspTextCommand\nfrom .core.protocol import Request\nfrom .core.documents import get_document_position, get_position, is_at_word\ntry:\n    from typing import List, Dict, Optional\n    assert List and Dict and Optional\nexcept ImportError:\n    pass\n\n\nclass RenameSymbolInputHandler(sublime_plugin.TextInputHandler):\n    def __init__(self, view):\n        self.view = view\n\n    def name(self):\n        return \"new_name\"\n\n    def placeholder(self):\n        return self.get_current_symbol_name()\n\n    def initial_text(self):\n        return self.get_current_symbol_name()\n\n    def validate(self, name):\n        return len(name) > 0\n\n    def get_current_symbol_name(self):\n        pos = get_position(self.view)\n        current_name = self.view.substr(self.view.word(pos))\n        # Is this check necessary?\n        if not current_name:\n            current_name = \"\"\n        return current_name\n\n\nclass LspSymbolRenameCommand(LspTextCommand):\n    def __init__(self, view):\n        super().__init__(view)\n\n    def is_enabled(self, event=None):\n        # TODO: check what kind of scope we're in.\n        if self.has_client_with_capability('renameProvider'):\n            return is_at_word(self.view, event)\n        return False\n\n    def input(self, args):\n        if \"new_name\" not in args:\n            return RenameSymbolInputHandler(self.view)\n        else:\n            return None\n\n    def run(self, edit, new_name, event=None):\n        pos = get_position(self.view, event)\n        params = get_document_position(self.view, pos)\n\n        self.request_rename(params, new_name)\n\n    def request_rename(self, params, new_name) -> None:\n        client = client_for_view(self.view)\n        if client:\n            params[\"newName\"] = new_name\n            client.send_request(Request.rename(params), self.handle_response)\n\n    def handle_response(self, response: 'Optional[Dict]') -> None:\n        if response:\n            self.view.window().run_command('lsp_apply_workspace_edit',\n                                           {'changes': response.get('changes'),\n                                            'documentChanges': response.get('documentChanges')})\n        else:\n            self.view.window().status_message('No rename edits returned')\n\n    def want_event(self):\n        return True\n", "path": "plugin/rename.py"}], "after_files": [{"content": "import sublime_plugin\nfrom .core.registry import client_for_view, LspTextCommand\nfrom .core.protocol import Request\nfrom .core.documents import get_document_position, get_position, is_at_word\ntry:\n    from typing import List, Dict, Optional\n    assert List and Dict and Optional\nexcept ImportError:\n    pass\n\n\nclass RenameSymbolInputHandler(sublime_plugin.TextInputHandler):\n    def __init__(self, view):\n        self.view = view\n\n    def name(self):\n        return \"new_name\"\n\n    def placeholder(self):\n        return self.get_current_symbol_name()\n\n    def initial_text(self):\n        return self.get_current_symbol_name()\n\n    def validate(self, name):\n        return len(name) > 0\n\n    def get_current_symbol_name(self):\n        pos = get_position(self.view)\n        current_name = self.view.substr(self.view.word(pos))\n        # Is this check necessary?\n        if not current_name:\n            current_name = \"\"\n        return current_name\n\n\nclass LspSymbolRenameCommand(LspTextCommand):\n    def __init__(self, view):\n        super().__init__(view)\n\n    def is_enabled(self, event=None):\n        # TODO: check what kind of scope we're in.\n        if self.has_client_with_capability('renameProvider'):\n            return is_at_word(self.view, event)\n        return False\n\n    def input(self, args):\n        if \"new_name\" not in args:\n            return RenameSymbolInputHandler(self.view)\n        else:\n            return None\n\n    def run(self, edit, new_name, event=None):\n        pos = get_position(self.view, event)\n        params = get_document_position(self.view, pos)\n\n        self.request_rename(params, new_name)\n\n    def request_rename(self, params, new_name) -> None:\n        client = client_for_view(self.view)\n        if client:\n            params[\"newName\"] = new_name\n            client.send_request(Request.rename(params), self.handle_response)\n\n    def handle_response(self, response: 'Optional[Dict]') -> None:\n        if response:\n            self.view.window().run_command('lsp_apply_workspace_edit',\n                                           {'changes': response.get('changes'),\n                                            'document_changes': response.get('documentChanges')})\n        else:\n            self.view.window().status_message('No rename edits returned')\n\n    def want_event(self):\n        return True\n", "path": "plugin/rename.py"}]}