set nonumber
で -sign
な環境でも mark
を見える化するために, number
を表示する部分にマークを表示するようにしてみた。再描画を意図的にやらないといけないところが微妙ですが, 全然使っていなかった mark
を活用できるようになるといいなと思いつつ。
set number
すると行番号ではなく, mark を表示- 見えづらかったら,
highlight LineNr ctermfg=red
のような感じで - 表示桁数は
set numberwidth=5
のようにする
参考:
diff--gita/src/screen.cb/src/screen.cindexb293869..c0c513a100644---a/src/screen.c+++b/src/screen.c@@-2349,6+2349,26@@compute_foldcolumn(win_T*wp,intcol)returnfdc;}+staticvoid+fff_mark(+char*marks,+constuint32_tlen,+constlinenr_Tlnum,+constlongfold_count)+{+inti=0;+intc;+pos_T*posp;+char*tbl="[]<>()^`\"'.";++#defineff_mark(c)if((posp=getmark(c,0))&&posp->lnum>=lnum&&posp->lnum<=lnum+fold_count-1&&i<len){ \
+marks[i++]=c;}+for(c='a';c<='z';c++)ff_mark(c);+for(c='A';c<='Z';c++)ff_mark(c)+for(;*tbl;tbl++)ff_mark((*tbl))+marks[i]='\0';+}+/* * Display one folded line. */@@-2370,6+2390,7@@fold_line(inttxtcol;intoff=(int)(current_ScreenLine-ScreenLines);intri;+charmarks[15]={0};/* Build the fold line: * 1. Add the cmdwin_type for the command-line window@@ -2380,6 +2401,7 @@ fold_line( * 6. set highlighting for the Visual area an other text */col=0;+fff_mark(marks,number_width(wp)<14?number_width(wp):14,lnum,fold_count);/* * 1. Add the cmdwin_type for the command-line window@@ -2475,7 +2497,7 @@ fold_line( if (len > w + 1) len = w + 1;-+#if 0 if (wp->w_p_nu && !wp->w_p_rnu) /* 'number' + 'norelativenumber' */num=(long)lnum;@@-2493,6+2515,8@@fold_line(}sprintf((char*)buf,fmt,w,num);+#endif+sprintf((char*)buf,"%-*s ",number_width(wp),marks);#ifdef FEAT_RIGHTLEFTif(wp->w_p_rl)/* the line number isn't reversed */@@-3046,6+3070,9@@win_line(# define VCOL_HLC (vcol)#endif+charmarks[15]={0};+fff_mark(marks,number_width(wp)<14?number_width(wp):14,lnum,1);+if(startrow>endrow)/* past the end already! */returnstartrow;@@-3680,6+3707,7@@win_line(#endif){+#if0longnum;char*fmt="%*ld ";@@-3700,6+3728,9@@win_line(sprintf((char*)extra,fmt,number_width(wp),num);+#endif+sprintf((char*)extra,"%-*s ",+number_width(wp),marks);if(wp->w_skipcol>0)for(p_extra=extra;*p_extra==' ';++p_extra)*p_extra='-';@@-10722,6+10753,7@@number_width(win_T*wp)intn;linenr_Tlnum;+if(1)returnwp->w_p_nuw;if(wp->w_p_rnu&&!wp->w_p_nu)/* cursor line shows "0" */lnum=wp->w_height;