diff --git a/data/edn.desktop b/data/edn.desktop index dfddb4f..49f6d41 100644 --- a/data/edn.desktop +++ b/data/edn.desktop @@ -1,14 +1,27 @@ [Desktop Entry] -Version=0.3.0 Name=Edn : Editeur de N'ours -Exec=edn -Icon=Edn +Exec=edn %U +Icon=/usr/share/edn/icon.png Terminal=false Type=Application -Categories=Development;Utility;TextEditor; +Categories=Development; GenericName=Text editor GenericName[en]=Text editor GenericName[nl]=Tekst verwerker -GenericName[fr]=éditeur de text +GenericName[fr]=Éditeur de text Comment=Code editor for c, c++, php, bash, xml ... Comment[fr]=éditeur de text pour les language c, c++, php, bash, xml ... +OnlyShowIn=GNOME;Unity; +MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Actions=New; + +[Desktop Action New] +Name=Open a New Window +Name[fr]=Ouvrir une nouvelle fenêtre +Name[nl]=Nieuw venster openen +Name[en]=Open a New Window +Exec=edn + +#desktop-file-validate edn.desktop +#sudo cp xxx /usr/share/applications/ \ No newline at end of file diff --git a/data/languages/c/highlight.xml b/data/languages/c/highlight.xml index 6db57e4..68bcaa5 100644 --- a/data/languages/c/highlight.xml +++ b/data/languages/c/highlight.xml @@ -9,130 +9,106 @@ commentDoxygen - /\*\* - \*/ - - macro - \@[A-Z_]{4,500}\@ - - - keyword - @\w*[ \t]*(\[(in|out| |,)*\])?[ \t]*([a-zA-Z0-9\-_]*) - - - + /\*\*.*\*/ SYNTAX_ERROR - /\*[ \t]*TODO : - \*/ + /\*[ \t]*TODO :.*\*/ comment - /\* - \*/ + /\*.*\*/ preprocesseur - #[ \t]*if 0 - #endif|#else - \ + #[ \t]*if 0.*#(endif|else) preprocesseur - # - \n - \ + #(\\|\\n|.)*$ commentDoxygen - //! - \n + //!.*$ SYNTAX_ERROR - //[ \t]*TODO[ \t]*: - \n - \ + //[ \t]*TODO[ \t]*:.*$ comment - // - \n - \ + //(\\|\\n|.)*$ doubleQuoteText - " - " - \ + "(\\|"|.)*" doubleQuoteText - ' - ' - + '(\\|'|.)*' + + + --> diff --git a/sources/appl/Buffer.cpp b/sources/appl/Buffer.cpp index 99e7d9f..5bf4694 100644 --- a/sources/appl/Buffer.cpp +++ b/sources/appl/Buffer.cpp @@ -762,10 +762,8 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64 } for (auto it(m_HLDataPass1.begin()+elemStart); it != m_HLDataPass1.end(); ++it) { //APPL_DEBUG("move element=" << i); - it->beginStart += _nbAdded - _nbDeleted; - it->beginStop += _nbAdded - _nbDeleted; - it->endStart += _nbAdded - _nbDeleted; - it->endStop += _nbAdded - _nbDeleted; + it->start += _nbAdded - _nbDeleted; + it->stop += _nbAdded - _nbDeleted; } //Regenerate Element inside range if ( startId == -1 @@ -774,13 +772,13 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64 generateHighLightAt(0, m_data.size()); } else if(-1 == startId) { //APPL_DEBUG("******* Regenerate START"); - generateHighLightAt(0, m_HLDataPass1[0].beginStart, 0); + generateHighLightAt(0, m_HLDataPass1[0].start, 0); } else if(-1 == stopId) { //APPL_DEBUG("******* Regenerate STOP"); - generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].endStop, m_data.size(), m_HLDataPass1.size()); + generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].stop, m_data.size(), m_HLDataPass1.size()); } else { //APPL_DEBUG("******* Regenerate RANGE"); - generateHighLightAt(m_HLDataPass1[startId].endStop, m_HLDataPass1[startId+1].beginStart, startId+1); + generateHighLightAt(m_HLDataPass1[startId].stop, m_HLDataPass1[startId+1].start, startId+1); } } @@ -829,7 +827,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos, S=-1 *************** E */ for (size_t iii = 0; iii < m_HLDataPass1.size(); ++iii) { - if (m_HLDataPass1[iii].endStop > _startPos) { + if (m_HLDataPass1[iii].stop > _startPos) { break; } _startId = iii; @@ -850,7 +848,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos, elemStart = _startId+1; } for (size_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { - if (m_HLDataPass1[iii].beginStart > _endPos) { + if (m_HLDataPass1[iii].start > _endPos) { _stopId = iii; break; } @@ -875,11 +873,11 @@ appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64 int32_t start = std::max((int64_t)0, _starPos-1); for (size_t iii = start; iii < m_HLDataPass1.size(); ++iii) { _starPos = iii; - if ( m_HLDataPass1[iii].beginStart <= _pos - && m_HLDataPass1[iii].endStop > _pos) { + if ( m_HLDataPass1[iii].start <= _pos + && m_HLDataPass1[iii].stop > _pos) { return &m_HLDataPass1[iii]; } - if(m_HLDataPass1[iii].beginStart > _pos) { + if(m_HLDataPass1[iii].start > _pos) { return nullptr; } } @@ -913,21 +911,21 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const ap for (kkk = std::max(startId, (int64_t)0); kkk < endSearch; ++kkk) { // empty section : if (kkk == 0) { - if (HLStartPos < m_HLDataPass1[kkk].beginStart) { + if (HLStartPos < m_HLDataPass1[kkk].start) { APPL_VERBOSE(" == > (empty section 1 ) kkk=" << kkk << " start=" << HLStartPos << - " stop=" << m_HLDataPass1[kkk].beginStart ); + " stop=" << m_HLDataPass1[kkk].start ); m_highlight->parse2(HLStartPos, - m_HLDataPass1[kkk].beginStart, + m_HLDataPass1[kkk].start, _MData.HLData, m_data); } // else : nothing to do ... } else { APPL_VERBOSE(" == > (empty section 2 ) kkk=" << kkk << - " start=" << m_HLDataPass1[kkk-1].endStop << - " stop=" << m_HLDataPass1[kkk].beginStart ); - m_highlight->parse2(m_HLDataPass1[kkk-1].endStop, - m_HLDataPass1[kkk].beginStart, + " start=" << m_HLDataPass1[kkk-1].stop << + " stop=" << m_HLDataPass1[kkk].start ); + m_highlight->parse2(m_HLDataPass1[kkk-1].stop, + m_HLDataPass1[kkk].start, _MData.HLData, m_data); } @@ -939,9 +937,9 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const ap //if( k < (int32_t)m_HLDataPass1.size()) { if (m_HLDataPass1.size() != 0) { APPL_VERBOSE(" == > (empty section 3 ) kkk=" << kkk << - " start=" << m_HLDataPass1[kkk-1].endStop << + " start=" << m_HLDataPass1[kkk-1].stop << " stop=" << HLStop ); - m_highlight->parse2(m_HLDataPass1[kkk-1].endStop, + m_highlight->parse2(m_HLDataPass1[kkk-1].stop, HLStop, _MData.HLData, m_data); @@ -965,12 +963,12 @@ appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(appl::DisplayHLData int64_t start = std::max((int64_t)0, _MData.posHLPass2-1); for (int64_t iii=start; iii<(int32_t)_MData.HLData.size(); iii++) { _MData.posHLPass2 = iii; - if( _MData.HLData[iii].beginStart <= _pos - && _MData.HLData[iii].endStop > _pos) + if( _MData.HLData[iii].start <= _pos + && _MData.HLData[iii].stop > _pos) { return &_MData.HLData[iii]; } - if(_MData.HLData[iii].beginStart > _pos) { + if(_MData.HLData[iii].start > _pos) { return getElementColorAtPosition(_pos, _MData.posHLPass1); } } diff --git a/sources/appl/Highlight.cpp b/sources/appl/Highlight.cpp index 28ac60c..e825f78 100644 --- a/sources/appl/Highlight.cpp +++ b/sources/appl/Highlight.cpp @@ -181,18 +181,18 @@ void appl::Highlight::parse(int64_t _start, // Stop the search to the end (to get the end of the pattern) ret = m_listHighlightPass1[jjj]->find(elementStart, _buffer.size(), resultat, _buffer); if (HLP_FIND_ERROR != ret) { - HL_DEBUG("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" ); + HL_DEBUG("Find Pattern in the Buffer : (" << resultat.start << "," << resultat.stop << ")" ); // remove element in the current List where the current Element have a end inside the next... int64_t kkk=_addingPos; while(kkk < (int64_t)_metaData.size() ) { - if (_metaData[kkk].beginStart <= resultat.endStop) { + if (_metaData[kkk].start <= resultat.stop) { // remove element HL_DEBUG("Erase element=" << kkk); _metaData.erase(_metaData.begin()+kkk, _metaData.begin()+kkk+1); // Increase the end of search if (kkk < (int64_t)_metaData.size()) { // just befor the end of the next element - elementStop = _metaData[kkk].beginStart-1; + elementStop = _metaData[kkk].start-1; } else { // end of the buffer elementStop = _buffer.size(); @@ -204,9 +204,9 @@ void appl::Highlight::parse(int64_t _start, } // add curent element in the list ... _metaData.insert(_metaData.begin()+_addingPos, resultat); - HL_DEBUG("INSERT at "<< _addingPos << " S=" << resultat.beginStart << " E=" << resultat.endStop ); + HL_DEBUG("INSERT at "<< _addingPos << " S=" << resultat.start << " E=" << resultat.stop ); // update the current research starting element: (set position at the end of the current element - elementStart = resultat.endStop-1; + elementStart = resultat.stop-1; // increment the position of insertion: _addingPos++; // We find a pattern == > Stop search for the current element @@ -243,10 +243,10 @@ void appl::Highlight::parse2(int64_t _start, // Stop the search to the end (to get the end of the pattern) ret = m_listHighlightPass2[jjj]->find(elementStart, elementStop, resultat, _buffer); if (HLP_FIND_ERROR != ret) { - HL2_DEBUG("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" ); + HL2_DEBUG("Find Pattern in the Buffer : (" << resultat.start << "," << resultat.stop << ")" ); // add curent element in the list ... _metaData.push_back(resultat); - elementStart = resultat.endStop-1; + elementStart = resultat.stop-1; // Exit current cycle break; } diff --git a/sources/appl/Highlight.h b/sources/appl/Highlight.h index f031d63..0d8783d 100644 --- a/sources/appl/Highlight.h +++ b/sources/appl/Highlight.h @@ -16,10 +16,8 @@ namespace appl { class HighlightInfo { public: - int32_t beginStart; - int32_t beginStop; - int32_t endStart; - int32_t endStop; + int32_t start; + int32_t stop; bool notEnded; appl::HighlightPattern* patern; // pointer on class : }; diff --git a/sources/appl/HighlightPattern.cpp b/sources/appl/HighlightPattern.cpp index 5a73bbc..ef64aad 100644 --- a/sources/appl/HighlightPattern.cpp +++ b/sources/appl/HighlightPattern.cpp @@ -16,40 +16,21 @@ appl::HighlightPattern::HighlightPattern(const ewol::object::Shared& _glyphPainting) : m_glyphPainting(_glyphPainting), m_paternName(""), - m_regExpStart(nullptr), - m_regExpStop(nullptr), + m_regExp(nullptr), m_colorName(""), - m_escapeChar(u32char::Null), - m_multiline(false), m_level(0) { - m_regExpStart = std::unique_ptr>(new etk::RegExp()); + m_regExp = std::unique_ptr>(new etk::RegExp()); } appl::HighlightPattern::~HighlightPattern() { } -void appl::HighlightPattern::setPaternStart(std::string& _regExp) { - if (m_regExpStart == nullptr) { +void appl::HighlightPattern::setPatern(std::string& _regExp) { + if (m_regExp == nullptr) { return; } - m_regExpStart->compile(_regExp); -} - -void appl::HighlightPattern::setPaternStop(std::string& _regExp) { - m_regExpStop.reset(); - if (_regExp.size() != 0) { - m_regExpStop = std::unique_ptr>(new etk::RegExp()); - if (m_regExpStop != nullptr) { - m_regExpStop->compile(_regExp); - } else { - APPL_ERROR("Allocation error"); - } - } -} - -void appl::HighlightPattern::setEscapeChar(const char32_t& _EscapeChar) { - m_escapeChar = _EscapeChar; + m_regExp->compile(_regExp); } void appl::HighlightPattern::setColorGlyph(std::string& _colorName) { @@ -59,17 +40,9 @@ void appl::HighlightPattern::setColorGlyph(std::string& _colorName) { } void appl::HighlightPattern::display() { - APPL_INFO("patern : \"" << m_paternName << "\" level=" << m_level ); - APPL_INFO(" == > colorName \"" << m_colorName << "\""); - APPL_INFO(" == > regExpStart \"" << m_regExpStart->getRegExp() << "\""); - if (m_regExpStop != nullptr) { - APPL_INFO(" == > regExpStop \"" << m_regExpStop->getRegExp() << "\""); - } - if (m_multiline == true) { - APPL_INFO(" == > multiline pattern: YES"); - } else { - APPL_INFO(" == > multiline pattern: NO"); - } + APPL_INFO("patern : '" << m_paternName << "' level=" << m_level ); + APPL_INFO(" == > colorName '" << m_colorName << "'"); + APPL_INFO(" == > regExp '" << m_regExp->getRegExp() << "'"); } void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { @@ -77,9 +50,7 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { /* preprocesseur - # - $ - yes + # */ //-------------------------------------------------------------------------------------------- @@ -101,30 +72,13 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { setColorGlyph(myEdnData); } } - xChild = _child->getNamed("start"); + xChild = _child->getNamed("regex"); if (nullptr != xChild) { std::string myData = xChild->getText(); if (myData.size() != 0) { //APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); std::string myEdnData = myData; - setPaternStart(myEdnData); - } - } - xChild = _child->getNamed("end"); - if (nullptr != xChild) { - std::string myData = xChild->getText(); - if (myData.size() != 0) { - //APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); - std::string myEdnData = myData; - setPaternStop(myEdnData); - } - } - xChild = _child->getNamed("EscapeChar"); - if (nullptr != xChild) { - std::string myData = xChild->getText(); - if (myData.size() != 0) { - //APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); - setEscapeChar(myData[0]); + setPatern(myEdnData); } } } @@ -135,41 +89,17 @@ enum resultFind appl::HighlightPattern::find(int32_t _start, appl::HighlightInfo& _resultat, etk::Buffer& _buffer) { //APPL_DEBUG(" try to find the element"); - _resultat.beginStart = -1; - _resultat.beginStop = -1; - _resultat.endStart = -1; - _resultat.endStop = -1; + _resultat.start = -1; + _resultat.stop = -1; _resultat.notEnded = false; _resultat.patern = this; // when we have only one element: - if (m_regExpStop == nullptr) { - if (true == m_regExpStart->processOneElement(_buffer, _start, _stop)) { - _resultat.beginStart = m_regExpStart->start(); - _resultat.beginStop = m_regExpStart->stop(); - _resultat.endStart = m_regExpStart->start(); - _resultat.endStop = m_regExpStart->stop(); - return HLP_FIND_OK; - } - //APPL_DEBUG("NOT find hightlightpatern ..."); - return HLP_FIND_ERROR; - } - // try while we find the first element - if (m_regExpStart->processOneElement(_buffer, _start, _stop, m_escapeChar) == false) { - return HLP_FIND_ERROR; - } - _resultat.beginStart = m_regExpStart->start(); - _resultat.beginStop = m_regExpStart->stop(); - if (m_regExpStop->parse(_buffer, _resultat.beginStop, _stop, m_escapeChar) == true) { - _resultat.endStart = m_regExpStop->start(); - _resultat.endStop = m_regExpStop->stop(); + if (true == m_regExp->processOneElement(_buffer, _start, _stop)) { + _resultat.start = m_regExp->start(); + _resultat.stop = m_regExp->stop(); return HLP_FIND_OK; - } else { - _resultat.endStart = _stop+1; - _resultat.endStop = _stop+1; - _resultat.notEnded = true; - return HLP_FIND_OK_NO_END; } - //APPL_DEBUG("NOT find start hightlightpatern ..."); + //APPL_DEBUG("NOT find hightlightpatern ..."); return HLP_FIND_ERROR; } diff --git a/sources/appl/HighlightPattern.h b/sources/appl/HighlightPattern.h index 4611254..fd260d4 100644 --- a/sources/appl/HighlightPattern.h +++ b/sources/appl/HighlightPattern.h @@ -44,13 +44,9 @@ namespace appl { return m_paternName; }; private: - std::unique_ptr> m_regExpStart; //!< Start of Regular expression + std::unique_ptr> m_regExp; //!< Start of Regular expression public: - void setPaternStart(std::string& _regExp); - private: - std::unique_ptr> m_regExpStop; //!< Stop of Regular Expression - public: - void setPaternStop(std::string& _regExp); + void setPatern(std::string& _regExp); private: std::string m_colorName; //!< Current color name int32_t m_colorId; //!< Id of the the glyph painting @@ -59,16 +55,6 @@ namespace appl { const appl::GlyphDecoration& getColorGlyph() { return (*m_glyphPainting)[m_colorId]; }; - private: - char32_t m_escapeChar; //!< Escape char to prevent exeit of patern .... - public: - void setEscapeChar(const char32_t& _EscapeChar); - private: - bool m_multiline; //!< The patern is multiline - public: - void setMultiline(bool _enable) { - m_multiline = _enable; - }; private: int32_t m_level; //!< Level of the pattern == > this is to overwrite next pattern when we create an higher .... public: