Recent Posts

Pages: 1 2 3 4 5 [6] 7 8 9 10
51
Development / new idea: smart copy of the code snippet with [code] tag around
« Last post by ollydbg on March 20, 2024, 05:15:26 am »
Under my web browser, I have an addon named: Link Text and Location Copier

With this add on, I can copy the link with many kinds of format, such as: wikipedia link format, or makdown link format or phpBB link format.

I think we can have a similar function, when you copy a piece of the code in the editor, we can got the result like:

Code
In the source file: xxxx/yyyy.cpp
code tag begin

The code content.

code tag end

Any ideas? Or maybe we already have this feature?
52
Development / Re: new idea: context menu to open the image in doxygen style comment
« Last post by ollydbg on March 20, 2024, 03:04:06 am »
For another issue:

I see a lot of "\" (the escape) in the regular expression pattern string.

For example, in cbeditor.cpp, there are some patter string like below

Code
        wxRegEx reUrl(wxT("***:("
                                "((ht|f)tp(s?)\\:\\/\\/)"
                                "|(www\\.)"
                              ")"
                              "("
                                "([\\w\\-]+(\\.[\\w\\-]+)+)"
                                "|localhost"
                              ")"
                              "(\\/?)([\\w\\-\\.\\?\\,\\'\\/\\\\\\+&%\\$#]*)?"
                              "([\\d\\w\\.\\/\\%\\+\\-\\=\\&\\?\\:\\\\\\"\\'\\,\\|\\~\\;]*)"));

Can we use the C++ raw string? Which we can remove a lot of "\".

Any ideas?

53
Plugins development / Re: Code completion using LSP and clangd
« Last post by christo on March 19, 2024, 06:21:49 pm »
Hi Pecan,

I found two issues with applying fix in my setup. I'm using clangd version 18.0.0
1. "fixes available" along with "fix available"
2. Multi line fixes, eg: unused header warnings.

Below modification helped to apply these fixes.
Code
diff --git a/src/plugins/contrib/clangd_client/src/LSPclient/lspdiagresultslog.cpp b/src/plugins/contrib/clangd_client/src/LSPclient/lspdiagresultslog.cpp
index b64e7d760..425268724 100644
--- a/src/plugins/contrib/clangd_client/src/LSPclient/lspdiagresultslog.cpp
+++ b/src/plugins/contrib/clangd_client/src/LSPclient/lspdiagresultslog.cpp
@@ -256,7 +256,7 @@ void LSPDiagnosticsResultsLog::OnApplyFixIfAvailable(wxCommandEvent& event) //(p
     {
         // Got the selected item index
         selectedLineText = GetItemAsText(itemIndex);
-        if (not selectedLineText.Contains(" (fix available) "))
+        if (not (selectedLineText.Contains(" (fix available) ") or (selectedLineText.Contains("(fixes available)"))))
         {
             wxString msg = wxString::Format(_("No Fix available for logLine(%d)"), int(itemIndex) );
             InfoWindow::Display(_("NO fix"), msg);
diff --git a/src/plugins/contrib/clangd_client/src/codecompletion/parser/parser.cpp b/src/plugins/contrib/clangd_client/src/codecompletion/parser/parser.cpp
index b97e46a30..2ef369352 100644
--- a/src/plugins/contrib/clangd_client/src/codecompletion/parser/parser.cpp
+++ b/src/plugins/contrib/clangd_client/src/codecompletion/parser/parser.cpp
@@ -3688,15 +3688,17 @@ void Parser::OnRequestCodeActionApply(wxCommandEvent& event) //(ph 2024/02/12)
         int startLine; // 1 origin; needs to be changed to zero origin
         int lineStartCol;
         int lineEndCol;
+        int endLine;
 
         codeActionStr  = FixesFound[ii];
         try {
             // std::string testData = "{\"newText\":\"int\",\"range\":{\"end\":{\"character\":8,\"line\":275},\"start\":{\"character\":4,\"line\":275}}}"; // **Debugging**
             nlohmann::json jCodeAction = nlohmann::json::parse(codeActionStr.ToStdString());
             newText      = jCodeAction["newText"].get<std::string>();
-            startLine    = lineNumInt; // it's already 1 origin
+            startLine    = jCodeAction["range"]["start"]["line"] ;
             lineStartCol = jCodeAction["range"]["start"]["character"] ;
             lineEndCol   = jCodeAction["range"]["end"]["character"] ;
+            endLine      = jCodeAction["range"]["end"]["line"] ;
         }
         catch(std::exception &err)
         {
@@ -3708,9 +3710,12 @@ void Parser::OnRequestCodeActionApply(wxCommandEvent& event) //(ph 2024/02/12)
         // pEd contains the cbEditor ptr from above
         cbStyledTextCtrl* pControl = pEd->GetControl();
          // Replace text; note that the startLine is from the log msg line, so it's 1 origin
-        int linePosn = pControl->PositionFromLine(startLine-1); // use zero origin for line
-        pControl->SetTargetStart(linePosn + lineStartCol);
-        pControl->SetTargetEnd(linePosn + lineEndCol );
+        int linePosn = pControl->PositionFromLine(startLine); // use zero origin for line
+        int targetStart = linePosn + lineStartCol;
+        pControl->SetTargetStart(targetStart);
+        int lineEndPosn = pControl->PositionFromLine(endLine);
+        int targetEnd = lineEndPosn + lineEndCol;
+        pControl->SetTargetEnd(targetEnd);
         pControl->ReplaceTarget(newText);
     }//endfor FixesFound
 

Thanks, Christo
54
Development / Re: new idea: context menu to open the image in doxygen style comment
« Last post by ollydbg on March 19, 2024, 01:45:50 pm »
This is the patch file for this simple feature.

When you right click on a image filename in the comment, such as "a.jpg".

Suppose you are editing a file named: "c:/abc/def.cpp", and you will open the file in the default image file browser.

Code
diff --git a/src/sdk/cbeditor.cpp b/src/sdk/cbeditor.cpp
index 71622d79..2a76d8a9 100644
--- a/src/sdk/cbeditor.cpp
+++ b/src/sdk/cbeditor.cpp
@@ -393,7 +393,7 @@ struct cbEditorInternalData
         }
     }
 
-    wxString GetUrl()
+    wxString GetUrl(wxString filename = wxEmptyString)
     {
         cbStyledTextCtrl* control = m_pOwner->GetControl();
         if (!control)
@@ -409,6 +409,9 @@ struct cbEditorInternalData
                               ")"
                               "(\\/?)([\\w\\-\\.\\?\\,\\'\\/\\\\\\+&amp;%\\$#]*)?"
                               "([\\d\\w\\.\\/\\%\\+\\-\\=\\&amp;\\?\\:\\\\\\&quot;\\'\\,\\|\\~\\;]*)"));
+
+        wxRegEx reFile(R"raw([A-Za-z0-9]+\.(jpg|jpeg|png|gif|bmp|svg))raw");
+
         wxString url = control->GetSelectedText();
         // Is the URL selected?
         if (reUrl.Matches(url))
@@ -456,6 +459,31 @@ struct cbEditorInternalData
             else
                 url = wxEmptyString; // nope, too far from cursor, return invalid (empty)
         }
+        else if (reFile.Matches(url))
+        {
+            wxString match = reFile.GetMatch(url);
+            if ((url.Find(match) + startPos < control->GetCurrentPos()) &&
+                (url.Find(match) + startPos + (int)match.Length() > control->GetCurrentPos()))
+            {
+                // Translate short file path to absolute file path using the current source file path
+                // match is some string like "xyz.jpg" or "xyz.png"
+                if (match.IsEmpty())
+                {
+                    return wxT("file:///") + match;
+                }
+                else
+                {
+                    // suppose we are editing a file named : "c:/abc/def.cpp"
+                    // the file contains some piece of the comments which is "xyz.jpg"
+                    // we create an absolute file path of the image file named "c:/abc/xyz.jpg"
+                    wxFileName baseFilename(filename);
+                    wxFileName newFilename(baseFilename.GetPath(), match);
+                    return wxT("file:///") + newFilename.GetFullPath();
+                }
+            }
+            else
+                url = wxEmptyString; // nope, too far from cursor, return invalid (empty)
+        }
         else
             url = wxEmptyString; // nope, return invalid (empty)
 
@@ -3289,7 +3317,7 @@ void cbEditor::OnContextMenuEntry(wxCommandEvent& event)
     else if (id == idFoldingToggleCurrent)
         ToggleFoldBlockFromLine();
     else if (id == idOpenUrl)
-        wxLaunchDefaultBrowser(m_pData->GetUrl());
+        wxLaunchDefaultBrowser(m_pData->GetUrl(GetFilename()));
     else if (id == idSplitHorz)
         Split(stHorizontal);
     else if (id == idSplitVert)

55
Development / Re: new idea: context menu to open the image in doxygen style comment
« Last post by ollydbg on March 19, 2024, 04:46:58 am »
why not display it within a popup contex window, like message tips? And provide a entry to let the user have a change to show a big view via web browser.

Yes, context menu -> popup window could better.

Quote
And, how many people will use this feature?

I don't know, but I think this is a nice feature, especially if you have diagram or flowchart in images.


56
Development / Re: new idea: context menu to open the image in doxygen style comment
« Last post by kipade on March 19, 2024, 04:37:52 am »
why not display it within a popup contex window, like message tips? And provide a entry to let the user have a change to show a big view via web browser.
And, how many people will use this feature?
57
Using Code::Blocks / Virtual folders question
« Last post by DartLake on March 19, 2024, 04:09:45 am »
Hi everyone!
Is there any tool available to convert virtual folders to real folders on the system?
I have a large project that i would prefer to have in real folders, although it's a ton to refactor all by hand!
58
Using Code::Blocks / Re: Debugger - Memory dump
« Last post by Evan on March 17, 2024, 09:47:49 am »
Thanks, really appreciated.  :)
59
Development / new idea: context menu to open the image in doxygen style comment
« Last post by ollydbg on March 16, 2024, 04:05:57 pm »


https://www.doxygen.nl/manual/commands.html#cmdimage

We can have such comment:

Code
  /*! Here is a snapshot of my new application:
   *  \image html application.jpg
   *  \image latex application.eps "My application" width=10cm
   */

I think when a user right click on the "application.jpg", we can generate a url to let the browser open this jpg file in the browser?

Because we already have a context menu named "Open link in browser" which is used to open a link, such as: "http://xxx.yyy.zzz" in the comment.

Any ideas?

Sometimes, we need images in the doxygen, but we need to find a quick way to view the image.
60
Plugins development / Re: Code completion using LSP and clangd
« Last post by Pecan on March 15, 2024, 11:21:58 pm »
On Windows 11 opening the project file itself in Windows (not directly through Codeblocks) does not parse the project on opening. Reparsing is needed to be done manually. Doing so through Codeblocks works fine.
Steps to reproduce:
1. Codeblocks not running
2. Double-click on any project file *.cbp

On Plugin wiki https://wiki.codeblocks.org/index.php/CB_Clangd_Client the first link to the plugin repository page is not working.

For information, there is a discussion of doxygen support for Clangd - https://github.com/clangd/clangd/issues/529

Thanks
The URL has been corrected. And thanks for the doxygen info.

I will see what I can do about DDE opened projects not being parsed automatically.
Pages: 1 2 3 4 5 [6] 7 8 9 10