From 8d60770fa44d0ea8dd09d48b423250c6183781d7 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows)" <rob@synchro.net>
Date: Thu, 14 Sep 2023 21:27:12 -0700
Subject: [PATCH] Change external editor yes/no prompt default to match current
 user setting

Also, although not a bug (because we re-read/parse the user's record every
menu cycle), don't decrement user.xedit before calling uselect()
- just not a good practice to not modify variables unnecessarily.
See the corresponding change to exec.cpp, which was a bug.
---
 src/sbbs3/useredit.cpp | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp
index da042207b9..2b3797854c 100644
--- a/src/sbbs3/useredit.cpp
+++ b/src/sbbs3/useredit.cpp
@@ -905,16 +905,15 @@ void sbbs_t::maindflts(user_t* user)
 				putusermisc(user->number, user->misc);
 				break;
 			case 'E':
-				if(noyes(text[UseExternalEditorQ])) {
+				if((!user->xedit && noyes(text[UseExternalEditorQ]))
+					|| (user->xedit && !yesno(text[UseExternalEditorQ]))) {
 					if(!(sys_status & SS_ABORT))
 						putuserstr(user->number, USER_XEDIT, nulstr);
 					break; 
 				}
-				if(user->xedit)
-					user->xedit--;
 				for(i=0;i<cfg.total_xedits;i++)
 					uselect(1,i,text[ExternalEditorHeading],cfg.xedit[i]->name, cfg.xedit[i]->ar);
-				if((i=uselect(0,user->xedit,0,0,0))>=0)
+				if((i=uselect(0,user->xedit ? user->xedit-1:0,0,0,0))>=0)
 					putuserstr(user->number, USER_XEDIT, cfg.xedit[i]->code);
 				break;
 			case 'K':   /* Command shell */
-- 
GitLab