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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » SciTE - Open Source Text Editor for Windows & Linux

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

Widok (09-10-2007 14:48): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

   

Spab



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

A free source code editor for Win32 and X
Русскоязычный форум поддержки

  • Один из самых настраиваемых текстовых редакторов из ныне существующих. Настраивается практически все.
  • Индивидуальная подсветка для разных языков програмирования, фолдинг для классов, функций и структур, авто-дополнение, и т.д. и т.п. ...
     
  • Scite-interest -- Discussion of the SciTE editor
  • Русский сайт SciTE (документация, FAQ, снимки экрана, утилиты, скрипты и т.д. и т.п....)
  • Мечта кодера. статья
  • Burgaud.com - US.SciTE
  • SciTE: Scintilla Text Editor with Extensions
  • Filerx, SideWinder
  • ......
     
       
  • Project file releases
  • Project summary (including basic statistics)
  • Новости со SciTE.ru
     
    Последняя версия редактора - SciTE 1.74
     
    SciTE 1.74 .52Ru-Board Edition [Сборка 20.09.2007]
    Oписание: сборки ядра  
     
    Дружественная тема: Доработка исходного кода и компилирование сборки Ru-Board Edition
     
    Нерешенные задачи и вопросы ( Для умных и талантливых форумчан )
     
    P.S. Если вы используете SciTE для своих нужд, таких как: написание HTML, CSS, Java Script, PHP и др. кода для сайта, или просто вам нравится этот редактор, поставьте пожалуйста ссылку или баннер на сайт - http://scite.ruteam.ru, благодаря этому у сайта повышается индекс цитирования, соответственно увеличивается количество пользователей редактора.

  • Всего записей: 64 | Зарегистр. 02-09-2001 | Отправлено: 03:05 04-06-2002 | Исправлено: mozers, 13:45 04-10-2007
    VVP91



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

    Цитата:
    Возникает вопрос по какому принципу строить дерево (дерево проекта из нескольких файлов - это понятно, но дерево на основе одного файла - имхо надуманно очень)... Или ты про браузер объектов говоришь?
    Не совсем про браузер объектов. В Delphi есть такая штука, как Code Explorer. Этот инструмент отображает структуру конкретного файла - классы, типы, переменные, свободные процедуры и функции, методы и аттрибуты классов, перечень подключаемых модулей. Все это возможно по разному группировать, отмечать незавершенные классы. Все это несколько упрощает работу с большими исходниками.

    Цитата:
    Или ты про браузер объектов говоришь? Имхо последнее осуществимо только для конкретного языка программирования и является далеко не тривиальной задачей.

    Да я собственно согласен, что далеко не простенькая задача. Поэтому и интересуюсь у сообщества, какие есть подвижки в этом направлении.

    Всего записей: 5 | Зарегистр. 25-03-2006 | Отправлено: 12:23 27-04-2007
    vladvro



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bit developer
    Цитата:
    Как настроить текст в скобках "(" и ")"?
    Т.е. нужно, чтобы между скобками обрабатывались другие ключевые слова.
    Например: procedure(param1,param2)

    т.е. что бы ключевые слова внутри круглых скобок отображались иначе чем вне скобок?
    в общем случае - никак.
    вся раскраска синтаксиса завязанна на возможности текущего лексера.
    возможно среди существующих есть такой, где обрабатывается подобная ситуация, но будет ли он в остальном подходить?

    Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 12:54 28-04-2007 | Исправлено: vladvro, 12:56 28-04-2007
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VVP91
    Имхо тебе надо искать отдельную прогу с желаемым функционалом. Вот как найдешь - тогда будем думать можно ли ее к SciTE приладить
    Твой вопрос подтолкнул мою давнюю мечту - сделать браузер объектов DOM. Сделал Выбираешь html файл и видишь все объекты, их свойства и значения что имеются на странице. Вот только не знаю где бы мое творение выложить чтобы прославиться   Если кто знает - напишите в ПМ - тут это - оффтопик

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 19:39 28-04-2007
    mimir

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

    Цитата:
    Как настроить текст в скобках "(" и ")"?  
    Т.е. нужно, чтобы между скобками обрабатывались другие ключевые слова.  
    Например: procedure(param1,param2)  

    Это похоже на блочные коментарии (в C++ начинаються /**  .... **/).
    В них отрабатываються отдельный набор ключевых слов. Но там вроде завязка на символ "@", да и символы начала тоже не настраиваются. Но если интересно можно сделать что-то подобное и самому ( в исходниках ).

    Всего записей: 77 | Зарегистр. 14-01-2006 | Отправлено: 19:41 28-04-2007
    olsufr



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    UTF-8
     
    Подскажите, как настроить Scite, чтобы он нормально распознавал файл в кодировке UTF-8 (т.е. чтобы не надо было специально для этого что-то нажимать), а также чтобы сохранял такие файлы без кук.
    С Emeditor таких проблем нет совсем, но Scite мне удобнее.

    Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 02:56 01-05-2007
    aha



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скачал SciTE_173_37Ru_090407
    Много в нем хорошего, а что делать с простыми вещами? почему такой простой файлик ( к примеру)
    http://meetfile.com/files/28358/test.txt.html
    он откывает криво
    http://bestpics.ru/full/2007-05-01_115739.jpg
    в то время как BREd нормально  
    http://bestpics.ru/full/2007-05-01_105418.jpg
    вот

    Всего записей: 890 | Зарегистр. 13-03-2004 | Отправлено: 12:01 01-05-2007
    BioInfo

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Небольшая предыстория: лично считаю что программа должна запоминать свои размеры сама и пользователь устанавливает размеры 1 раз, т.е. когда я ширину допустим поменял у окошка, вышел, то при заходе я ожидаю что она - ширина должна сохраниться той какой я настроил... По этому мне не совсем понятно было почему в программе нужно где то прописывать вручную размеры окна, как будто я с пиксельной линейкой по жизни ползаю и замеряю все... В общем такой расклад мне в редакторе пришелся не по нраву.  
    Благо есть к нему открытые исходники!
    Поковырявшись немного написал следующее (чтобы включить нужно добавить в файл настроек параметр position.autosave=1)
     
    код на сохранение положения окна программы:
     
    Файл SciTEWin.cxx, вставить класс:

    Код:
    //!-start-[position.autosave]
    class PropFileEx
    {
    public:
      bool Open(FilePath filename) {
        m_filename = filename;
        FILE * file = filename.Open(fileRead);
        if (file) {
          char propsData[100];
          int len;
          while ( !feof(file) ) {
            len = fread(propsData, 1, sizeof(propsData)-1, file);
            propsData[len] = '\0';
            m_buf += propsData;
          }
          fclose(file);
          return true;
        }
        return false;
      }
     
      void ToDesctopRect(RECT &rc){
        ToDesctopRect(rc.left, rc.top, rc.right, rc.bottom);
      }
     
      void ToDesctopRect(long &left, long &top, long &right, long &bottom) {
        // See if taskbar's autohide property is on
        APPBARDATA abd = {0};
        abd.cbSize = sizeof(abd);  
        if(!(::SHAppBarMessage(ABM_GETSTATE, &abd) & ABS_AUTOHIDE))  {
          // Get the taskbar rect
          ::SHAppBarMessage(ABM_GETTASKBARPOS, &abd);
          switch(abd.uEdge) {
          case ABE_TOP:
            top    += abd.rc.bottom - abd.rc.top;
            bottom  += abd.rc.bottom - abd.rc.top;
            break;
          case ABE_LEFT:
            left += abd.rc.right - abd.rc.left;
            right+= abd.rc.right - abd.rc.left;
            break;
          }
        }
      }
     
      void SetProperty(SString sProperty, int Value) {
        char buf[1024] = {0};
        sprintf(buf,"%s=%d", sProperty.c_str(), Value);
        int insertPos =  m_buf.search(sProperty.c_str());
        if (insertPos != -1 ) {
          int firstPos = insertPos;
          while (firstPos > 0 && m_buf[firstPos-1] != '\n' && m_buf[firstPos-1] != '\r' )
            firstPos--;
          int lastPos = m_buf.search("\r", insertPos);
          m_buf.remove(firstPos,  
            lastPos>firstPos?lastPos - firstPos:m_buf.length() - firstPos);
          m_buf.insert(firstPos, buf);
        }
        else {
          m_buf += "\r\n";
          m_buf += buf;
          m_buf += "\r\n";
        }
      }
       
      void Save()  {
        if (m_filename.IsSet())  {
          FILE * file = m_filename.Open(fileWrite);
          if (file) {
            fwrite(m_buf.c_str(), sizeof(char), m_buf.length(), file);
            fclose(file);
          }
        }
      }
     
      SString GetString() {
        return m_buf;
      }
       
    private:
      SString m_buf;
      FilePath m_filename;
    };
    //!-end-[position.autosave]
    Данный код внедрен в форум с помощью скрипта vladvro
     
    Файл SciTEWin.cxx, подкорректировать функции:

    Код:
    void SciTEWin::QuitProgram() {
      if (SaveIfUnsureAll() != IDCANCEL) {
        if (fullScreen)  // Ensure tray visible on exit
          FullScreenToggle();
     
    //!-start-[position.autosave]
        if (props.GetInt("position.autosave")) {
          winPlace.length = sizeof(winPlace);
          ::GetWindowPlacement(MainHWND(), &winPlace);
          PropFileEx file;
          file.Open( GetUserPropertiesFileName() );
          file.ToDesctopRect(winPlace.rcNormalPosition);
          file.SetProperty("position.left", winPlace.rcNormalPosition.left);
          file.SetProperty("position.top", winPlace.rcNormalPosition.top);
          file.SetProperty("position.width", winPlace.rcNormalPosition.right - winPlace.rcNormalPosition.left);
          file.SetProperty("position.height", winPlace.rcNormalPosition.bottom - winPlace.rcNormalPosition.top);
          file.SetProperty("position.cmdShow", winPlace.showCmd);
          file.Save();
        }
    //!-end-[position.autosave]
     
        ::PostQuitMessage(0);
        wSciTE.Destroy();
      }
    }
    Данный код внедрен в форум с помощью скрипта vladvro
     
    и

    Код:
    void SciTEWin::Run(const char *cmdLine) {
      SString args = ProcessArgs(cmdLine);
      bool bBatchProcessing = ProcessCommandLine(args, 0);
      if (!bBatchProcessing && props.GetInt("check.if.already.open") != 0) {
        uniqueInstance.CheckOtherInstance();
      }
     
      CreateUI();
     
      if (bBatchProcessing) {
        ProcessCommandLine(args, 1);
        Print(false);  // Don't ask user for print parameters
        ::PostQuitMessage(0);
        wSciTE.Destroy();
        return;
      }
     
      if (props.GetInt("check.if.already.open") != 0 && uniqueInstance.FindOtherInstance()) {
        uniqueInstance.SendCommands(cmdLine);
     
        ::PostQuitMessage(0);
        wSciTE.Destroy();
        return;  // Don't do anything else
      }
     
      // OK, the instance will be displayed
      SizeSubWindows();
    /*!-change-[position.autosave]
     wSciTE.Show();
     if (cmdShow) {  // assume SW_MAXIMIZE only
    */
        ::ShowWindow(MainHWND(), cmdShow);
    //!  }
     
      ProcessCommandLine(args, 1);
      Redraw();
    }
    Данный код внедрен в форум с помощью скрипта vladvro
    Вот такая не хитрая система.
     
    З.Ы. Попутно вопрос: чем уважаемый народ пользуется чтобы сравнить изменения в двух файлах (мне бы было удобнее если бы просто изменения вставить, а так пришлось по коду плавать )
    З.З.Ы. Еще есть в коде места (особенно по циклам) где переменные объявляются с одним и тем же именем, это здешние сделали или такой в комплекте шел? Пришлось подретушировать, а то мой компилятор такое не заглотил.

    Всего записей: 83 | Зарегистр. 30-04-2007 | Отправлено: 17:22 01-05-2007 | Исправлено: BioInfo, 23:21 05-05-2007
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    olsufr
    SciTE "железно" распознает при открытии UTF-8 файл только если он имеет заголовок BOM. При открытии файлов UTF-8 не имеющих заголовка распознавалка срабатывает далеко не всегда (тогда выбрать нужную кодировку можно через меню Файл-Кодировка).
    Файл сохраняется с заголовком если через меню Файл-Кодировка было выбрано "UTF-8 с заголовком" и без заголовка, если выбрано просто "UTF-8".
     
    aha
    Этот твой файлик - в официально неподдерживаемой SciTE кодировке dos866.
    Если пользуешь SciTE-Ru то нажми Alt+F9 (см. соответствующий пункт в меню Tools) - и все будет нормально
     
    BioInfo
    Поздравляю с первым постом!    
    Код - интересен Но на мой взгляд, логичнее было бы сохранять установки в SciTEUser.properties, тогда и идеология бы не пострадала и лишний файл не нужен и со считыванием можно было бы не заморачиваться. В последней сборке это дело поручено внешнему скрипту. Если уж реализовать эту функцию в ядре, то делать это без ущерба существующей функциональности. А скрипт на сегодня - более функционален поскольку сохраняет не только размеры окна, но и кучу других параметров.

    Цитата:
    чем уважаемый народ пользуется чтобы сравнить изменения в двух файлах  
    Лично я часто пользуюсь встроенным инструментом сравнения Total Commander. CompareIt!, конечно, на порядок более наворочан - пользуюсь и им. Скачал бесплатную альтернативу WinMerge, но так и не испробовал...  

    Цитата:
    Еще есть в коде места (особенно по циклам) где переменные объявляются с одним и тем же именем, это здешние сделали или такой в комплекте шел?
    Все изменения SciTE-Ru выделены. Если нет пометок - значит таков оригинальный код. А вообще, странно - компилю не в первый раз - никогда такого не замечал... Поконкретнее бы...

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 19:40 01-05-2007
    aha



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


    Цитата:
    aha  
    Этот твой файлик - в официально неподдерживаемой SciTE кодировке dos866.  
    Если пользуешь SciTE-Ru то нажми Alt+F9 (см. соответствующий пункт в меню Tools) - и все будет нормально  

    это плохо , что не поддерживаемой...
    вообще там вроде OEM и его смог открыть AkelPad на курьер нею...так что БРЕД 3 без печати умер!... а его место занял AkelPad...остальное все в дауне!

    Всего записей: 890 | Зарегистр. 13-03-2004 | Отправлено: 19:53 01-05-2007
    BioInfo

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

    Цитата:
    Код - интересен Но на мой взгляд, логичнее было бы сохранять установки в SciTEUser.properties, тогда и идеология бы не пострадала

     
    Это не проблема, можно сделать в SciTEUser.properties, можно также добавить чтобы там же можно было "автосохранение позиции окна" включить/выключить, чтобы уж совсем круто было
    Если интересно, то я могу доработать свой код до этого уровня.
     

    Цитата:
    скачал бесплатную альтернативу WinMerge, но так и не испробовал...  

    Классная штука!!! Все изменения как на ладони!
     

    Цитата:
    компилю не в первый раз - никогда такого не замечал... Поконкретнее бы...

    Да, так и есть, изменение внесены здешними мастерами.
    Проблемные места находятся в !-start-[SubMenu]
    в файле SciTEWinBar.cxx ошибка - int item объявлена несколько раз, тоже самое в файле SciTEBuffers.cxx, только там к int item еще прибавилась int i
    Лечится выносом объявления переменной из объявления цикла, вообще не знаю как там по уму, но вроде как низя объявлять переменные с одинаковым именем в одной области видимости... В новых компиляторах может все и подругом, совсем видать от прогресса отстал
     
    Кстати была некоторая трудность с использованием старого компилятора от мелкомягких, лечится так:
    В файл Platform.h (scintilla\include) нужно добавить

    Код:
     
    #ifdef _MSC_VER
    #if _MSC_VER < 1300
    #define SetWindowLongPtr SetWindowLong
    #define GetWindowLongPtr GetWindowLong
    #define GWLP_USERDATA GWL_USERDATA
    #define DWLP_USER DWL_USER
    #define GWLP_WNDPROC GWL_WNDPROC
    #endif
    #ifndef LONG_PTR
    #define LONG_PTR long
    #endif
    #ifndef DWORD_PTR
    #define DWORD_PTR DWORD
    #endif
    #endif
     

    А в файл SingleThreadExtension.cxx нужно добавить

    Код:
     
    #include "Platform.h"
     

    И все будет замечательно работать и компилиться, и, кстати, нисколько не противоречит общей идеалогии

    Всего записей: 83 | Зарегистр. 30-04-2007 | Отправлено: 21:41 01-05-2007
    Ekstazi

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли сделать SciTe как IDE? То есть чтоб отслеживались имена переменных/функций, их типы, возможные методы и функции для них ?

    Всего записей: 12 | Зарегистр. 09-09-2005 | Отправлено: 01:08 02-05-2007
    bit_developer

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

    Цитата:
    т.е. что бы ключевые слова внутри круглых скобок отображались иначе чем вне скобок?  
    в общем случае - никак.  
    вся раскраска синтаксиса завязанна на возможности текущего лексера.  
    возможно среди существующих есть такой, где обрабатывается подобная ситуация, но будет ли он в остальном подходить?

     
    Корректирую вопрос.
    Задан список ключевых слов для подсветки, например, синим цветом: keyword1, keyword2.
    В обычном месте кода эти слова посвечиваются: keyword1 := 1;
    Но как только заключаю это слово в скобки, подсветка пропадает.
    В подсветке для Perl (perl_.properties) такая подсветка в скобках работает, и даже фолдинг для "{}" обрабатывается.
    Вот и навело на мысль что это какая-то настройка, а какая- найти не удалось.

    Всего записей: 4 | Зарегистр. 27-04-2007 | Отправлено: 08:13 02-05-2007
    vladvro



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bit_developer
    Цитата:
    Но как только заключаю это слово в скобки, подсветка пропадает.

    а в каком языке так происходит?

    Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 11:07 03-05-2007
    bit developer

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vladvro
    Например, ps.properties (PostScript)
    Я было подумал, что достаточно добавить свои настройки (icl.properties) и новый язык появиться в SciTe, но сейчас понял, что лексер надо добавлять в исходник.

    Всего записей: 4 | Зарегистр. 27-04-2007 | Отправлено: 12:04 03-05-2007
    vladvro



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bit developer
    Цитата:
    Например, ps.properties (PostScript)  

    на сколько я понял, в PostScript в круглых скобках заключается Текст, понятно что в нем нет подсветки ключевых слов.

    Цитата:
    Я было подумал, что достаточно добавить свои настройки (icl.properties) и новый язык появиться в SciTe, но сейчас понял, что лексер надо добавлять в исходник.

    правильно понял.
    с помощью настроек можно добавить поддержку нового языка, если его синтиксис аналогичен  одному из поддерживаемых редактором, а отличается только набор ключевых слов.

    Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 13:53 03-05-2007
    BioInfo

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

    Цитата:
    Как сделать чтобы если в style.*.32 не указан параметр back, то SciTE не красил бы тогда фон окна в белый цвет? Чтобы он, при отсутствии этого параметра, вообще окно ни в какой цвет не красил! Чтобы фон окна оставался как есть по умолчанию, т.е. равным системному Window Background.

     
    Я решил эту задачу так:  
    В файле SciTEProps.cxx нужно заменить функцию (см ниже) и будет счастье ;)
     

    Код:
    void SciTEBase::ReadFontProperties() {
      char key[200];
      SString sval;
     
      // Set styles
      // For each window set the global default style, then the language default style, then the other global styles, then the other language styles
     
      SendEditor(SCI_STYLERESETDEFAULT, 0, 0);
      SendOutput(SCI_STYLERESETDEFAULT, 0, 0);
     
      sprintf(key, "style.%s.%0d", "*", STYLE_DEFAULT);
      sval = props.GetNewExpand(key);
    /*!
     SetOneStyle(wEditor, STYLE_DEFAULT, sval.c_str());
     SetOneStyle(wOutput, STYLE_DEFAULT, sval.c_str());
    */
    //!-start-[StyleDefault]
    #if PLAT_WIN
      StyleDefinition style(sval.c_str());
      char sColor[8];
      ColourDesired color;
      if (!(style.specified & StyleDefinition::sdBack)) {
        color.Set( ::GetSysColor(COLOR_WINDOW) );
        sprintf(sColor, "#%2X%2X%2X\0",color.GetRed(), color.GetGreen(), color.GetBlue() );
        style.back = sColor;
        style.back.substitute(' ', '0');
        style.specified = static_cast<StyleDefinition::flags>(style.specified | style.sdBack);
      }
      if (!(style.specified & StyleDefinition::sdFore)) {
        color.Set( ::GetSysColor(COLOR_WINDOWTEXT) );
        sprintf(sColor, "#%2X%2X%2X\0",color.GetRed(), color.GetGreen(), color.GetBlue() );
        style.fore = sColor;
        style.fore.substitute(' ', '0');
        style.specified = static_cast<StyleDefinition::flags>(style.specified | style.sdFore);
      }
      SetOneStyle(wEditor, STYLE_DEFAULT, style);
      SetOneStyle(wOutput, STYLE_DEFAULT, style);
    #else
      SetOneStyle(wEditor, STYLE_DEFAULT, sval.c_str());
      SetOneStyle(wOutput, STYLE_DEFAULT, sval.c_str());
    #endif
    //!-end-[StyleDefault]
     
      sprintf(key, "style.%s.%0d", language.c_str(), STYLE_DEFAULT);
      sval = props.GetNewExpand(key);
      SetOneStyle(wEditor, STYLE_DEFAULT, sval.c_str());
     
      SendEditor(SCI_STYLECLEARALL, 0, 0);
     
      SetStyleFor(wEditor, "*");
      SetStyleFor(wEditor, language.c_str());
     
      SendOutput(SCI_STYLECLEARALL, 0, 0);
     
      sprintf(key, "style.%s.%0d", "errorlist", STYLE_DEFAULT);
      sval = props.GetNewExpand(key);
      SetOneStyle(wOutput, STYLE_DEFAULT, sval.c_str());
     
      SendOutput(SCI_STYLECLEARALL, 0, 0);
     
      SetStyleFor(wOutput, "*");
      SetStyleFor(wOutput, "errorlist");
     
      if (CurrentBuffer()->useMonoFont) {
        sval = props.GetExpanded("font.monospace");
        StyleDefinition sd(sval.c_str());
        for (int style = 0; style <= STYLE_MAX; style++) {
          if (style != STYLE_LINENUMBER) {
            if (sd.specified & StyleDefinition::sdFont) {
              SendEditorString(SCI_STYLESETFONT, style, sd.font.c_str());
            }
            if (sd.specified & StyleDefinition::sdSize) {
              SendEditor(SCI_STYLESETSIZE, style, sd.size);
            }
          }
        }
      }
    }
    Данный код внедрен в форум с помощью скрипта vladvro

    Всего записей: 83 | Зарегистр. 30-04-2007 | Отправлено: 16:28 03-05-2007 | Исправлено: BioInfo, 23:26 05-05-2007
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BioInfo
    Круть!
    Если мы и дальше такими темпами пойдем, то ссылку Нерешенные задачи и вопросы можно будет скоро убирать
     
    Ekstazi
    Цитата:
    Возможно ли сделать SciTe как IDE? То есть чтоб отслеживались имена переменных/функций, их типы, возможные методы и функции для них ?
    SciTE всетаки - обычный текстовый редактор, а не IDE для полусотни различных языков программирования. Возможно присобить Скайт показывать всплывающие подсказки по синтаксу и подсказывать свойства и методы объекта по его имени (при известных ограничениях, конечно). Это отлично работает в SciTE-Ru, но только для тех языков, для которых ктото потрудился и ручками набрал соответствующие api-файлы.
    Можно ли сделать чтобы свойства и методы объекта извлекались автоматически?
    Думаю, что - да, но только с помощью какой то сторонней проги, обладающей подобным функционалом.

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 21:27 03-05-2007
    BioInfo

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Компилю с ворнингами, хочу поделится опасениями:
     
    1.
    liolib.c
    ..\lua\src\lib\liolib.c(603) : warning C4244: '=' : conversion from 'double ' to 'unsigned short ', possible loss of data
    ..\lua\src\lib\liolib.c(663) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
    Это в разделе [os.run], если напарили то исправьте, а если все нормально то нужно явное приведение типов делать (и другим спокойнее)
     
    2.
    SciTEBase.cxx
    ..\src\SciTEBase.cxx(2319) : warning C4702: unreachable code
    В разделе [AutoComplete]
    Вот такое условие никогда не выполнится
    if (onlyOneWord && nwords > 1) {
        return true;
    }
    потому как выше по тексту bool onlyOneWord=false;
    Это такой задел на будущее, косяк или кто-то забыл отладочную инфу убрать?
     
    3.
    А вот это не понял с чем связано, может подскажете?
    ..\src\IFaceTable.cxx(2035) : warning C4514: 'GetterFunction' : unreferenced inline function has been removed
        ..\src\IFaceTable.h(46) : see declaration of 'GetterFunction'
    ..\src\IFaceTable.cxx(2035) : warning C4514: 'SetterFunction' : unreferenced inline function has been removed
        ..\src\IFaceTable.h(51) : see declaration of 'SetterFunction'
     
    Заметил в редакторе странность: нельзя создать два новых листа, никто не знает с чем связано?
     
    Данный вопрос у меня возник всвязи с тем что я реалезовал новую фичу (все любителям огненного лиса посвящаю)
    Смысл в следующем: двойном клик на пустом месте около табов (справа от них) == команде "Создать Ctrl+N"
     
    Реализация (файл SciTEWin.cxx) - немного корректируем следующие функции:

    Код:
    void SciTEWin::Register(HINSTANCE hInstance_) {
    ... код поскипан ...
      // Register the frame window
      className = "SciTEWindow";
    //!  wndclass.style = 0;
    //!-start-[new_on_dbl_clk]  
      wndclass.style = CS_DBLCLKS;
    //!-end-[new_on_dbl_clk]
      wndclass.lpfnWndProc = SciTEWin::TWndProc;
      wndclass.cbClsExtra = 0;
      wndclass.cbWndExtra = sizeof(SciTEWin*);
      wndclass.hInstance = hInstance;
      wndclass.hIcon = ::LoadIcon(hInstance, resourceName);
      wndclass.hCursor = NULL;
      wndclass.hbrBackground = NULL;
      wndclass.lpszMenuName = resourceName;
      wndclass.lpszClassName = className;
      if (!::RegisterClass(&wndclass))
        exit(FALSE);
    ... код поскипан ...
    }

    и

    Код:
    LRESULT SciTEWin::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
    ... код поскипан ...
      case SCITE_TRAY:
        if (lParam == WM_LBUTTONDBLCLK) {
          RestoreFromTray();
          ::ShowWindow(MainHWND(), SW_RESTORE);
          ::FlashWindow(MainHWND(), FALSE);
        }
        break;
    //!-start-[new_on_dbl_clk]
      case WM_LBUTTONDBLCLK:
        ::SendMessage(MainHWND(), WM_COMMAND, IDM_NEW, 0);
        return 0;
    //!-end-[new_on_dbl_clk]
    ... код поскипан ...
      //Platform::DebugPrintf("end wnd proc\n");
      return 0l;
    }

    Хорошая штука "преобразовать код для публикации на форуме", не планируется такую же сделать для публикации в html? Мне бы очень пригодилась, может кто видел? Или может лучше расширите функционал нашего всеми горячо любимого SciTE? Плизззз

    Всего записей: 83 | Зарегистр. 30-04-2007 | Отправлено: 23:07 05-05-2007
    vladvro



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BioInfo
    Цитата:
    Заметил в редакторе странность: нельзя создать два новых листа, никто не знает с чем связано?
    у меня спокойно создает сколько угодно новых, попробуй в оригинальной сборке (с оригинальными бинарниками).

    Цитата:
    Хорошая штука "преобразовать код для публикации на форуме", не планируется такую же сделать для публикации в html? Мне бы очень пригодилась, может кто видел? Или может лучше расширите функционал нашего всеми горячо любимого SciTE?
    уже есть, посмотри функцию File->Export->As HTML (или в руссификации: Файл->экспортировать->в формате HTML)
     

    Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 09:49 07-05-2007
    BioInfo

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

    Цитата:
    у меня спокойно создает сколько угодно новых, попробуй в оригинальной сборке (с оригинальными бинарниками).  

    У меня тоже: только в одном случае не создает, это когда открыт только один новый чистый буфер, говоришь создай еще один и ничего... Правда если внести изменение в него то создать можно будет... Странность какая то.

    Цитата:
    уже есть, посмотри функцию File->Export->As HTML (или в руссификации: Файл->экспортировать->в формате HTML)  

    Это то я в курсе, только пользоваться такой штукой... как бы сказать, не очень удобно. Вот например чтобы вставить кусок кода в форум, я этот кусок выделяю, нажимаю преобразовать и вставляю... А вот чтобы вставить хтмл нужно изрядно попотеть! К тому же он делает по принципу что вижу то и фигарю, шрифты и прочее... У меня на сайте шрифты уже настроены, мне их менять не нужно. Нужно только раскрасить код, заменить проблемные символы (может даже в пре сделать), ну и уж чтобы совсем хорошо было в рамочку обернуть... Вот такая у меня заветная мечта
     
    в народ...
    Сделал чтобы контекстные меню были полностью настраиваемыми, причем автор изначально почему-то не предусмотрел чтобы меню содержало вложенное меню, я это досадное недоразумение поправил. Выглядит это примерно так:

    Код:
    user.context.menu=\
    Undo|IDM_UNDO|\
    Redo|IDM_REDO|\
    ||\
    Cut|IDM_CUT|\
    Copy|IDM_COPY|\
    Paste|IDM_PASTE|\
    Delete|IDM_CLEAR|\
    ||\
    Select All|IDM_SELECTALL|\
    Select|POPUPBEGIN|\
    Новый файл из выделенного|2034|\
    Закоментировать выделенное|IDM_BLOCK_COMMENT|\
    ||\
    Make Selection Uppercase|IDM_UPRCASE|\
    Make Selection Lowercase|IDM_LWRCASE|\
    Select|POPUPEND|\
    ||\
    Toggle Bookmark|IDM_BOOKMARK_TOGGLE|\
    ||\
    Close|IDM_CLOSE|

    Т.е. вложенное меню можно создавать через POPUPBEGIN и POPUPEND, глубину вложенности не проверял, может быть многоуровневым, т.е. одно вложено в другое, то в третье и так далее... Сообщения IDM_UNDO, IDM_COPY и подобные (если интересно могу привести полный список) сами следят за собой, т.е. если сейчас нельзя вставить (буфер пуст), то в меню отразится неактивным (что кстати тоже мое нововведение).
    Это приведен пример контекстного меню редактора (user.context.menu), точно также можно настроить контекстное меню вывода/консоли (user.outputcontext.menu) и контекстное меню буфера/закладки (user.tabcontext.menu). Еще добавил обработку некоторых сообщений, например чтобы можно было скопировать сразу весь текст в файле и другие (опятьже полный список приведу интересующейся публике)
    Код выкладывать я думаю бессмысленно, т.к. изменения много где произошли... Хотя если кому-то сильно интересно могу запостить.

    Всего записей: 83 | Зарегистр. 30-04-2007 | Отправлено: 13:28 07-05-2007
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

    Компьютерный форум Ru.Board » Компьютеры » Программы » SciTE - Open Source Text Editor for Windows & Linux
    Widok (09-10-2007 14:48): лимит страниц. продолжаем здесь


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru