亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? display.c

?? Linux下的MUD客戶端程序
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
     otherwise, let long lines display in a single terminal line, and     horizontally scroll it. */  if (!_rl_horizontal_scroll_mode && term_up && *term_up)    {      int total_screen_chars = screenchars;      int nleft, cursor_linenum, pos, changed_screen_line;      if (!rl_display_fixed || forced_display)	{	  forced_display = 0;	  /* If we have more than a screenful of material to display, then	     only display a screenful.  We should display the last screen,	     not the first.  I'll fix this in a minute. */	  if (out >= total_screen_chars)	    out = total_screen_chars - 1;	  /* Number of screen lines to display.  The first line wraps at	     (screenwidth + wrap_offset) chars, the rest of the lines have	     screenwidth chars. */	  nleft = out - wrap_offset + term_xn - 1;	  inv_botlin = (nleft > 0) ? nleft / screenwidth : 0;	  /* The first line is at character position 0 in the buffer.  The	     second and subsequent lines start at N * screenwidth, offset by	     OFFSET.  OFFSET is wrap_offset for the invisible line and	     visible_wrap_offset for the line currently displayed. */#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)#define L_OFFSET(n, offset) ((n) > 0 ? ((n) * screenwidth) + (offset) : 0)#define VIS_CHARS(line) &visible_line[L_OFFSET((line), visible_wrap_offset)]#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)#define INV_LINE(line) &invisible_line[L_OFFSET((line), wrap_offset)]	  /* For each line in the buffer, do the updating display. */	  for (linenum = 0; linenum <= inv_botlin; linenum++)	    {	      update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum,			   screenwidth + W_OFFSET(linenum, visible_wrap_offset),			   screenwidth + W_OFFSET(linenum, wrap_offset),			   inv_botlin);	      /* If this is the line with the prompt, we might need to		 compensate for invisible characters in the new line. Do		 this only if there is not more than one new line (which		 implies that we completely overwrite the old visible line)		 and the new line is shorter than the old. */	      if (linenum == 0 &&		  inv_botlin == 0 &&		  (wrap_offset > visible_wrap_offset) &&		  (_rl_last_c_pos < visible_first_line_len))		{		  nleft = screenwidth + wrap_offset - _rl_last_c_pos;		  clear_to_eol (nleft);		}	      /* Since the new first line is now visible, save its length. */	      if (linenum == 0)		visible_first_line_len = (inv_botlin > 0) ? screenwidth : out - wrap_offset;	    }	  /* We may have deleted some lines.  If so, clear the left over	     blank ones at the bottom out. */	  if (_rl_vis_botlin > inv_botlin)	    {	      char *tt;	      for (; linenum <= _rl_vis_botlin; linenum++)		{		  tt = VIS_CHARS (linenum);		  _rl_move_vert (linenum);		  _rl_move_cursor_relative (0, tt);		  clear_to_eol		    ((linenum == _rl_vis_botlin) ? strlen (tt) : screenwidth);		}	    }	  _rl_vis_botlin = inv_botlin;	  /* Move the cursor where it should be. */	  /* Which line? */	  nleft = c_pos - wrap_offset - term_xn + 1;	  cursor_linenum = (nleft > 0) ? nleft / screenwidth : 0;	  /* CHANGED_SCREEN_LINE is set to 1 if we have moved to a	     different screen line during this redisplay. */	  changed_screen_line = _rl_last_v_pos != cursor_linenum;	  if (changed_screen_line)	    {	      _rl_move_vert (cursor_linenum);	      /* If we moved up to the line with the prompt using term_up,	         the physical cursor position on the screen stays the same,	         but the buffer position needs to be adjusted to account	         for invisible characters. */	      if (cursor_linenum == 0 && wrap_offset)	        _rl_last_c_pos += wrap_offset;	    }	  /* We have to reprint the prompt if it contains invisible	     characters, since it's not generally OK to just reprint	     the characters from the current cursor position. */	  nleft = visible_length + wrap_offset;	  if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 &&	      _rl_last_c_pos <= nleft && local_prompt)	    {	      if (term_cr)		tputs (term_cr, 1, _rl_output_character_function);	      _rl_output_some_chars (local_prompt, nleft);	      _rl_last_c_pos = nleft;	    }	  /* Where on that line?  And where does that line start	     in the buffer? */	  pos = L_OFFSET(cursor_linenum, wrap_offset);	  /* nleft == number of characters in the line buffer between the	     start of the line and the cursor position. */	  nleft = c_pos - pos;	  /* Since backspace() doesn't know about invisible characters in the	     prompt, and there's no good way to tell it, we compensate for	     those characters here and call backspace() directly. */	  if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)	    {	      backspace (_rl_last_c_pos - nleft);	      _rl_last_c_pos = nleft;	    }	  if (nleft != _rl_last_c_pos)	    _rl_move_cursor_relative (nleft, &invisible_line[pos]);	}    }  else				/* Do horizontal scrolling. */    {#define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0)      int lmargin, ndisp, nleft, phys_c_pos, t;      /* Always at top line. */      _rl_last_v_pos = 0;      /* Compute where in the buffer the displayed line should start.  This	 will be LMARGIN. */      /* The number of characters that will be displayed before the cursor. */      ndisp = c_pos - wrap_offset;      nleft  = visible_length + wrap_offset;      /* Where the new cursor position will be on the screen.  This can be         longer than SCREENWIDTH; if it is, lmargin will be adjusted. */      phys_c_pos = c_pos - (last_lmargin ? last_lmargin : wrap_offset);      t = screenwidth / 3;      /* If the number of characters had already exceeded the screenwidth,         last_lmargin will be > 0. */      /* If the number of characters to be displayed is more than the screen         width, compute the starting offset so that the cursor is about         two-thirds of the way across the screen. */      if (phys_c_pos > screenwidth - 2)	{	  lmargin = c_pos - (2 * t);	  if (lmargin < 0)	    lmargin = 0;	  /* If the left margin would be in the middle of a prompt with	     invisible characters, don't display the prompt at all. */	  if (wrap_offset && lmargin > 0 && lmargin < nleft)	    lmargin = nleft;	}      else if (ndisp < screenwidth - 2)		/* XXX - was -1 */        lmargin = 0;      else if (phys_c_pos < 1)	{	  /* If we are moving back towards the beginning of the line and	     the last margin is no longer correct, compute a new one. */	  lmargin = ((c_pos - 1) / t) * t;	/* XXX */	  if (wrap_offset && lmargin > 0 && lmargin < nleft)	    lmargin = nleft;	}      else        lmargin = last_lmargin;      /* If the first character on the screen isn't the first character	 in the display line, indicate this with a special character. */      if (lmargin > 0)	line[lmargin] = '<';      /* If SCREENWIDTH characters starting at LMARGIN do not encompass         the whole line, indicate that with a special characters at the         right edge of the screen.  If LMARGIN is 0, we need to take the         wrap offset into account. */      t = lmargin + M_OFFSET (lmargin, wrap_offset) + screenwidth;      if (t < out)        line[t - 1] = '>';      if (!rl_display_fixed || forced_display || lmargin != last_lmargin)	{	  forced_display = 0;	  update_line (&visible_line[last_lmargin],		       &invisible_line[lmargin],		       0,		       screenwidth + visible_wrap_offset,		       screenwidth + (lmargin ? 0 : wrap_offset),		       0);	  /* If the visible new line is shorter than the old, but the number	     of invisible characters is greater, and we are at the end of	     the new line, we need to clear to eol. */	  t = _rl_last_c_pos - M_OFFSET (lmargin, wrap_offset);	  if ((M_OFFSET (lmargin, wrap_offset) > visible_wrap_offset) &&	      (_rl_last_c_pos == out) &&	      t < visible_first_line_len)	    {	      nleft = screenwidth - t;	      clear_to_eol (nleft);	    }	  visible_first_line_len = out - lmargin - M_OFFSET (lmargin, wrap_offset);	  if (visible_first_line_len > screenwidth)	    visible_first_line_len = screenwidth;	  _rl_move_cursor_relative (c_pos - lmargin, &invisible_line[lmargin]);	  last_lmargin = lmargin;	}    }  fflush (rl_outstream);  /* Swap visible and non-visible lines. */  {    char *temp = visible_line;    visible_line = invisible_line;    invisible_line = temp;    rl_display_fixed = 0;    /* If we are displaying on a single line, and last_lmargin is > 0, we       are not displaying any invisible characters, so set visible_wrap_offset       to 0. */    if (_rl_horizontal_scroll_mode && last_lmargin)      visible_wrap_offset = 0;    else      visible_wrap_offset = wrap_offset;  }}/* PWP: update_line() is based on finding the middle difference of each   line on the screen; vis:			     /old first difference	/beginning of line   |	      /old last same       /old EOL	v		     v	      v		    vold:	eddie> Oh, my little gruntle-buggy is to me, as lurgid asnew:	eddie> Oh, my little buggy says to me, as lurgid as	^		     ^	^			   ^	\beginning of line   |	\new last same	   \new end of line			     \new first difference   All are character pointers for the sake of speed.  Special cases for   no differences, as well as for end of line additions must be handeled.   Could be made even smarter, but this works well enough */static voidupdate_line (old, new, current_line, omax, nmax, inv_botlin)     register char *old, *new;     int current_line, omax, nmax;{  register char *ofd, *ols, *oe, *nfd, *nls, *ne;  int temp, lendiff, wsatend, od, nd;  /* If we're at the right edge of a terminal that supports xn, we're     ready to wrap around, so do so.  This fixes problems with knowing     the exact cursor position and cut-and-paste with certain terminal     emulators.  In this calculation, TEMP is the physical screen     position of the cursor. */  temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);  if (temp == screenwidth && term_xn && !_rl_horizontal_scroll_mode      && _rl_last_v_pos == current_line - 1)    {      if (new[0])	putc (new[0], rl_outstream);      else	putc (' ', rl_outstream);      _rl_last_c_pos = 1;		/* XXX */      _rl_last_v_pos++;      if (old[0])        old[0] = new[0];    }        /* Find first difference. */  for (ofd = old, nfd = new;       (ofd - old < omax) && *ofd && (*ofd == *nfd);       ofd++, nfd++)    ;  /* Move to the end of the screen line.  ND and OD are used to keep track     of the distance between ne and new and oe and old, respectively, to     move a subtraction out of each loop. */  for (od = ofd - old, oe = ofd; od < omax && *oe; oe++, od++);  for (nd = nfd - new, ne = nfd; nd < nmax && *ne; ne++, nd++);  /* If no difference, continue to next line. */  if (ofd == oe && nfd == ne)    return;  wsatend = 1;			/* flag for trailing whitespace */  ols = oe - 1;			/* find last same */  nls = ne - 1;  while ((ols > ofd) && (nls > nfd) && (*ols == *nls))    {      if (*ols != ' ')	wsatend = 0;      ols--;      nls--;    }  if (wsatend)    {      ols = oe;      nls = ne;    }  else if (*ols != *nls)    {      if (*ols)			/* don't step past the NUL */	ols++;      if (*nls)	nls++;    }  _rl_move_vert (current_line);  /* If this is the first line and there are invisible characters in the     prompt string, and the prompt string has not changed, then redraw     the entire prompt string.  We can only do this reliably if the     terminal supports a `cr' capability.     This is more than just an efficiency hack -- there is a problem with     redrawing portions of the prompt string if they contain terminal     escape sequences (like drawing the `unbold' sequence without a     corresponding `bold') that manifests itself on certain terminals. */  lendiff = strlen (local_prompt);  if (current_line == 0 && !_rl_horizontal_scroll_mode &&      lendiff > visible_length &&      _rl_last_c_pos > 0 && (ofd - old) >= lendiff && term_cr)    {      tputs (term_cr, 1, _rl_output_character_function);      _rl_output_some_chars (local_prompt, lendiff);      _rl_last_c_pos = lendiff;    }  _rl_move_cursor_relative (ofd - old, old);  /* if (len (new) > len (old)) */  lendiff = (nls - nfd) - (ols - ofd);  /* Insert (diff (len (old), len (new)) ch. */  temp = ne - nfd;  if (lendiff > 0)    {      /* Non-zero if we're increasing the number of lines. */      int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;      /* Sometimes it is cheaper to print the characters rather than	 use the terminal's capabilities.  If we're growing the number	 of lines, make sure we actually cause the new line to wrap	 around on auto-wrapping terminals. */      if (terminal_can_insert && ((2 * temp) >= lendiff || term_IC) && (!term_xn || !gl))	{	  /* If lendiff > visible_length and _rl_last_c_pos == 0 and	     _rl_horizontal_scroll_mode == 1, inserting the characters with	     term_IC or term_ic will screw up the screen because of the	     invisible characters.  We need to just draw them. */	  if (*ols && (!_rl_horizontal_scroll_mode || _rl_last_c_pos > 0 ||			lendiff <= visible_length))	    {	      insert_some_chars (nfd, lendiff);	      _rl_last_c_pos += lendiff;	    }	  else	    {	      /* At the end of a line the characters do not have to		 be "inserted".  They can just be placed on the screen. */	      _rl_output_some_chars (nfd, lendiff);	      _rl_last_c_pos += lendiff;	    }	  /* Copy (new) chars to screen from first diff to last match. */	  temp = nls - nfd;	  if ((temp - lendiff) > 0)	    {	      _rl_output_some_chars (nfd + lendiff, temp - lendiff);	      _rl_last_c_pos += temp - lendiff;	    }	}      else	{	  /* cannot insert chars, write to EOL */	  _rl_output_some_chars (nfd, temp);	  _rl_last_c_pos += temp;	}    }  else				/* Delete characters from line. */    {      /* If possible and inexpensive to use terminal deletion, then do so. */      if (term_dc && (2 * temp) >= -lendiff)	{	  /* If all we're doing is erasing the invisible characters in the	     prompt string, don't bother.  It screws up the assumptions	     about what's on the screen. */	  if (_rl_horizontal_scroll_mode && _rl_last_c_pos == 0 &&	      -lendiff == visible_wrap_offset)	    lendiff = 0;	  if (lendiff)	    delete_chars (-lendiff); /* delete (diff) characters */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品1024| 欧美亚洲尤物久久| 亚洲国产精品一区二区尤物区| 91麻豆精品国产自产在线 | 丝袜诱惑亚洲看片| 日本一区二区视频在线| 91精品国产美女浴室洗澡无遮挡| 高清shemale亚洲人妖| 丝袜亚洲另类丝袜在线| 最新日韩在线视频| 久久久久99精品一区| 欧美另类一区二区三区| 91丨九色丨黑人外教| 国产一区二区三区四区五区美女| 午夜久久久久久久久久一区二区| ...xxx性欧美| 久久欧美中文字幕| 日韩一卡二卡三卡四卡| 欧美日韩一级视频| 91麻豆国产在线观看| 国产成人无遮挡在线视频| 久久国产尿小便嘘嘘尿| 日韩国产欧美三级| 欧美精品一区二区不卡| 91蝌蚪porny| 成人美女视频在线观看18| 天天做天天摸天天爽国产一区| 国产精品久久久久7777按摩| 美女一区二区久久| 天堂va蜜桃一区二区三区| 国产91精品精华液一区二区三区 | 亚洲自拍偷拍图区| 热久久免费视频| 国产一区二区三区免费在线观看| 成人精品一区二区三区四区 | 26uuu精品一区二区| 国产精品久久网站| 亚洲国产精品尤物yw在线观看| 美日韩一区二区三区| 国产91丝袜在线播放| 91久久免费观看| 欧美精品一区在线观看| 成人欧美一区二区三区小说| 亚洲国产精品一区二区www在线 | 欧美综合一区二区三区| 欧美成人伊人久久综合网| 国产精品久久久久久久蜜臀| 亚洲无人区一区| 国产精华液一区二区三区| 日本高清不卡一区| 欧美精品一区二区三区高清aⅴ | 久久91精品国产91久久小草| 99re这里都是精品| 欧美一区二区在线免费播放| 国产精品视频观看| 五月综合激情日本mⅴ| 国产精品123区| 欧美美女一区二区| 国产欧美一区二区三区在线看蜜臀 | 国产 欧美在线| 7777女厕盗摄久久久| 国产精品久久久久久久久快鸭| 视频一区在线播放| eeuss影院一区二区三区| 欧美一区二区在线观看| 亚洲精品免费在线观看| 国产一区二区三区| 欧美日韩成人激情| 亚洲视频 欧洲视频| 国产在线一区二区| 欧美系列一区二区| 国产精品美女久久久久aⅴ | 国产sm精品调教视频网站| 欧美日韩色一区| 国产精品成人网| 久久99最新地址| 欧美日本在线看| 亚洲乱码国产乱码精品精98午夜 | 88在线观看91蜜桃国自产| 亚洲天堂成人网| 成人免费看黄yyy456| 精品国产一区二区三区四区四| 亚洲福利视频三区| 91蜜桃网址入口| 最近中文字幕一区二区三区| 国产乱人伦偷精品视频不卡| 日韩午夜激情电影| 日日夜夜免费精品视频| 在线观看一区不卡| 亚洲人成伊人成综合网小说| 高清不卡一区二区| 国产欧美精品在线观看| 国产精品中文字幕一区二区三区| 日韩精品一区二区三区老鸭窝| 日本不卡高清视频| 91精品久久久久久蜜臀| 亚洲成a人v欧美综合天堂| 欧美综合一区二区三区| 亚洲小说春色综合另类电影| 在线亚洲一区二区| 一区二区成人在线| 色成人在线视频| 一区二区欧美精品| 在线观看欧美精品| 亚洲国产cao| 欧美乱妇23p| 日韩激情在线观看| 欧美一卡二卡在线| 美女精品一区二区| 久久在线免费观看| 国产69精品久久777的优势| 国产精品婷婷午夜在线观看| 99久久99久久精品免费观看 | 国产aⅴ精品一区二区三区色成熟| 精品国产a毛片| 国产黄色成人av| 国产精品素人视频| 色哟哟国产精品| 午夜精品福利一区二区蜜股av| 91精品国产综合久久久久久漫画 | 99re在线视频这里只有精品| 一区二区成人在线视频| 欧美日韩精品一区二区三区蜜桃| 日韩专区在线视频| 欧美精品一区二区精品网| 粉嫩av一区二区三区| 亚洲乱码一区二区三区在线观看| 欧美日韩一级二级三级| 久草中文综合在线| 国产精品久久久99| 欧美日本高清视频在线观看| 精品一区二区久久| 中文成人综合网| 色妹子一区二区| 日韩av一级片| 中文子幕无线码一区tr| 91福利社在线观看| 蜜臀精品一区二区三区在线观看 | 91在线丨porny丨国产| 亚洲国产日韩一级| 精品国产乱码久久久久久夜甘婷婷| 丁香激情综合五月| 亚洲va在线va天堂| 久久日一线二线三线suv| 91农村精品一区二区在线| 天天做天天摸天天爽国产一区| 久久新电视剧免费观看| 91成人免费在线| 韩国v欧美v日本v亚洲v| 亚洲激情综合网| 久久免费视频一区| 欧美丝袜自拍制服另类| 国产精品996| 丝袜亚洲另类丝袜在线| 国产精品网曝门| 欧美一区二区黄| 色激情天天射综合网| 国产伦精品一区二区三区免费 | 成人精品国产一区二区4080| 午夜激情一区二区| 国产精品毛片大码女人 | 亚洲.国产.中文慕字在线| 国产亚洲va综合人人澡精品| 欧美老女人在线| 成人av网站免费观看| 日本va欧美va精品发布| 亚洲视频 欧洲视频| 精品久久99ma| 欧美午夜寂寞影院| 成人av免费在线观看| 麻豆精品视频在线观看免费| 亚洲欧美另类图片小说| 欧美精品一区二区三区视频| 欧美少妇xxx| 成人18精品视频| 久久激五月天综合精品| 一区二区三区在线免费视频| 日本一区二区免费在线| 日韩欧美国产系列| 精品视频123区在线观看| 波多野结衣在线一区| 国产尤物一区二区| 日本视频在线一区| 午夜在线成人av| 亚洲欧美偷拍另类a∨色屁股| 久久综合九色综合欧美98| 欧美一级夜夜爽| 欧美日韩一区三区四区| 色综合久久88色综合天天6| 成人一区二区三区在线观看| 国模无码大尺度一区二区三区| 欧美aaa在线| 日本欧美在线观看| 首页欧美精品中文字幕| 亚洲成av人片在www色猫咪| 亚洲欧美视频在线观看视频| 亚洲日本成人在线观看| 国产精品精品国产色婷婷| 国产欧美日韩综合精品一区二区| 精品国产精品一区二区夜夜嗨|