Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

-sign な環境で mark を表示する

$
0
0

set nonumber-signな環境でも markを見える化するために, numberを表示する部分にマークを表示するようにしてみた。再描画を意図的にやらないといけないところが微妙ですが, 全然使っていなかった markを活用できるようになるといいなと思いつつ。

markscreen.png

  • 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;

Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>