⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 一个开源著名的TDE编辑器源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
   }   found = FALSE;   /*    * try to find a valid key.    */   key_no = parse_key( key );   if (key_no != ERROR) {      /*       * find the function assignment       */      found = TRUE;      residue = parse_token( residue, key );      /*       * clear any previous macro or key assignment.       */      func_no = search( key, valid_func, CFG_FUNCS );      if (func_no != ERROR) {         clear_previous_macro( key_no );         key_func[KEY_IDX( key_no )] = func_no;         if (func_no == PlayBack) {            macro_key = key_no;            if (parse_macro( residue, prompt_line ) == ERROR)               errmsg = main4;          /* out of memory */         }      } else if (key_func[KEY_IDX( key_no )] == TwoCharKey && residue != NULL) {         two_key = key_no;         if (*key == '^' && key[1] != '\0') {            key_no = parse_key( key+1 );            i = TRUE;         } else {            key_no = parse_key( key );            i = FALSE;         }         if (key_no == ERROR) {            errmsg = config22;       /* unrecognized key */            goto bad_config;         }         two_key = CREATE_TWOKEY( two_key, key_no );         residue = parse_token( residue, key );         func_no = search( key, valid_func, CFG_FUNCS );         if (func_no == PlayBack) {            macro_key = two_key;            if (parse_macro( residue, prompt_line ) == ERROR)               errmsg = main4;         } else            errmsg = (func_no == ERROR) ? config3 : /* unrecognized function */                     (func_no == TwoCharKey) ? config2 : /*two-key not allowed*/                     (add_twokey( two_key, func_no ) == ERROR) ? main4   :                                                                 NULL;         if (i  &&  errmsg == NULL) {            if (!initialize_macro( two_key ^ _CTRL ))               errmsg = main4;            else {               cfg_record_keys( mac, two_key, 0, prompt_line );               check_macro( mac );            }         }      } else         errmsg = config3;   }   /*    * valid key not found, now try a pseudo-macro    */   if (!found) {      if (stricmp( key, func_str[PseudoMacro] ) == 0) {         found = TRUE;         residue = parse_token( residue, key );         if (strlen( key ) != 2 || (text_t)key[0] <= ' ' ||                                   (text_t)key[1] <= ' ') {            errmsg = config25;          /* invalid combination */            goto bad_config;         }         macro_key = (unsigned)(((text_t)key[0] << 8) | (text_t)key[1]);         if (parse_macro( residue, prompt_line ) == ERROR)            errmsg = main4;      }   }   /*    * pseudo-macro not found, now try a valid color    */   if (!found) {      color = search( key, valid_colors, (NUM_COLORS * 2) );      if (color != ERROR) {         found = TRUE;         i = (*key == 'c' || *key == 'C');         color_no = parse_color( &residue, key, prompt_line, config6a );         if (color_no != ERROR) {            if (color == 255)               background = color_no & 15;            else {               if (color == Overscan_color)                  color_no &= 15;               colour[i][color] = color_no;               need_a_redraw = TRUE;            }         }      } else {         /*          * see if this is a color pair for Linux curses.          */         mode_no = search( key, valid_pairs, 7 );         if (mode_no != ERROR) {#if 0 //defined( __UNIX__ )            residue = parse_token( residue, key );            color = search( key, valid_curse, 7 );            if (color != ERROR && residue != NULL) {               /*                *  so far, we got   pairx  COLOR_y.                *    now get the "on".                */               residue = parse_token( residue, key );               if (residue != NULL) {                  /*                   * now, get the background color.                   */                  parse_token( residue, key );                  color_no = search( key, valid_curse, 7 );                  /*                   * we just parsed a color pair line:                   *    pairx COLOR_y on COLOR_z.                   */                  if (color_no != ERROR) {                     found = TRUE;                     need_a_redraw = TRUE;                     init_pair( mode_no, color, color_no );                     mode_no *= 16;                     for (i=0; i<8; i++)                        tde_color_table[mode_no + i]  =  COLOR_PAIR( mode_no );                     for (i=8; i<16; i++)                        tde_color_table[mode_no + i]  =                                   COLOR_PAIR( mode_no ) | A_BOLD;                  }               }            }            if (found == FALSE)               errmsg = config24;       /* error parsing color pair */#else            /*             * if we are in MSDOS, don't even bother with parsing             *   curses junk.             */            found = TRUE;#endif         }      }   }   /*    * valid color not found, now try a valid mode    */   if (!found) {      mode_index = search( key, valid_modes, NUM_MODES-1 );      if (mode_index != ERROR) {         found = TRUE;         /*          * if we find a valid mode, we need to search different          *   option arrays before we find a valid assignment.          */         if (mode_index != KeyName && mode_index != Scancode)            residue = parse_token( residue, key );         mode_no = ERROR;         switch ( mode_index ) {            case InsertMode         :            case IndentMode         :            case SmartTabMode       :            case TrimTrailingBlanks :            case Backups            :            case Ruler              :            case JustifyRightMargin :            case CursorCross        :            case FrameSpace         :            case Shadow             :            case LineNumbers        :            case UndoGroup          :            case UndoMove           :            case AutoSaveWorkspace  :            case TrackPath          :            case DisplayCWD         :            case QuickEdit          :               mode_no = search( key, off_on, 1 );               if (mode_no == ERROR) {                  errmsg = config7;     /* off/on error */                  goto bad_config;               }               switch ( mode_index ) {                  case InsertMode  :                     mode.insert = mode_no;                     need_mode_line = TRUE;                     break;                  case IndentMode  :                     mode.indent = mode_no;                     need_mode_line = TRUE;                     break;                  case SmartTabMode:                     mode.smart_tab = mode_no;                     need_mode_line = TRUE;                     break;                  case TrimTrailingBlanks :                     mode.trailing = mode_no;                     need_mode_line = TRUE;                     break;                  case Backups     :                     mode.do_backups = mode_no;                     break;                  case Ruler       :                     mode.ruler = mode_no;                     need_rulers = TRUE;                     break;                  case JustifyRightMargin :                     mode.right_justify = mode_no;                     break;                  case CursorCross :                     if (mode.cursor_cross != mode_no) {                        mode.cursor_cross = mode_no;                        need_a_redraw = TRUE;                     }                     break;                  case FrameSpace :                     g_display.frame_space = mode_no;                     break;                  case Shadow :                     g_display.shadow = mode_no;                     break;                  case LineNumbers :                     need_line_numbers = mode_no;                     break;                  case UndoGroup :                     mode.undo_group = mode_no;                     break;                  case UndoMove :                     mode.undo_move = mode_no;                     break;                  case AutoSaveWorkspace :                     mode.auto_save_wksp = mode_no;                     break;                  case TrackPath :                     mode.track_path = mode_no;                     break;                  case DisplayCWD :                     need_cwd = mode_no;                     break;                  case QuickEdit  :#if defined( __WIN32__ )                     {                     DWORD mode;                        GetConsoleMode( conin, &mode );                        mode |= ENABLE_EXTENDED_FLAGS;                        if (mode_no)                           mode |= ENABLE_QUICK_EDIT;                        else                           mode &= ~ENABLE_QUICK_EDIT;                        SetConsoleMode( conin, mode );                     }#endif                     break;               }               break;            case DisplayEndOfLine :               mode_no = search( key, valid_eol, 2 );               if (mode_no == ERROR) {                  errmsg = config17;    /* eol display error */                  goto bad_config;               }               mode.show_eol = mode_no;               need_a_redraw = TRUE;               break;            case LTabSize :            case PTabSize :               mode_no = atoi( key );               if (mode_no > MAX_TAB_SIZE || mode_no < 1) {                  errmsg = config8;     /* tab error */                  goto bad_config;               }               if (mode_index == LTabSize)                  mode.ltab_size = mode_no;               else                  mode.ptab_size = mode_no;               need_mode_line = TRUE;               break;            case LeftMargin :               mode_no = atoi( key );               if (mode_no < 1 || mode_no > mode.right_margin) {                  errmsg = config9;     /* left margin error */                  goto bad_config;               }               mode.left_margin = --mode_no;               need_rulers = TRUE;               break;            case ParagraphMargin :               mode_no = atoi( key );               if (mode_no < 1 || mode_no > mode.right_margin) {                  errmsg = config10;    /* paragraph margin error */                  goto bad_config;               }               mode.parg_margin = --mode_no;               need_rulers = TRUE;               break;            case RightMargin :               mode_no = atoi( key );               if (mode_no < mode.left_margin || mode_no > 1040) {                  errmsg = config11;    /* right margin error */                  goto bad_config;               }               mode.right_margin = --mode_no;               need_rulers = TRUE;               break;            case InflateTabs :               mode_no = search( key, valid_tabs, 2 );               if (mode_no == ERROR) {                  errmsg = config16;    /* inflate tabs error */                  goto bad_config;               }               mode.inflate_tabs = mode_no;               need_mode_line = TRUE;               need_a_redraw  = TRUE;               break;            case EndOfLineStyle :               mode_no = search( key, valid_crlf, 3 );               if (mode_no == ERROR) {                  errmsg = config12;    /* crlf or lf error */                  goto bad_config;               }               mode.crlf = mode_no;               break;            case WordWrapMode :               mode_no = search( key, valid_wraps, 2 );               if (mode_no == ERROR) {                  errmsg = config13;    /* word wrap error */                  goto bad_config;               }               mode.word_wrap = mode_no;               need_mode_line = TRUE;               break;            case CursorStyle :               mode_no = search( key, valid_cursor, 2 );               if (mode_no == ERROR) {                  errmsg = config14;    /* cursor size error */                  goto bad_config;               }               i = mode_no;               if (residue != NULL) {                  residue = parse_token( residue, key );                  mode_no = search( key, valid_cursor, 2 );                  if (mode_no == ERROR) {                     errmsg = config14;    /* cursor size error */                     goto bad_config;                  }                  i |= mode_no << 2;               } else {                  if (i == SMALL_CURSOR)                     i |= MEDIUM_CURSOR << 2;                  else                     /*                      * Use the medium cursor to provide compatibility                      * with previous versions that have set Large cursor.                      */                     i = MEDIUM_CURSOR | (SMALL_CURSOR << 2);               }               mode.cursor_size = i;               g_display.insert_cursor = g_display.cursor[i & 3];               g_display.overw_cursor  = g_display.cursor[i >> 2];               need_mode_line = TRUE;               break;            case ControlZ:               mode_no = search( key, valid_z, 1 );               if (mode_no == ERROR) {                  errmsg = config15;    /* control z error */                  goto bad_config;               }               mode.control_z = mode_no;               need_mode_line = TRUE;               break;            case TimeStamp :               mode_no = OK;               strcpy( mode.stamp, key );               add_to_history( key, &h_stamp ); /* jmh 991020 */               break;            case InitialCaseMode :               mode_no = search( key, case_modes, 1 );               if (mode_no == ERROR) {                  errmsg = config18;    /* initial case mode error */                  goto bad_config;               }               mode.search_case = mode_no;               need_mode_line = TRUE;               break;            case CaseMatch :               mode_no = OK;               for (i=0; i<256; i++)                  sort_order.match[i] = (text_t)i;               new_sort_order( (text_ptr)key, sort_order.match );               break;            case CaseIgnore :               mode_no = OK;               for (i=0; i<256; i++)                  sort_order.ignore[i] = (text_t)i;               for (i=65; i<91; i++)                  sort_order.ignore[i] = (text_t)(i + 32);               new_sort_order( (text_ptr)key, sort_order.ignore );               break;            case DirSort :               mode_no = search( key, valid_dir_sort, 1 );               if (mode_no == ERROR) {                  errmsg = config27;    /* directory sort error */                  goto bad_config;               }               mode.dir_sort = mode_no;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -