<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[DAP client plugin]]></title><description><![CDATA[<p dir="auto"><a href="https://github.com/Ekopalypse/NppDebugger/releases" rel="nofollow ugc">This</a> is not for the faint of heart :)<br />
Discussions should take place <a href="https://github.com/Ekopalypse/NppDebugger/discussions/1" rel="nofollow ugc">here</a></p>
]]></description><link>https://community.notepad-plus-plus.org/topic/27543/dap-client-plugin</link><generator>RSS for Node</generator><lastBuildDate>Thu, 18 Jun 2026 09:34:00 GMT</lastBuildDate><atom:link href="https://community.notepad-plus-plus.org/topic/27543.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 May 2026 11:48:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DAP client plugin on Thu, 04 Jun 2026 08:33:55 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a></p>
<p dir="auto">It all sounded so logical to me when I wrote it, but now that I’m reading it again, I have to agree with you—<br />
that wasn’t my best explanation of how this is supposed to work. Thanks for clarifying, and yes,<br />
<code>Prefer installed Python libraries</code> and a local Python installation are necessary in this scenario.</p>
<p dir="auto">Regarding sys.path, yes, that makes sense. I should have tested all of this in a sandbox; then I would have noticed how<br />
my own setup differs from a standard installation.</p>
<p dir="auto">And yes, the procedure, which is ONLY necessary to debug PythonScript scripts, is that you have one Npp instance,<br />
in which the script is debugged—let’s call it instance A—and another, let’s call this instance B,<br />
in which the script to be debugged actually runs.</p>
<p dir="auto">So, Instance A starts the debugging session via <code>Plugins-&gt;NppDebugger-&gt;Start</code>.<br />
This results in a new Npp instance B being launched.<br />
Now, in Instance B, the script that configures debugpy must be started.<br />
This causes debugpy to launch another Python process pydevd which is the real python debugger.</p>
<p dir="auto">This means that NppDebugger, from Npp instance A, waits for debugpy in Npp instance B to start the<br />
Python debugger pydevd AND for debugpy to start a TCP server to which NppDebugger can then connect.</p>
<p dir="auto">NppDebugger(tcp client) &lt;-&gt; debugy(tcp server) &lt;-intern-&gt; debugy(tcp client) &lt;-&gt; pydevd(tcp server)</p>
<p dir="auto">As soon as NppDebugger establishes a connection, it begins communicating with debugpy via DAP messages.</p>
<blockquote>
<p dir="auto">Is the long-term plan …</p>
</blockquote>
<p dir="auto">Yes, ultimately, the plugin should be designed to minimize the need for manual configuration editing.<br />
For debuggers that work with compiled source code, such as gdb, delve, lldb, etc.,<br />
this is usually a project-specific setting and something that a user must set at least once per project.<br />
I don’t see how the plugin could figure this out on its own.<br />
For PythonScript debugging, a simple variable substitution, as you mentioned, seems sufficient.</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lycan-thrope" aria-label="Profile: Lycan-Thrope">@<bdi>Lycan-Thrope</bdi></a> <a href="/post/105660">said</a>:</p>
<p dir="auto">They have a Trial Version</p>
</blockquote>
<p dir="auto">If I find the time, I’ll give it a try… but that might take a while… :)</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lycan-thrope" aria-label="Profile: Lycan-Thrope">@<bdi>Lycan-Thrope</bdi></a> <a href="/post/105660">said</a>:</p>
<p dir="auto">What the heck, …</p>
</blockquote>
<p dir="auto">:D - thank you :D</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105667</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105667</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Thu, 04 Jun 2026 08:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Wed, 03 Jun 2026 19:42:18 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> <a href="/post/105650">said</a>:</p>
<p dir="auto">Unfortunately, I don’t know anything about dBase, but if it’s an OLE server, you could definitely control it using the PythonScript plugin—or, if I recall correctly, there was/is also an ActiveX plugin—provided those methods are available.</p>
</blockquote>
<p dir="auto">It uses ActiveX objects, but I don’t believe it’s usable by them, hence as far as I know, OLE is the only way, unless I find out otherwise. Will check.</p>
<blockquote>
<p dir="auto">Is there a free version of the DBase version you’re using?</p>
</blockquote>
<p dir="auto">They have a Trial Version, as far as I know, but the website provider was shut down for awhile under one of those recent supply chain attacks that affected cPanel. I think it’s back up now, though, so you can check it at <a href="www.dbase.com">dBASE.com</a>.</p>
<blockquote>
<pre><code>In the meantime, I need to find that person causing all these IRL chores and have a talk with them…unfortunately, I suspect if I do start having a conversation with ‘him’, people will view me crazier than they already do. :-)
</code></pre>
<p dir="auto">Not me :) And if you find him, give him a good smack from me too :D</p>
</blockquote>
<p dir="auto">What the heck, I already have to beat my self up, may as well do it for you, too. :-)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105660</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105660</guid><dc:creator><![CDATA[Lycan Thrope]]></dc:creator><pubDate>Wed, 03 Jun 2026 19:42:18 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Wed, 03 Jun 2026 18:25:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> ,</p>
<p dir="auto">Thanks for that.  I now have a proof-of-concept setup for launching.</p>
<p dir="auto">For future readers trying to replicate, here are a few notes I came up with while getting this working:</p>
<ul>
<li>I believe that <a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: ekopalypse">@<bdi>ekopalypse</bdi></a>’s “PythonScript plugin must also be able to access the local Python installation” means to checkmark <code>☑ Prefer installed python libraries</code> in the plugin config</li>
<li>that option requires that you copy the <code>python314.dll</code> from the installed python overtop the copy in the pythonscript plugin directory</li>
<li>For whatever reason (whether it’s because I have a non-standard python location, or something else I don’t understand), that doesn’t actually make the plugin see my libraries (so it didn’t see <code>debugpy</code> on my first try).  To get around it, I used <code>python -m site</code> from the command-line to find my normal sys.path for the installed python, then prepended those to my sys.path in my ATSTARTUP-enabled <code>startup.py</code>.  Hopefully, if you have a standard python installation, you won’t need that extra sys.path manipulation</li>
<li>“start debugging and run the script in the new NPP instance”: this was mildly unclear, but I found it seems to mean to do <strong>Plugins &gt; NppDebugger &gt; start</strong>, which launches the second instance, then to run the “configure debugpy accordingly” script (at first, I thought I had to run that script in the main, then start the debugger, then manually run the script-under-test in the new instance</li>
</ul>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: ekopalypse">@<bdi>ekopalypse</bdi></a> ,  I did have a question, though: Is the long-term plan for NppDebugger plugin (if there is one) to continue to have to hardcode the code-under-test in the NppDebugger.toml file?  Or will you eventually enable setting it as something like <code>debugger_args = ["-pluginMessage=PythonScript=run_in_debug_mode=$(FULL_CURRENT_PATH)"]</code> and <code>"program": "$(FULL_CURRENT_PATH)"</code> , so that it will automatically run the debugger on the active program, rather than having to modify the TOML every time you want to change what file you’re debugging?  Or is there something I don’t understand, and it can already do that?</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105657</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105657</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Wed, 03 Jun 2026 18:25:49 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Wed, 03 Jun 2026 15:23:38 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a> <a href="/post/105602">said</a>:</p>
<p dir="auto">Now if it worked with PythonScript, so I could single-step while debugging N++ automation</p>
</blockquote>
<p dir="auto">To enable debugging of Python scripts, you need a local Python installation and must install the “debugpy” module.<br />
Of course, the PythonScript plugin must also be able to access the local Python installation.<br />
My test configuration looks like this</p>
<pre><code class="language-toml">[python.script]
debugger = "C:/PortableApps/npp/notepad++.exe"
debugger_args = ["-pluginMessage=PythonScript=run_in_debug_mode=C:/repos/nppdebugger/tests/debuggees/python/test_pythonscript.py"]
mode = "tcp"
host = "127.0.0.1"
port = 5678
launch_args = '''{
	"program": "C:/repos/nppdebugger/tests/debuggees/python/test_pythonscript.py"
}'''
</code></pre>
<p dir="auto">In addition, you need a script to configure debugpy accordingly.</p>
<pre><code class="language-python">import os
os.environ["PYDEVD_DISABLE_FILE_VALIDATION"] = "1"

from Npp import console, notepad
import debugpy
import re

def main():
    cmd_line = notepad.getCommandLine()
    if "-pluginMessage=PythonScript=run_in_debug_mode" in cmd_line:
        debugpy.configure(python=r"C:\python\python314\python.exe")
        debugpy.listen(('127.0.0.1', 5678))

        console.write("Waiting for DebuggerApp to attach on port 5678...\n")
        console.show()

        matches = re.search(r'-pluginMessage=PythonScript=run_in_debug_mode=(.+?)(?&gt;;|$)', cmd_line)
        if matches is None:
            console.writeError("Script to be debugged was not provided")
            return

        target_file = matches.group(1)

        debugpy.wait_for_client()

        console.write("PythonScript thinks this file is: " + __file__ + "\n")

        with open(target_file, 'r', encoding='utf-8') as f:
            script_content = f.read()

        code_obj = compile(script_content, target_file, 'exec')

        env = globals().copy()
        env['__file__'] = target_file
        env['__name__'] = '__main__'

        exec(code_obj, env)

main()
</code></pre>
<p dir="auto">The key factors are the debugpy lines and the fact that the correct script is called as soon as the client connects to debugpy.</p>
<p dir="auto">So, start debugging and run the script in the new NPP instance, and then you should be able to step through it.</p>
<p dir="auto">EDIT: and of course the new v.0.0.2 version of NppDebugger is needed</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105651</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105651</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Wed, 03 Jun 2026 15:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Wed, 03 Jun 2026 15:17:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lycan-thrope" aria-label="Profile: Lycan-Thrope">@<bdi>Lycan-Thrope</bdi></a></p>
<p dir="auto">Unfortunately, I don’t know anything about dBase, but if it’s an OLE server, you could definitely control it using the PythonScript plugin—or, if I recall correctly, there was/is also an ActiveX plugin—provided those methods are available.</p>
<p dir="auto">Is there a free version of the DBase version you’re using?</p>
<blockquote>
<p dir="auto">In the meantime, I need to find that person causing all these IRL chores and have a talk with them…unfortunately, I suspect if I do start having a conversation with ‘him’, people will view me crazier than they already do. :-)</p>
</blockquote>
<p dir="auto">Not me :) And if you find him, give him a good smack from me too :D</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105650</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105650</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Wed, 03 Jun 2026 15:17:43 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Wed, 03 Jun 2026 09:07:01 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> <a href="/post/105588">said</a>:</p>
<p dir="auto">Those are exactly the things that keep holding me back.<br />
I have no idea who came up with them, but… can’t we just fire that person?<br />
I mean, obviously I’m not the only one this affects. :-D</p>
</blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> ,<br />
I appreciate your research into this, and I’ll look at it again, later, at least for dBASE.  The problem, however for dBASE is it’s IDE, which is a program that is a virtual machine , and unless I can control the dBASE IDE via, say, OLE, from Notepad++, it’s going  to be an impossible attempt, as far as I know.</p>
<p dir="auto">It boils down to one of the problems I’ve been having trying to get a file edited in NPP, to open inside the dBASE IDE, which, essentially runs it, since after editing, you want the file compiled and run.  Sending a file to the IDE doesn’t give the option of compile only, or run only. It does both.  When it does both it will attempt to compile and run the file, but the problem is that the last active directory, is still hardcoded in the environment and the .ini file (any time it starts up) for the IDE, and will open there and then throw a database error , or file location error, and not allow the file to be opened.  Much like Notepad++ won’t allow changes to it’s environment and files to be changed until restarted and reloaded.</p>
<p dir="auto">Even using a slight of hand to bring up a directory file dialog box inside the IDE to allow going to the file, fails because the IDE environment STAYS in the last active directory.  It requires changing that directory inside of the IDE to direct to the directory that can compile and run that file.  Inside the IDE, one can compile and run, separately. Not from the outside, which I suspect is an unexpected security precaution.</p>
<p dir="auto">There might be a way to change the .ini file settings before using Run to start the application, (something I may look at) but that’s a lot of trouble for varying paths, apps…etc., for something that should be simple if the communication was easier. I’m still looking at this aspect, at least as a possible solution for opening files in the IDE to be compiled and run, and would be a step toward the Debugger, but it’s not there yet and time, as we’ve mentioned, is at a bit of a premium right now. The problem with the Notepad++ Run (as well as the Windows Run) is that the path has to be hardcoded. It doesn’t work with the NPP Run variables being passed to the commandline path to open the dBASE IDE, but even if it did, the environment doesn’t allow for that path to change the “last active directory”.</p>
<p dir="auto">I know, it’s frustrating.  :-(</p>
<p dir="auto">The easiest way I can think of, to better commmunicate, is if dBASE is an OLE server that Notepad++ can connect to and allow commands to be sent to the IDE to manipulate it from inside. If that is possible, then maybe that can then be put into, say, a PythonScript inside Notepad++ to automate the process. Unfortunately, searching the Notepad++ documentation, I don’t see any mention of Notepad++ being OLE capable.</p>
<p dir="auto">As of right now,  until I can either find out how to use text commands to the Debugger (which is also, an app run inside of the IDE runtime), or figure out how to use OLE with Notepad++ and the dBASE environment,  communication with the standalone debugger app for dBASE will have to go on that way in the back burner.</p>
<p dir="auto">Not ruling it out or giving up, just putting it where it has to go for now, until my understanding, knowledge and capability improves.  In the meantime, I need to find that person causing all these IRL chores and have a talk with them…unfortunately, I suspect if I do start having a conversation with ‘him’, people will view me crazier than they already do.  :-)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105644</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105644</guid><dc:creator><![CDATA[Lycan Thrope]]></dc:creator><pubDate>Wed, 03 Jun 2026 09:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Mon, 01 Jun 2026 08:46:29 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a></p>
<p dir="auto">Okay, I got it working, but I need to revise the configuration section of NppDebugger.<br />
Debugging PythonScript is fundamentally different from debugging “regular” Python programs.<br />
Currently, however, NppDebugger selects the debugger based on the language, which no longer works in this case.<br />
So I guess I need to introduce a “profile-like” approach, i.e., a language can have multiple debug adapters.<br />
If multiple adapters are defined, we could display a small dialog to select the desired adapter.<br />
Additionally, the debuggee process is currently terminated when the session ends, which is usually not a problem, but when debugging PythonScript, Npp itself is the debuggee process, and terminating it could leave plugins in an unexpected state, such as in my case, where NppLspClient can no longer perform its cleanup.<br />
So I need an additional option to configure<br />
the debuggee process so that it is not terminated after the debugging session ends.</p>
<p dir="auto">I hope another version will be available by the end of this week.</p>
<p dir="auto"><img src="/assets/uploads/files/1780303579725-nppdebugger_in_action.gif" alt="nppdebugger_in_action.gif" class=" img-fluid img-markdown" /></p>
]]></description><link>https://community.notepad-plus-plus.org/post/105616</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105616</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Mon, 01 Jun 2026 08:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Sun, 31 May 2026 09:50:49 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a> <a href="/post/105602">said</a>:</p>
<p dir="auto">That’s the problem: I couldn’t find any perl-based ones myself;</p>
</blockquote>
<p dir="auto">As for Perl, there’s this <a href="https://github.com/richterger/Perl-LanguageServer" rel="nofollow ugc">project</a><br />
The README file actually states that it doesn’t work on Windows,<br />
because there are issues with asynchronous reading from stdin/stout.<br />
Hmm… The question is, couldn’t we switch to TCP instead?<br />
The transport layer usually only handles reading and writing, and if you abstract that,<br />
the rest is already taken care of for LSP and DAP.</p>
<blockquote>
<p dir="auto">Though I’ll still pull out the plugin for when I want to single-step through Python… Now if it worked with PythonScript, so I could single-step while debugging N++ automation, I’d have it always enabled…  So, if you have any ideas on that, I’m all ears. :-)</p>
</blockquote>
<p dir="auto">I haven’t really looked into how debugpy works under the hood yet,<br />
but I would guess that you’d have to proceed something like this.</p>
<p dir="auto">NppDebugger launches a second instance of Npp with the desired file.<br />
In PythonScripts’ <a href="http://startup.py" rel="nofollow ugc">startup.py</a>, debugpy must be loaded and the DAP server started.<br />
NppDebugger connects to it and requests that the relevant script be launched.</p>
<p dir="auto">I’ll try this out over the course of the next week.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105605</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105605</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Sun, 31 May 2026 09:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Sat, 30 May 2026 17:57:45 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/rdipardo" aria-label="Profile: rdipardo">@<bdi>rdipardo</bdi></a> <a href="/post/105565">said</a>:<br />
If you have the Rust toolchain installed, there’s a <code>perl-dap</code> <a href="https://crates.io/crates/perl-dap" rel="nofollow ugc">binary crate</a>.</p>
</blockquote>
<p dir="auto">Hmph.  I had been trying to find something in the <em>perl</em> ecosystem to enable DAP for perl.  It’s counterintuitive to have to install a 1+ GB Rust toolchain just to connect a Perl debugger to Notepad++.</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: ekopalypse">@<bdi>ekopalypse</bdi></a> [asked&rsqb;&rsqb;(/post/105567):<br />
Which debugger did you use?</p>
</blockquote>
<p dir="auto">That’s the problem: I couldn’t find any perl-based ones myself; and the free AI I asked tried to get me to use a perl module that didn’t have features/functions/etc that it claimed to have, and when I looked into the documentation of that module, it didn’t mention anything about supporting DAP, so I’m not sure why the AI suggested it at all.</p>
<p dir="auto">I was hoping to be able to try out perl debugging from Notepad++ “for fun”, if this plugin made it easy.  But since the ecosystem is providing friction, I probably won’t be continuing down that path.</p>
<p dir="auto">Though I’ll still pull out the plugin for when I want to single-step through Python… Now if it worked with PythonScript, so I could single-step while debugging N++ automation, I’d have it always enabled…  So, if you have any ideas on that, I’m all ears. :-)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105602</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105602</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Sat, 30 May 2026 17:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Fri, 29 May 2026 08:01:24 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lycan-thrope" aria-label="Profile: Lycan-Thrope">@<bdi>Lycan-Thrope</bdi></a></p>
<blockquote>
<p dir="auto">you bring me a new feature to try and work into the package</p>
</blockquote>
<p dir="auto">I’m sooorrrryyy :D</p>
<blockquote>
<p dir="auto">get up to speed on this DAP and</p>
</blockquote>
<p dir="auto">In short, it is essentially a “standard” for how an application should communicate with a debugger.<br />
The communication itself takes place via JSON with a header section and is transmitted either via stdio or TCP.<br />
Each side can send a request, which must be answered by the other side with a response, and in addition,<br />
both sides can send events, which are simply pieces of information that do not require a response.<br />
It looks like this</p>
<pre><code>Content-Length: 139

{"seq":29,"type":"event","event":"stopped","body":{"allThreadsStopped":true,"hitBreakpointIds":[1],"reason":"breakpoint","threadId":13008}}

Content-Length: 46

{"command":"threads","type":"request","seq":9}

Content-Length: 180

{"seq":30,"type":"response","request_seq":9,"success":true,"command":"threads","body":{"threads":[{"id":10932,"name":"2: tid=10932 \"\""},{"id":13008,"name":"1: tid=13008 \"\""}]}}
Content-Length: 47

</code></pre>
<p dir="auto">So, to make your dbase debugger dap-compatible, you need to wrap it in this layer and interpret it:<br />
In the previous example, the client asks: Which threads are currently running?<br />
And the dbase adapter would then have to convert this into dbase debugger commands and return the result wrapped in JSON.</p>
<p dir="auto">Of course, not all debuggers can support every feature, which is where <a href="https://microsoft.github.io/debug-adapter-protocol/specification#Types_Capabilities" rel="nofollow ugc">capabilities</a> come into play.<br />
Before the actual debugging begins, the client and the debug-adapter exchange information about what each is capable of,<br />
and only the appropriate requests should be used thereafter.</p>
<blockquote>
<p dir="auto">along with all the IRL chores I have to get done this season</p>
</blockquote>
<p dir="auto">Those are exactly the things that keep holding me back.<br />
I have no idea who came up with them, but… can’t we just fire that person?<br />
I mean, obviously I’m not the only one this affects. :-D</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105588</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105588</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Fri, 29 May 2026 08:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Fri, 29 May 2026 07:22:20 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> <a href="/post/105567">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lycan-thrope" aria-label="Profile: lycan-thrope">@<bdi>lycan-thrope</bdi></a><br />
Yes, as long as the debugger supports dap there is a chance that it will work with this client.</p>
</blockquote>
<p dir="auto">Just when I thought I was done with the feature set and was working on a compilation of legacy dBASE language UDL’s, you bring me a new feature to try and work into the package. I have to say thanks (sarcastically) and I say thanks (sincerely) as that would be one more addition to making Notepad++ a more homogenous IDE alternative for dBASE programmers.</p>
<p dir="auto">We have a debugger that runs (it’s a dBASE application as well) separate from the IDE, for those brave enough to use it. It does have a bit of a crashing issue, but that may be because the IDE and Debugger running concurrently are a huge draw on resources, and this might allow for smoother running via the Notepad++ environment link.</p>
<p dir="auto">I guess I’ll have to get up to speed on this DAP and see what I need to learn about the debugger’s mechanism to see if it will work. I know I have a problem getting a file edited in Notepad++ to launch in dBASE, and one of those problems is the aformentioned issue <a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: peterjones">@<bdi>peterjones</bdi></a> brought up in another <a href="https://community.notepad-plus-plus.org/post/105539">thread</a>, with the use of spaces in paths.  dBASE doesn’t like them either, IIRC.</p>
<p dir="auto">Sigh…I guess I better start looking this over, along with all the IRL chores I have to get done this season. :-)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105587</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105587</guid><dc:creator><![CDATA[Lycan Thrope]]></dc:creator><pubDate>Fri, 29 May 2026 07:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Thu, 28 May 2026 07:43:17 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a></p>
<p dir="auto">Which debugger did you use?<br />
The problem with all of them is—to quote the DAP specification</p>
<p dir="auto"><code>Since launching is debugger/runtime specific, the arguments for this request are not part of this specification.</code></p>
<p dir="auto">figuring out how to start them.<br />
I do hope that they all have one thing in common: that they expect this as a valid JSON message, which I define as <code>launch_args</code>.</p>
<p dir="auto">I tried it using the link from <a class="plugin-mentions-user plugin-mentions-a" href="/user/rdipardo" aria-label="Profile: rdipardo">@<bdi>rdipardo</bdi></a>, but unfortunately it didn’t work properly. I was able to run through my simple test code step by step, but the variables weren’t returned. That might be due to my configuration or setup, though.</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lycan-thrope" aria-label="Profile: lycan-thrope">@<bdi>lycan-thrope</bdi></a><br />
Yes, as long as the debugger supports <a href="https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Launch" rel="nofollow ugc">dap</a> there is a chance that it will work with this client.</p>
<p dir="auto">Note that all dialog boxes are Scintilla controls and are not protected by the “Read-only” setting. However, this should not be a problem, with the exception of the Breakpoint View, where the client receives information about which breakpoints are currently set. The markers in the source code—currently only in the active document—are removed after the debugging session stops, but they remain in the breakpoint view so they can be reused in a later debugging session.<br />
The exception, of course, is if I click on an already set breakpoint again; then it is also deleted, and of course if I select and delete something in the breakpoint view…</p>
<p dir="auto">Just for reference the config I used for the linked perl-dap</p>
<pre><code>[perl]
debugger = "C:/WHATEVER_DIR/perl-dap.exe"
debugger_args = ["--stdio"]
mode = "io"
# debugger_args = ["--socket", "--port", "13603"]
# mode = "tcp"
# host = "127.0.0.1"
# port = 13603
env  = {
	PATH="C:/compilers/strawberry-perl-5.42.2.1/perl/bin", 
}
launch_args = '''{
	"program": "C:/repos/nppdebugger/tests/debuggees/perl/test.pl",
	"cwd": "C:/repos/nppdebugger/tests/debuggees/perl",
	"perlPath": "C:/compilers/strawberry-perl-5.42.2.1/perl/bin"
}'''
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/105567</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105567</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Thu, 28 May 2026 07:43:17 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Thu, 28 May 2026 03:31:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> , is this supposed to be a multi-language type debugger launching tool?  IE, if you have a debugger for your language, it can be called up in the NPP environment?  Of is this something more specific?  Reading the description, and loooking at the sample configs you posted, I’m assuming that’s what this is.  Any guidance would be appreciated.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105566</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105566</guid><dc:creator><![CDATA[Lycan Thrope]]></dc:creator><pubDate>Thu, 28 May 2026 03:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Thu, 28 May 2026 01:36:50 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a> <a href="/post/105564">said</a>:</p>
<p dir="auto">Unfortunately  I was not able to figure out how to make the Perl debugger talk “DAP”</p>
</blockquote>
<p dir="auto">If you have the Rust toolchain installed, there’s a <code>perl-dap</code> <a href="https://crates.io/crates/perl-dap" rel="nofollow ugc">binary crate</a>.</p>
<p dir="auto">Obviously Notepad++ is no listed as a supported IDE, but the (VS Code) setup guide might be worth looking at: <a href="https://github.com/EffortlessMetrics/perl-lsp/blob/master/docs/how-to/DEBUGGING.md" rel="nofollow ugc">https://github.com/EffortlessMetrics/perl-lsp/blob/master/docs/how-to/DEBUGGING.md</a></p>
]]></description><link>https://community.notepad-plus-plus.org/post/105565</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105565</guid><dc:creator><![CDATA[rdipardo]]></dc:creator><pubDate>Thu, 28 May 2026 01:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to DAP client plugin on Wed, 27 May 2026 23:31:10 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> ,</p>
<p dir="auto">I tried it out briefly.</p>
<p dir="auto">Unfortunately (not your plugin’s fault), I was not able to figure out how to make the Perl debugger talk “DAP”, despite a few hours with AI suggestions.</p>
<p dir="auto">I <em>was</em> able to replicate your Python config, and that did work, so I guess I’ll be starting to use that if I want to single-step through Python.  So thanks.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105564</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105564</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Wed, 27 May 2026 23:31:10 GMT</pubDate></item></channel></rss>