@@ -1436,28 +1436,28 @@ autowrite_all()
14361436}
14371437
14381438/*
1439- * return TRUE if buffer was changed and cannot be abandoned.
1439+ * Return TRUE if buffer was changed and cannot be abandoned.
1440+ * For flags use the CCGD_ values.
14401441 */
14411442 int
1442- check_changed (buf , checkaw , mult_win , forceit , allbuf )
1443+ check_changed (buf , flags )
14431444 buf_T * buf ;
1444- int checkaw ; /* do autowrite if buffer was changed */
1445- int mult_win ; /* check also when several wins for the buf */
1446- int forceit ;
1447- int allbuf UNUSED ; /* may write all buffers */
1445+ int flags ;
14481446{
1447+ int forceit = (flags & CCGD_FORCEIT );
1448+
14491449 if ( !forceit
14501450 && bufIsChanged (buf )
1451- && (mult_win || buf -> b_nwindows <= 1 )
1452- && (!checkaw || autowrite (buf , forceit ) == FAIL ))
1451+ && (( flags & CCGD_MULTWIN ) || buf -> b_nwindows <= 1 )
1452+ && (!( flags & CCGD_AW ) || autowrite (buf , forceit ) == FAIL ))
14531453 {
14541454#if defined(FEAT_GUI_DIALOG ) || defined(FEAT_CON_DIALOG )
14551455 if ((p_confirm || cmdmod .confirm ) && p_write )
14561456 {
14571457 buf_T * buf2 ;
14581458 int count = 0 ;
14591459
1460- if (allbuf )
1460+ if (flags & CCGD_ALLBUF )
14611461 for (buf2 = firstbuf ; buf2 != NULL ; buf2 = buf2 -> b_next )
14621462 if (bufIsChanged (buf2 )
14631463 && (buf2 -> b_ffname != NULL
@@ -1480,7 +1480,10 @@ check_changed(buf, checkaw, mult_win, forceit, allbuf)
14801480 return bufIsChanged (buf );
14811481 }
14821482#endif
1483- EMSG (_ (e_nowrtmsg ));
1483+ if (flags & CCGD_EXCMD )
1484+ EMSG (_ (e_nowrtmsg ));
1485+ else
1486+ EMSG (_ (e_nowrtmsg_nobang ));
14841487 return TRUE;
14851488 }
14861489 return FALSE;
@@ -1690,7 +1693,9 @@ check_changed_any(hidden)
16901693 {
16911694 /* Try auto-writing the buffer. If this fails but the buffer no
16921695 * longer exists it's not changed, that's OK. */
1693- if (check_changed (buf , p_awa , TRUE, FALSE, TRUE) && buf_valid (buf ))
1696+ if (check_changed (buf , (p_awa ? CCGD_AW : 0 )
1697+ | CCGD_MULTWIN
1698+ | CCGD_ALLBUF ) && buf_valid (buf ))
16941699 break ; /* didn't save - still changes */
16951700 }
16961701 }
@@ -2274,7 +2279,10 @@ do_argfile(eap, argn)
22742279 vim_free (p );
22752280 }
22762281 if ((!P_HID (curbuf ) || !other )
2277- && check_changed (curbuf , TRUE, !other , eap -> forceit , FALSE))
2282+ && check_changed (curbuf , CCGD_AW
2283+ | (other ? 0 : CCGD_MULTWIN )
2284+ | (eap -> forceit ? CCGD_FORCEIT : 0 )
2285+ | CCGD_EXCMD ))
22782286 return ;
22792287 }
22802288
@@ -2315,7 +2323,9 @@ ex_next(eap)
23152323 */
23162324 if ( P_HID (curbuf )
23172325 || eap -> cmdidx == CMD_snext
2318- || !check_changed (curbuf , TRUE, FALSE, eap -> forceit , FALSE))
2326+ || !check_changed (curbuf , CCGD_AW
2327+ | (eap -> forceit ? CCGD_FORCEIT : 0 )
2328+ | CCGD_EXCMD ))
23192329 {
23202330 if (* eap -> arg != NUL ) /* redefine file list */
23212331 {
@@ -2458,7 +2468,9 @@ ex_listdo(eap)
24582468 if (eap -> cmdidx == CMD_windo
24592469 || eap -> cmdidx == CMD_tabdo
24602470 || P_HID (curbuf )
2461- || !check_changed (curbuf , TRUE, FALSE, eap -> forceit , FALSE))
2471+ || !check_changed (curbuf , CCGD_AW
2472+ | (eap -> forceit ? CCGD_FORCEIT : 0 )
2473+ | CCGD_EXCMD ))
24622474 {
24632475 /* start at the first argument/window/buffer */
24642476 i = 0 ;
0 commit comments