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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ed.c

?? C語言高級實例解析的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:


#include "tdestr.h"     
#include "define.h"     
#include "tdefunc.h"    
#include "global.h"     
#include "prompts.h"    
#include "default.h"    



int  insert_newline( WINDOW *window )
{
char *source;           
char *dest;             
int  len;               
int  split_len;
int  add;               
int  rcol;
int  rc;
long length;
int  carriage_return;
int  split_line;
int  wordwrap;
int  dirty;
int  old_bcol;
register WINDOW *win;   
file_infos *file;       
line_list_ptr new_node;
text_ptr new_line;      

   rc = OK;
   win = window;
   file = win->file_info;
   length = file->length;
   wordwrap = mode.word_wrap;
   switch (g_status.command) {
      case WordWrap :
         carriage_return = TRUE;
         split_line = FALSE;
         break;
      case AddLine  :
         split_line = carriage_return = FALSE;
         break;
      case SplitLine :
         split_line = carriage_return = TRUE;
         break;
      case Rturn :
      default    :

        
         if (file->crlf == BINARY)
            return( next_line( win ) );

         show_ruler_char( win );
         carriage_return = TRUE;
         split_line = FALSE;
         break;
   }

   
   new_node = (line_list_ptr)my_malloc( sizeof(line_list_struc), &rc );
   new_line = NULL;
   win->visible = FALSE;
   old_bcol = win->bcol;
   if (rc == OK) {
      new_node->line  = new_line;
      new_node->len   = 0;
      new_node->dirty = FALSE;

      if (win->ll->len != EOF) {
         win->file_info->modified = TRUE;
         if (mode.do_backups == TRUE)
            rc = backup_file( win );
         copy_line( win->ll );
         detab_linebuff( );
         len = g_status.line_buff_len;
         split_len = 0;
         if (win->rcol < len)
            win->ll->dirty = TRUE;

         source = g_status.line_buff + len;
         if (carriage_return || split_line) {
            if (win->rcol < len) {
               source = g_status.line_buff + win->rcol;
               split_len = len - win->rcol;
               len = win->rcol;
            }
         }
         g_status.line_buff_len = len;
         entab_linebuff( );
         if (un_copy_line( win->ll, win, TRUE ) == OK) {

            assert( split_len >= 0 );
            assert( split_len < MAX_LINE_LENGTH );

            memmove( g_status.line_buff, source, split_len );
            g_status.line_buff_len = len = split_len;
            g_status.copied = TRUE;
            entab_linebuff( );
         } else
            rc = ERROR;
      } else {
         g_status.line_buff_len = len = 0;
         g_status.copied = TRUE;
      }

      if (rc == OK) {
         new_node->line  = new_line;
         new_node->len   = 0;
         new_node->dirty = TRUE;

         
         if (win->ll->next != NULL) {
            win->ll->next->prev = new_node;
            new_node->next = win->ll->next;
            win->ll->next = new_node;
            new_node->prev = win->ll;
         } else {
            new_node->next = win->ll;
            if (win->ll->prev != NULL)
               win->ll->prev->next = new_node;
            new_node->prev = win->ll->prev;
            win->ll->prev = new_node;
            if (new_node->prev == NULL)
               win->file_info->line_list = new_node;
            win->ll = new_node;
         }

         ++file->length;
         detab_linebuff( );
         entab_linebuff( );
         rc = un_copy_line( new_node, win, FALSE );
         adjust_windows_cursor( win, 1 );

         file->dirty = NOT_LOCAL;
         if (length == 0l || wordwrap || win->cline == win->bottom_line)
            file->dirty = GLOBAL;
         else if (!split_line)
            update_line( win );

        
         if (rc == OK  &&  (carriage_return || split_line)) {
            dirty = file->dirty;
            if (win->cline < win->bottom_line)
               win->cline++;
            win->rline++;
            if (win->ll->next != NULL) {
               win->bin_offset += win->ll->len;
               win->ll = win->ll->next;
            }
            rcol = win->rcol;
            old_bcol = win->bcol;

            if (win->ll->next != NULL) {
               if (mode.indent || wordwrap) {
               
                  add = find_left_margin( wordwrap == FIXED_WRAP ?
                                          win->ll : win->ll->prev, wordwrap );

                  assert( add >= 0 );
                  assert( add < MAX_LINE_LENGTH );

                  copy_line( win->ll );
                  detab_linebuff( );
                  len = g_status.line_buff_len;
                  source = g_status.line_buff;
                  if (len + add > MAX_LINE_LENGTH)
                     add = MAX_LINE_LENGTH - len;
                  dest = source + add;

                  assert( len >= 0);
                  assert( len < MAX_LINE_LENGTH );

                  memmove( dest, source, len );


                  assert( add >= 0 );
                  assert( add < MAX_LINE_LENGTH );

                  memset( source, ' ', add );
                  win->rcol = add;
                  g_status.line_buff_len += add;
                  entab_linebuff( );
                  rc = un_copy_line( win->ll, win, TRUE );
               } else
                  win->rcol = 0;
            }
            if (rc == OK  &&  split_line) {
               win->rline--;
               win->ll = win->ll->prev;
               if (win->cline > win->top_line + window->ruler)
                  win->cline--;
               win->rcol = rcol;
            }
            check_virtual_col( win, win->rcol, win->ccol );
            if (dirty == GLOBAL || file->dirty == LOCAL || wordwrap)
               file->dirty = GLOBAL;
            else
               file->dirty = dirty;
         }
      } else {
         if (new_node != NULL)
            my_free( new_node );
      }
   } else {
      if (new_node != NULL)
         my_free( new_node );
      error( WARNING, window->bottom_line, main4 );
   }

  
   win->visible = TRUE;
   if (rc == OK) {
      if (file->dirty != GLOBAL)
         my_scroll_down( win );
      restore_marked_block( win, 1 );
      show_size( win );
      show_avail_mem( );
      if (old_bcol != win->bcol) {
         make_ruler( win );
         show_ruler( win );
      }
   }
   return( rc );
}



int  insert_overwrite( WINDOW *window )
{
char *source;           
char *dest;             
int  len;               
int  pad;               
int  add;               
register int rcol;
register WINDOW *win;  
int  rc;

   win = window;
   if (win->ll->len == EOF || g_status.key_pressed >= 256)
      rc = OK;
   else {
      rcol = win->rcol;
     
      if (rcol >= g_display.line_length) {
        
         error( WARNING, win->bottom_line, ed2 );
         rc = ERROR;
      } else {
         copy_line( win->ll );
         detab_linebuff( );

         len = g_status.line_buff_len;
         pad = rcol > len ? rcol - len : 0;

         if (mode.insert || rcol >= len)
          
            add = 1;
         else
           
            add = 0;

        
         if (len + pad + add >= g_display.line_length) {
           
            error( WARNING, win->bottom_line, ed3 );
            rc = ERROR;
         } else {

           
            if (pad > 0  || add > 0) {
               source = g_status.line_buff + rcol - pad;
               dest = source + pad + add;

               assert( len + pad - rcol >= 0 );
               assert( len + pad - rcol < MAX_LINE_LENGTH );

               memmove( dest, source, len + pad - rcol );

              

               assert( pad >= 0 );
               assert( pad < MAX_LINE_LENGTH );

               memset( source, ' ', pad );
            }
            g_status.line_buff[rcol] = (char)g_status.key_pressed;
            g_status.line_buff_len += pad + add;
            entab_linebuff( );

            
            win->file_info->dirty = NOT_LOCAL;
            win->ll->dirty = TRUE;
            show_changed_line( win );
            if (win->ccol < win->end_col) {
               show_curl_line( win );
               show_ruler_char( win );
               win->ccol++;
            } else {
               win->bcol++;
               win->file_info->dirty = LOCAL;
               make_ruler( win );
               show_ruler( win );
            }
            rcol++;
         }

        
         check_virtual_col( win, rcol, win->ccol );
         win->file_info->modified = TRUE;
         if (mode.word_wrap) {
            add = mode.right_justify;
            mode.right_justify = FALSE;
            g_status.command = FormatText;
            word_wrap( win );
            mode.right_justify = add;
         }
         rc = OK;
      }
   }
   return( rc );
}



int  join_line( WINDOW *window )
{
int  len;               
int  new_len;           
int  next_len;          
text_ptr q;             
text_ptr tab_free;      
int  pad;               
register WINDOW *win;   
WINDOW *wp;
line_list_ptr next_node;
int  rc;

   win = window;
   if (win->ll->len == EOF  ||  win->ll->next->len == EOF)
      return( ERROR );

   rc = OK;

   assert( win->ll->next != NULL );

   next_node = win->ll->next;
   load_undo_buffer( win->file_info, win->ll->line, win->ll->len );
   copy_line( win->ll );
   detab_linebuff( );

  
   if (win->rcol < (len = g_status.line_buff_len))
      len = win->rcol;

  
   pad = win->rcol > len ? win->rcol - len : 0;

   assert( pad >= 0 );
   assert( pad < MAX_LINE_LENGTH );

  
   next_len = next_node->len;
   tab_free = detab_a_line( next_node->line, &next_len );

   assert( next_len >= 0 );
   assert( next_len < MAX_LINE_LENGTH );
   assert( len >= 0 );
   assert( len < MAX_LINE_LENGTH );

 
   new_len = len + pad + next_len;
   if (new_len >= g_display.line_length) {
     
      error( WARNING, win->bottom_line, ed4 );
      rc = ERROR;
   } else {
      if (mode.do_backups == TRUE) {
         win->file_info->modified = TRUE;
         rc = backup_file( win );
      }
      q = (text_ptr)(g_status.line_buff + len);
   
      if (pad > 0) {
         while (pad--)
            *q++ = ' ';
      }
      _fmemcpy( q, tab_free, next_len );
      g_status.line_buff_len = new_len;
      entab_linebuff( );

      if ((rc = un_copy_line( win->ll, win, FALSE )) == OK) {

         if (next_node->next != NULL)
            next_node->next->prev = win->ll;
         win->ll->next = next_node->next;
         win->ll->dirty = TRUE;

         --win->file_info->length;
         ++win->rline;
         adjust_windows_cursor( win, -1 );
         restore_marked_block( win, -1 );
         --win->rline;

         wp = g_status.window_list;
         while (wp != NULL) {
            if (wp->file_info == win->file_info) {
            
               if (wp != win) {
                  if (wp->ll == next_node)
                     wp->ll = win->ll->next;
               }
            }
            wp = wp->next;
         }

       
         if (next_node->line != NULL)
            my_free( next_node->line );
         my_free( next_node );

         show_size( win );
         show_avail_mem( );
         win->file_info->dirty = GLOBAL;
      }
   }
   return( rc );
}



int  word_delete( WINDOW *window )
{
int  len;               
int  count;             
register int start;     
char *source;           
char *dest;             
text_ptr p;
register WINDOW *win;   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜爽夜夜爽精品视频| 亚洲精品一区二区精华| 一区二区成人在线视频| 色噜噜狠狠一区二区三区果冻| 亚洲欧洲日韩在线| 欧亚洲嫩模精品一区三区| 亚洲va欧美va人人爽| 日韩情涩欧美日韩视频| 国产激情一区二区三区| 最新国产精品久久精品| 欧美伦理影视网| 黄色日韩网站视频| 国产精品电影一区二区| 欧美日韩aaa| 国产乱码精品一区二区三区五月婷| 国产精品美女视频| 欧美在线观看视频在线| 久热成人在线视频| 国产精品短视频| 欧美一区二区三区色| 国产精品一区在线| 一区二区三区在线视频免费 | 色呦呦网站一区| 日本亚洲天堂网| 国产精品麻豆视频| 欧美妇女性影城| 国产成人亚洲综合a∨婷婷图片| 中文字幕中文字幕一区二区 | 欧美成人乱码一区二区三区| 成人免费毛片片v| 蜜桃精品视频在线观看| 国产精品污网站| 在线播放中文一区| 成人免费av在线| 久久不见久久见中文字幕免费| 亚洲人午夜精品天堂一二香蕉| 欧美电影免费观看高清完整版 | 91在线播放网址| 视频一区二区欧美| 亚洲欧美激情一区二区| 精品99999| 91精品国产麻豆国产自产在线 | 欧美电视剧在线观看完整版| 99精品国产视频| 韩国视频一区二区| 亚洲成av人片一区二区梦乃| 亚洲国产高清在线观看视频| 欧美一区二区免费| 欧美图区在线视频| 99国产精品国产精品久久| 国产精品中文有码| 老司机精品视频导航| 亚洲一区中文日韩| 亚洲三级电影网站| 国产欧美视频一区二区三区| 精品噜噜噜噜久久久久久久久试看| 91麻豆福利精品推荐| 国产一区二区三区| 毛片基地黄久久久久久天堂| 五月激情综合色| 一区二区三区毛片| 亚洲三级在线观看| 亚洲欧美乱综合| 国产精品盗摄一区二区三区| 久久久不卡网国产精品一区| 久久影视一区二区| 精品欧美一区二区久久| 欧美mv和日韩mv的网站| 欧美va日韩va| 亚洲精品一区在线观看| 久久先锋资源网| 久久久无码精品亚洲日韩按摩| 日韩欧美一级精品久久| 日韩美女视频一区二区在线观看| 欧美一区二区美女| 欧美mv日韩mv国产网站app| 日韩欧美高清一区| 26uuu亚洲综合色| www国产成人| 国产日韩高清在线| 国产精品国产三级国产有无不卡| 国产欧美日韩在线| ...xxx性欧美| 中文字幕一区二区在线播放| 亚洲精品日日夜夜| 亚洲成av人片在线观看无码| 奇米影视在线99精品| 国内成+人亚洲+欧美+综合在线| 国产精品亚洲一区二区三区在线 | 国产精品色在线| 国产精品久久久久久久岛一牛影视| 中文字幕电影一区| 亚洲精品日韩综合观看成人91| 亚洲一卡二卡三卡四卡五卡| 日本不卡在线视频| 国产乱子轮精品视频| av影院午夜一区| 欧美私模裸体表演在线观看| 欧美精选一区二区| 久久久久综合网| 亚洲天堂免费在线观看视频| 午夜影视日本亚洲欧洲精品| 久久99国产精品免费网站| 国产成人精品免费网站| 91蜜桃免费观看视频| 欧美日韩精品欧美日韩精品一综合| 日韩欧美高清一区| 国产精品久久久久久久久免费丝袜| 亚洲午夜成aⅴ人片| 黄色精品一二区| 91视频在线观看| 日韩欧美成人激情| 日韩美女视频19| 日韩av电影一区| 99re这里都是精品| 精品欧美乱码久久久久久1区2区| 亚洲欧美色一区| 韩国欧美国产一区| 在线一区二区三区四区| 精品处破学生在线二十三| 一区二区三区在线视频免费| 国产九色sp调教91| 欧美系列在线观看| 亚洲国产精品ⅴa在线观看| 偷拍日韩校园综合在线| 成人高清伦理免费影院在线观看| 欧美日韩国产一二三| 国产精品国产精品国产专区不片| 免费观看在线色综合| 91福利社在线观看| 欧美国产1区2区| 美女高潮久久久| 欧美视频日韩视频在线观看| 国产精品每日更新| 精品一区二区影视| 欧美日韩电影在线播放| 成人免费一区二区三区在线观看 | 亚洲欧美日韩国产手机在线| 久久99国产精品免费| 欧美喷水一区二区| 亚洲主播在线观看| 91色porny| 国产精品色噜噜| 国产精品自在欧美一区| 日韩精品中文字幕在线一区| 日日欢夜夜爽一区| 欧美日韩视频在线一区二区 | 亚洲成人tv网| 91国偷自产一区二区使用方法| 国产精品―色哟哟| 大美女一区二区三区| 精品国产一区二区三区久久久蜜月| 五月婷婷综合在线| 欧美日韩国产中文| 性做久久久久久久免费看| 欧美体内she精视频| 亚洲精品亚洲人成人网| 91免费版pro下载短视频| 1024亚洲合集| 91片在线免费观看| 亚洲免费色视频| 在线视频国产一区| 亚洲成av人**亚洲成av**| 欧美日韩在线综合| 亚洲成av人片观看| 91精品国产综合久久福利 | 国产精品亚洲午夜一区二区三区| 欧美成人r级一区二区三区| 捆绑调教一区二区三区| 日韩欧美中文一区| 美脚の诱脚舐め脚责91| 精品国产三级a在线观看| 国产揄拍国内精品对白| 欧美国产一区二区在线观看 | 视频一区二区中文字幕| 日韩一区二区麻豆国产| 国精产品一区一区三区mba桃花| 精品久久久久久久久久久久久久久| 精品中文字幕一区二区| 国产亚洲欧美日韩俺去了| 成人午夜av电影| 亚洲精品成人少妇| 欧美色综合久久| 毛片av中文字幕一区二区| 久久久精品国产免大香伊| 99久久精品久久久久久清纯| 亚洲一区二区av电影| 91精品国产91久久久久久最新毛片 | 国产精品毛片无遮挡高清| 色激情天天射综合网| 美腿丝袜亚洲三区| 国产精品视频观看| 欧美日韩中字一区| 狠狠色丁香婷综合久久| 国产精品久久久久久久第一福利| 欧美日韩亚洲综合在线| 国产乱码精品1区2区3区| 亚洲综合一二区| 久久午夜老司机| 91精彩视频在线|