@@ -61,6 +61,7 @@ static void f_funcref(typval_T *argvars, typval_T *rettv);
6161static void f_function (typval_T * argvars , typval_T * rettv );
6262static void f_garbagecollect (typval_T * argvars , typval_T * rettv );
6363static void f_get (typval_T * argvars , typval_T * rettv );
64+ static void f_getcellpixels (typval_T * argvars , typval_T * rettv );
6465static void f_getchangelist (typval_T * argvars , typval_T * rettv );
6566static void f_getcharpos (typval_T * argvars , typval_T * rettv );
6667static void f_getcharsearch (typval_T * argvars , typval_T * rettv );
@@ -2078,13 +2079,7 @@ static funcentry_T global_functions[] =
20782079 {"getbufvar" , 2 , 3 , FEARG_1 , arg3_buffer_string_any ,
20792080 ret_any , f_getbufvar },
20802081 {"getcellpixels" , 0 , 0 , 0 , NULL ,
2081- ret_list_any ,
2082- #if (defined (UNIX ) || defined (VMS )) && (defined (FEAT_EVAL ) || defined (PROTO ))
2083- f_getcellpixels
2084- #else
2085- NULL
2086- #endif
2087- },
2082+ ret_list_any , f_getcellpixels },
20882083 {"getcellwidths" , 0 , 0 , 0 , NULL ,
20892084 ret_list_any , f_getcellwidths },
20902085 {"getchangelist" , 0 , 1 , FEARG_1 , arg1_buffer ,
@@ -5216,6 +5211,45 @@ f_get(typval_T *argvars, typval_T *rettv)
52165211 copy_tv (tv , rettv );
52175212}
52185213
5214+ /*
5215+ * "getcellpixels()" function
5216+ */
5217+ static void
5218+ f_getcellpixels (typval_T * argvars UNUSED , typval_T * rettv )
5219+ {
5220+ if (rettv_list_alloc (rettv ) == FAIL )
5221+ return ;
5222+
5223+ #if defined(FEAT_GUI )
5224+ if (gui .in_use )
5225+ {
5226+ // success pixel size and no gui.
5227+ list_append_number (rettv -> vval .v_list , (varnumber_T )gui .char_width );
5228+ list_append_number (rettv -> vval .v_list , (varnumber_T )gui .char_height );
5229+ }
5230+ else
5231+ #endif
5232+ {
5233+ struct cellsize cs ;
5234+ #if defined(UNIX )
5235+ mch_calc_cell_size (& cs );
5236+ #else
5237+ // Non-Unix CUIs are not supported, so set this to -1x-1.
5238+ cs .cs_xpixel = -1 ;
5239+ cs .cs_ypixel = -1 ;
5240+ #endif
5241+
5242+ // failed get pixel size.
5243+ if (cs .cs_xpixel == -1 )
5244+ return ;
5245+
5246+ // success pixel size and no gui.
5247+ list_append_number (rettv -> vval .v_list , (varnumber_T )cs .cs_xpixel );
5248+ list_append_number (rettv -> vval .v_list , (varnumber_T )cs .cs_ypixel );
5249+ }
5250+
5251+ }
5252+
52195253/*
52205254 * "getchangelist()" function
52215255 */
0 commit comments