runtime(termdebug): Add Deprecation warnings

closes: #15091

Signed-off-by: Ubaldo Tiberi <ubaldo.tiberi@google.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 5058bf0..6bc980b 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt*	For Vim version 9.1.  Last change: 2024 Jun 20
+*terminal.txt*	For Vim version 9.1.  Last change: 2024 Jul 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1531,7 +1531,10 @@
 	let g:termdebug_config['use_prompt'] = 1
 If there is no g:termdebug_config you can use: >
 	let g:termdebug_use_prompt = 1
+
 <
+However, the latter form will be deprecated in future releases.
+
 Mappings ~
 The termdebug plugin enables a few default mappings.  All those mappings
 are reset to their original values once the termdebug session concludes.
@@ -1543,6 +1546,8 @@
 If there is no g:termdebug_config you can use: >
 	let g:termdebug_map_K = 0
 <
+However, the latter form will be deprecated in future releases.
+
 						*termdebug_map_minus*
 The - key is normally mapped to |:Down| unless a buffer local mapping to the -
 key already exists.  If you do not want this use: >
@@ -1560,6 +1565,9 @@
 	let g:termdebug_config['disasm_window_height'] = 15
 If there is no g:termdebug_config you can use: >
 	let g:termdebug_disasm_window = 15
+
+However, the latter form will be deprecated in future releases.
+
 Any value greater than 1 will set the Asm window height to that value.
 If the current window has enough horizontal space, it will be vertically split
 and the Asm window will be shown side by side with the source code window (and
@@ -1573,6 +1581,9 @@
 	let g:termdebug_config['variables_window_height'] = 15
 If there is no g:termdebug_config you can use: >
 	let g:termdebug_variables_window = 15
+
+However, the latter form will be deprecated in future releases.
+
 Any value greater than 1 will set the Var window height to that value.
 If the current window has enough horizontal space, it will be vertically split
 and the Var window will be shown side by side with the source code window (and
@@ -1601,6 +1612,8 @@
 If there is no g:termdebug_config you can use: >
 	let g:termdebugger = "mygdb"
 
+However, the latter form will be deprecated in future releases.
+
 If the command needs an argument use a List: >
 	let g:termdebug_config['command'] = ['rr', 'replay', '--']
 If there is no g:termdebug_config you can use: >
@@ -1658,6 +1671,7 @@
 If there is no g:termdebug_config you can use: >
 	let g:termdebug_popup = 0
 
+However, the latter form will be deprecated in future releases.
 
 Change default signs ~
 							*termdebug_signs*
@@ -1688,6 +1702,8 @@
 If there is no g:termdebug_config you can use: >
 	let g:termdebug_wide = 163
 
+However, the latter form will be deprecated in future releases.
+
 This will set 'columns' to 163 when `:Termdebug` is used.  The value is
 restored when quitting the debugger.
 
diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
index 1d4e338..dc8b4ad 100644
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -4,7 +4,7 @@
 
 # Author: Bram Moolenaar
 # Copyright: Vim license applies, see ":help license"
-# Last Change: 2024 Jun 22
+# Last Change: 2024 Jul 04
 # Converted to Vim9: Ubaldo Tiberi <ubaldo.tiberi@gmail.com>
 
 # WORK IN PROGRESS - The basics works stable, more to come
@@ -42,6 +42,9 @@
   echohl ErrorMsg | echom $'[termdebug] {msg}' | echohl None
 enddef
 
+def Echowarn(msg: string)
+  echohl WarningMsg | echom $'[termdebug] {msg}' | echohl None
+enddef
 
 # Variables to keep their status among multiple instances of Termdebug
 # Avoid to source the script twice.
@@ -244,6 +247,31 @@
   return is_check_ok
 enddef
 
+def DeprecationWarnings()
+  # TODO Remove the deprecated features after 1 Jan 2025.
+  var config_param = ''
+  if exists('g:termdebug_wide')
+    config_param = 'g:termdebug_wide'
+  elseif exists('g:termdebug_popup')
+    config_param = 'g:termdebug_popup'
+  elseif exists('g:termdebugger')
+    config_param = 'g:termdebugger'
+  elseif exists('g:termdebug_variables_window')
+    config_param = 'g:termdebug_variables_window'
+  elseif exists('g:termdebug_disasm_window')
+    config_param = 'g:termdebug_disasm_window'
+  elseif exists('g:termdebug_map_K')
+    config_param = 'g:termdebug_map_K'
+  elseif exists('g:termdebug_use_prompt')
+    config_param = 'g:termdebug_use_prompt'
+  endif
+
+  if !empty(config_param)
+    Echowarn($"Deprecation Warning: '{config_param}' parameter
+          \ is deprecated and will be removed in the future. See ':h g:termdebug_config' for alternatives.")
+  endif
+
+enddef
 
 # Take a breakpoint number as used by GDB and turn it into an integer.
 # The breakpoint may contain a dot: 123.4 -> 123004
@@ -313,6 +341,7 @@
   if !SanityCheck()
     return
   endif
+  DeprecationWarnings()
 
   if exists('#User#TermdebugStartPre')
     doauto <nomodeline> User TermdebugStartPre