Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » MultiEdit 2008 | Multi-Edit | MEW | mobile

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

NvvLazyTiger



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
macro_file nAdvCr; // отработка действия "ввод" по правилам BVV63 ;)
// 2015, Author nvv (Nosov Vladislav AKA NvvLazyTiger), Vladivostok, Russia
 
// 2015.09.02, nvv, finished?
// 2015.08.25, nvv, creation
 
/* nvv: Итак, нажали "Ввод"... ;)  
  1. Если курсор стоит не в конце строки, то:  
а) "разрезать" строку в этом месте на две; у нижней такой же отступ;  
  2. Если установлен режим "замена" (overwrite), то:  
а) см. п.1.а);  
  4. Как быть, если ПОСЛЕ нажали клавишу управления, например <Page Up>, то  
б) оставить "квази" пустую строку (т.е. с табами и пробелами);  
--- BVV63
  Поведение должно зависеть от расширения файла:
а) расширение    относится к "DEFAULT" - делаем по описанному ("как нада!");
а) расширение НЕ относится к "DEFAULT" - делаем стандартный Cr.*/
 
macro nAdvCr {                                                  // отработка действия "ввод" по правилам BVV63 ;)
  str Str0[ max_line_length ] = caps( "." + get_extension( file_name ) ); // для поиска отношения к расширению... ;)
  str Str1[ max_line_length ] = get_line;                       // текущая строка...
  int InsMod = insert_mode;                                     // и что с того, что "всегда вставка"? ;)
  int PosCur = c_col;                                           // курсор здесь
  int PosEol = svl( Str1 );                                     // а это - длинна текущей строки
  int PosFwd;
  int intRef = refresh;
 
  if ( caps( parse_str( "\x7F" + "EXT=", global_str( Str0 ) ) ) == "DEFAULT" ) {  // Оно!
    insert_mode = True;                                         // независимо от состояния Ins/Ovr
    push_undo ;                                                 // вдруг НЕ понравится... ;)))
    refresh = false;                                            // а нефиг мельтешить! ;)
    goto_col( 1 );
    first_word;                                                 // встать на первый НЕ "white space" символ строки
    PosFwd = c_col;                                             // место этого символа
    Str0 = copy( Str1, 1, PosFwd - 1 );                         // это местный indent... ;)
    goto_col( PosCur );                                         // а здесь нас вызвали... ;)))
    cr;
    if ( PosCur > PosEol ) {                                    // -- мы за концом строки
      put_line( Str0 );                                         // оформляем квази пустую строку
    } else if ( PosCur <= PosFwd ) {                            // -- мы ДО первого символа или на нём
      put_line( Str1 );                                         // строка съехала вниз...
    } else {                                                    // -- курсор ВНУТРИ строки
      put_line( Str0 + copy( Str1, PosCur, max_line_length ) ); // оформляем "отрезанное" ;)
    }  
    goto_col( PosFwd );                                         // встанем куда след.
    pop_undo ;
    insert_mode = InsMod;                                       // ну и вернём "всё как было" ;)
    refresh = intRef;
    redraw;                                                     // "картина-с маслом-с"...;)))
  } else {
    cr;                                                         // стандартная реакция
  }
} // nAdvCr
 

Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 10:43 02-09-2015 | Исправлено: NvvLazyTiger, 16:23 02-09-2015
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » MultiEdit 2008 | Multi-Edit | MEW | mobile


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru