diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 564bcbe..cbe8310 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -178,7 +178,7 @@
 popup_atcursor({what}, {options})			*popup_atcursor()*
 		Show the {what} above the cursor, and close it when the cursor
 		moves.  This works like: >
-			call popup_create({what}, ~{
+			call popup_create({what}, #{
 				\ pos: 'botleft',
 				\ line: 'cursor-1',
 				\ col: 'cursor',
@@ -191,7 +191,7 @@
 		Show the {what} above the position from 'ballooneval' and
 		close it when the mouse moves.  This works like: >
 		  let pos = screenpos(v:beval_winnr, v:beval_lnum, v:beval_col)
-		  call popup_create({what}, ~{
+		  call popup_create({what}, #{
 			\ pos: 'botleft',
 			\ line: pos.row - 1,
 			\ col: pos.col,
@@ -240,7 +240,7 @@
 
 popup_dialog({what}, {options})				*popup_dialog()*
 		Just like |popup_create()| but with these default options: >
-			call popup_create({what}, ~{
+			call popup_create({what}, #{
 				\ pos: 'center',
 				\ zindex: 200,
 				\ drag: 1,
@@ -249,7 +249,7 @@
 				\})
 <		Use {options} to change the properties. E.g. add a 'filter'
 		option with value 'popup_filter_yesno'.  Example: >
-			call popup_create('do you want to quit (Yes/no)?', ~{
+			call popup_create('do you want to quit (Yes/no)?', #{
 				\ filter: 'popup_filter_yesno',
 				\ callback: 'QuitCallback',
 				\ })
@@ -356,7 +356,7 @@
 		items with cursorkeys, and close it an item is selected with
 		Space or Enter. {what} should have multiple lines to make this
 		useful.  This works like: >
-			call popup_create({what}, ~{
+			call popup_create({what}, #{
 				\ pos: 'center',
 				\ zindex: 200,
 				\ drag: 1,
@@ -391,7 +391,7 @@
 popup_notification({what}, {options})			 *popup_notification()*
 		Show the {what} for 3 seconds at the top of the Vim window.
 		This works like: >
-			call popup_create({what}, ~{
+			call popup_create({what}, #{
 				\ line: 1,
 				\ col: 10,
 				\ minwidth: 20,
@@ -732,7 +732,7 @@
 	   endif
 	endfunc
 
-	call popup_dialog('Continue? y/n', ~{
+	call popup_dialog('Continue? y/n', #{
 		\ filter: 'popup_filter_yesno',
 		\ callback: 'MyDialogHandler',
 		\ })
@@ -740,7 +740,7 @@
 					*popup_menu-shortcut-example*
 Extend popup_filter_menu() with shortcut keys: >
 
-	call popup_menu(['Save', 'Cancel', 'Discard'], ~{
+	call popup_menu(['Save', 'Cancel', 'Discard'], #{
 		\ filter: 'MyMenuFilter',
 		\ callback: 'MyMenuHandler',
 		\ })
@@ -781,7 +781,7 @@
 	    endif
 	    call popup_close(s:winid)
 	  endif
-	  let s:winid = popup_beval(v:beval_text, ~{mousemoved: 'word'})
+	  let s:winid = popup_beval(v:beval_text, #{mousemoved: 'word'})
 	  let s:last_text = v:beval_text
 	  return ''
 	endfunc
@@ -812,7 +812,7 @@
 	endfunc
 
 	func ShowPopup(id)
-	  let s:winid = popup_beval(s:balloonText, ~{mousemoved: 'word'})
+	  let s:winid = popup_beval(s:balloonText, #{mousemoved: 'word'})
 	endfunc
 <
 
