Coder Social home page Coder Social logo

jcaillon / 3p Goto Github PK

View Code? Open in Web Editor NEW
77.0 14.0 36.0 33.67 MB

3P (short for Progress Programmers Pal), is a notepad++ plugin designed to help writing progress 4GL (OpenEdge ABL) code. It transforms notepad++ into a full featured IDE for openedge code editor, providing syntax checking, compilation, auto-completion, tool-tips and much more!

Home Page: https://jcaillon.github.io/3P/

License: GNU General Public License v3.0

C# 98.15% OpenEdge ABL 1.35% CSS 0.06% HTML 0.06% Batchfile 0.38%
progress ide code editor 4gl openedge abl parser auto-completion notepad

3p's Introduction

3P: Progress Programmers Pal

Warning

This repository and software is no longer maintain. You can download it and use it but no further fixes or features will be added.

An OpenEdge ABL (formerly 4GL Progress) code editor / IDE running on notepad++

Build status Coverity status GitHub release Total downloads

GPLv3 licence .net 4.6.1+ required Notepad++ v7.5.4+ required Gitter chat

logo

3P has a dedicated website, go check it out!

Old releases information can be found here on the website

Build information

Details/help on how to build this project.

Jetbrain

This project was developped using an opensource license of the awesome :

resharper

3p's People

Contributors

jcaillon avatar thony8 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

3p's Issues

Handle publish & subscribe

Hi,

It seems PUBLISH and SUBSCRIBE keywords are not detected in the code explorer
Can you handle those keywords please?

Kind regards,
C. CLEAUD

Panel icon distinction

Hi,

Both "Code explorer" and "File explorer" use the same icon.
When those tabs are stacked, it's not that easy to quickly see what panel is to be activated.

Can you fix this, please?

Regards,
C.CLEAUD

Code commenting / uncommenting does not really work

Hi,

Just for the fun, a new bug report.

  1. open a Progress ABL source file (expected : at least 300 lines of code but it failed on even 10 in some circumstances)
  2. select all text (CTRL+A)
  3. press CTRL+Q
  4. do NOT release CTRL+Q
  5. wait for 10 seconds

Assume default PROPATH for include files in current source directory

Hi,

Can you make 3P assume the default PROPATH is ".", where "." means the current source directory, even if there is no customized PROPATH?

This will allow 3P to parse include files contained in the same directory as the source.
Obviously, if the include pre-processor is directory-relative (like {mydfir/myinclude.i} or {../includes/something.i}, 3P should take this relative path in to account.

Thanks a lot for this!

Regards,
C.CLEAUD

Error in OnCharAddedWordEnd --> stack trace NOT logged in error.log file

Hi again !


An error has occured
Error in OnCharAddedWordEnd
The last action you started has triggered an error and has been cancelled.

  1. If you didn't ask anything from 3P then you can probably ignore this message and go on with your work.
  2. Otherwise, you might want to check out the error log below :
    Link to the error log
    Consider opening an issue on GitHub :
    https://github.com/jcaillon/3P/issues
    Level 0 support : restart Notepad++ and see if things are getting better!

No information provided :(
Link to local log doesn't allow me to find what happens --> this exception seems NOT to be logged in the file.

Label forgotten from auto-completion

Hi,

Considering imbricated loops, each one prefixed by a named label (making possible to break not only the local loop).
Those label names are not suggested by auto-completion.

Thanks for fixing.
Regards,
C.CLEAUD


blk_loop1:
DO i = 1 TO 10 :
    blk_loop2 :
    DO j = i to 15 :
        /* xxx */
        LEAVE blk_loop1.  /* blk_loop1 is not in the auto-completion list */
    END.
END.

Error when using find & replace

Hi,

Often, while replacing a text in the document (ReplaceAll), I got an error "Error in beNotified : code = 2016".

Regards

Closing "File Explorer" panel when undocked doesn't update the toolbar button status

Hi,

Very minor bug.

  1. show the file explorer panel (the vertical flipped "3P" tolbar button is highlighted)
  2. undock the file explorer panel
  3. close it using the window close button
  4. the vertical flipped "3P" tolbar button is still highlighted

Please note: this does not happen with the "code explorer" panel.

Can you fix this, please?
Better than kind regards :)
C.CLEAUD

Commenting throug 3P doesn't update the "file modified" flag

Hi,

Let's play with this one:

  1. open a Progress ABL source file
  2. select a line, whaever you like
  3. press CTRL+Q to comment
  4. close Notepad++
  5. no confirmation is asked to the user - however the file content has changed and file needs to be saved

Thanks for fixing his,
C.CLEAUD

Check syntax causes graphic glitches

Check syntax causes graphic glitches.
But the text document seems not to be altered:
2015-12-28 23_29_33-item-87166 dhcp lyo2 fr sopra - remote desktop connection
.

  1. Open a Progress source code
  2. Menu Plugin > 3P > Check syntax
  3. Here you are

Current version is 1.1.1.
Thanks for fixing.

Bugs - auto generated report

What's the point of this issue?

Each time 3P encounters an unexpected error, a comment will be automatically posted here with the details or the error

New type for external procedures

Hi,

There are sections 'Events", "Procedures" and "Functions".
I think it would be nice to add a section "External procedure" for declaration of method / functions in a run-time library (.dll / .so).
Nice too to add the hosting library name.

Thanks,
C.CLEAUD

Missing "Connected Databases" section

Hi,

Sometins a program references database connections.
The section is recognizable using "/* Connected Databases " pattern.
Can you add it, please?

Thanks a lot,
C.CLEAUD

&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI
&ANALYZE-RESUME
/* Connected Databases
mydatabase
*/
&Scoped-define WINDOW-NAME C-Win
&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS C-Win

Implicit buffers not detected

Hi,

Implicit buffers are not yet detected thus not listed in the 3P code explorer under "Tables used" section.
Consider following code: nothing is detected (often needed to press the refresh button).

DEFINE TEMP-TABLE tt_batch_compile_files NO-UNDO XML-NODE-NAME "file"
    FIELD cSourceFullFileName   AS CHARACTER    XML-NODE-NAME "file-name"
    FIELD cErrorsDir            AS CHARACTER    XML-NODE-NAME "error-dir"
    FIELD cXmlXrefFile          AS CHARACTER    XML-NODE-NAME "xref-file"
    FIELD cListingFile          AS CHARACTER    XML-NODE-NAME "listing-file"
    INDEX idx_pk IS PRIMARY UNIQUE.

DEFINE TEMP-TABLE tt_batch_compile_settings NO-UNDO XML-NODE-NAME "setting"
    FIELD cKey        AS CHARACTER    XML-NODE-NAME "key"
    FIELD cValue      AS CHARACTER    XML-NODE-NAME "value"
    INDEX idx_pk IS PRIMARY UNIQUE cKey.


DEFINE DATASET dsBatchCompile XML-NODE-NAME "batch-compile"
    FOR tt_batch_compile_files, tt_batch_compile_settings.

Just adding this line changes all:
DEFINE BUFFER bXXX FOR tt_batch_compile_files.

Can you fix please?

The code explorer list turns gray and doesn't refresh

When un-docking the code explorer dialog and manipulating the window, the list occasionally doesn't display the items correctly (see screenshot below)

image

The list won't refresh even by clicking the refresh button, the only solution is to restart npp.

The conditions to reproduce this bug are yet to be defined

Show location of calls / runs

Hi,

In the "Run statements" and "Dynamic function calls" in the "Code explorer" panel, can you add, right to the called entity, the location where the call is invoked please?

Thanks for considering this.

Regards,
C.CLEAUD

Code explorer should be disabled when current file is not ABL

Considering a normal text file open in Notepad++, the "Code explorer" panel shows the "Root" anchor.
When I click on it, the cursor moves to the top of the document.
Should'nt be the Code explorer disabled on NON ABL files?
Regards,
C.CLEAUD

syntax highlighting

Hello,
How to use own syntax highlighting schema? I can modify user lang OpenEdgeABL , but all my changes had been rolling back after restarting np++ .

CTRL+i keyboard shortcut doesn't work

Hi,

CTRL+i keyboard shortcut gives focus to filter text-box in the "File Explorer" panel but does not format the document.
Same bahavior even if the action isselected from the plugin --> 3P --> Format document menu.

Thanks for fixing.

Regards,
C.CLEAUD

Feedback users

What's the point of this issue?

3P users's can submit feedback about the application, suggesting new features or just let me know i'm on the right tracks.

Auto-completion opacity not taken into account because of exception when saving changes

Hi,

Statring N++ with opacity settings:

  • 0.85 for unfocused
  • 0.95 for focused

I decided to change to 1 the focused opacity...
I went to option, types "1" then clicked the red floppy disk.

  • Thread error + log (always reproductible, causing changes to be ignored)
  • Opacity is not full

I went back to the option panel and changed and daved again the value. No exception this time but the opacity is still NOT 100%

Thanks for fixing.

Add a vertical scroll-bar in tooltips

Hi,

When hovering a procedure name that uses 18 parameters, the tooltip information is truncated and some sections are missing.
It would be nice to add a vertical scrollbar.

Thanks

Regards,
C.CLEAUD

Trouble with event detection

Hi,

Considering this piece of code:

ON END-ERROR OF C-Win /* Errors Listing */
OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO:
    RETURN NO-APPLY.
END.

The code explorer finds:

  • END-ERROR C-Win [ OK ]
  • END-ERROR, ENDKEY C-Win, {&WINDOW-NAME} [ NOT OK ]

Thanks for fixing.

Regards,
C.CLEAUD

Create a setting to allow / deny network accesses

Hi,

Posting information on github when an error occured is not user friendly, especiually without asking the user if he really want this to happen.
Same remark with new version detection when the plugins starts up.

Can you create a setting to allow / deny 3P to go to the Internet please?
BTW, this will make possible to avoid the starting warning notification of 3P not able to reach github.
Thanks.

Reagrds,
C.CLEAUD

Error while duplicating code (CTRL+D)

Hi,

Considering a file containing only this:

        RUN ScanInternalProcsAndFunctions (   INPUT ipiIdCarto,
                                              INPUT iphFSConfig,
                                              INPUT procarto.Appli.IdAppli,
                                              INPUT procarto.Prog.FichierParsing,
                                              INPUT procarto.Prog.FichierXref,
                                              OUTPUT liCountProcedure,
                                              OUTPUT liCountFunction).

Select all the file and press CTRL+D.
Two bad behaviors:

  • it overrides the scintilla keyboard to duplicate text
  • it pops an error window

Wrong auto-completion popup location [HARD] [RANDOM]

Hi,

I was editing a comment at th end of an ABL instruction.
The auto-completion window poped up and wrote a text in replacement of "END" of "END PROCEDURE".
Able to reproduce N times until I retsarted N++.

Sorry: I can't help you anymore.
No crash, no error notificaiton: jus wrong popup.

Regards,
C.CLEAUD

Screen notifications displayed only on primary screen

Hi,

Using 2 screens, and ofter using the primary (bigger) scren to look at videos while using the secondary (smaller) to code, I always see notification on the wrong screen over the video.

Can you display those notification on the screen displaying Notepad++?

Thanks for fixing!
Regards,
C.CLEAUD

Freeze of Notepad++

Hi,

Doing this causes Notepad++ to freeze:

  1. open a Progress ABL program containing about 20+ procedures (just to make the code explorer pannel scrollable when undocked)
  2. display the code explorer
  3. ensure it is docked
  4. undock it (via double-click)
  5. scroll to the bottom
  6. redock it (via double-click) --> rectangle is now full grey
  7. undock it again then click in the panel
  8. click in the Scintilla editor
  9. Notepad++ is now frozen

Thanks for fixing this.

100% reproductible, ready to help you if needed.

Kind regards,
C.CLEAUD

Todo

Personal to do list

Here lies the ideas i can have for enhancing the soft, i also use this list to log the bugs i find during my tests.
Pardon my french for what follows

  • set env, hide delete if there is nothing to del
  • permettre la maj de 3P via le dossier partagé
  • add CURRENT ENV dans le file explorer form
  • dans menu switch environnement
  • ajouter une boussole au refresh du file explorer + faire un refresh auto quand on change d'env...
  • refaire les drops list en utilisant le yamui menu...
  • mettre à jour le tree list quand on l'affiche pour la première fois
  • yamuinotif, ajouter une scrollbar
  • autocase quand on rentre un {.i}
  • pour le compilation path... faire la règle suivante : soit c'est un chemin absolu et on MOVE seulement. soit c'est un ftp://user:password@host:port/path et dans ce cas on ENVOI FTP seulement, et sinon les deux
  • Ajouter la version du Framework
  • myVar ++ to myVar = myVar +
  • Type double slash ('//') anywhere in a line (even in a middle of a word) and it will be commented
    out or uncommented, then the cursor moves to the next line so it can be processed it the same way. If double slash is type at the end of a line, then a new empty comment is inserted at the end of the line and the cursor stays there

  • Snippets : $1 et $2.. pour les tabs stops; ${1:label}, tout les ${x:) sont liés et on s'arrête juste sur le premier, "label" est affiché par défaut et est sélectionné quand on fait tab. Si on fait entrée, sélectionne le dernier dollar.
  • QOL : add a warning / info on push/fetch buttons
  • Limit the number of popup for an update to one! since it's everyhour there were xxx displayed
  • in set environnement, left click open in npp, right click open in folder
  • replace buttonpressed by on click in shortcuts
  • Ajouter un -ct 2 après toutes les connexions aux bases
  • Set > Super procedures, config identique à compilation path : appli \t suffix \t path, le path peut être soit relatif (par rapport au source path) soit absolu et permet de charger cette liste de fichier en persistent
  • preview tags in SetInfoPage
  • fermer popup de proposition de fichier CTRL+B
  • griser DELETE quand on modifie un env
  • replace NPPM_GETNPPVERSION
  • dans Parser.Lexer.Tokenize() out of memory
  • changer le screenshot de presentation du menu
  • /* --- Modif #30
  • a chaque fois qu'on ajoute des lignes, on retient les numéros et on les corrige quand le parser est mis à jour
  • add a command to update a function's prototype
  • Ajout d'une procédure/function
  • Ajouter les raccourcis de la sopratool
  • Ajouter un autre type à progressExecution
  • ALT+F2 to rename a variable
  • Auto reindent : bien utiliser le boolean de code bien formaté avant de réindenter + faire une method IndentCode(int startLine, int endLine). à chaque fois qu'on ajoute une ligne on sauve la ligne modifié, quand on parse, si bool = true on reindente tt le block owner de la ligne à reindente
  • créer le dossier de compil si il existe pas!!
  • CTRL+Shift+N : nouveau fichier .p crée dans le %temp%
  • CTRL+T : trace, ajouter aussi un snippet traces
  • dans les tooltips, ajouter un lien vers chaque utilisation de la function/procedure qu'on pointe (easy avec les infos du code explorer)
  • Ecran des compilation path : s'applique pour APPLI / END / FROMPATH/ TO PATH
  • Extract Database : faire le bouton delete et le bouton view content (afficher la database sous forme de message box)
  • faire le smart indent lorsqu'on finis d'écrire un end
  • Faire un écran où on propose de rentrer deux liste de programmes, une liste côté client, une liste côté serveur -> ces programmes sont considérés comme étant chargés en persistent pour la session progress et leur func/proc accessibles par tout les autres progs
  • Faire une fonction : start an appbuilder
  • FileExplorer : mettre en top de liste les fichiers qui sont lister comme étant dans le même workpackage que le fichier courant?
  • Finir les snippets!!
  • finir les tags de modif
  • gérer le clic droit sur le code explorer, mettre la possibilité d'aller jusqu'à la proc/le .i
  • improve go to function, should find relative path adecomm/derp.i and not only search for derp.i
  • Les fichiers commencant par _ ne generent pas correctement la .lst
  • main appl > Tools > Compile everything, step 1 : refresh base local path folder list, step 2: 2 ovl, 1 to list all the folders, the second contains the folder to compile (on propose aussi un bouton select all), step 3 : launch compile process on selectd folders
  • Mettre en place les options pour régler le proxy
  • mettre l'affichage des espaces en option
  • Ne pas copier le .ini dans le repertoire tempo!
  • On peut ajouter la liste des .i, et des .p à appeler dans la completion list
  • pour la compil/check syntax, on a besoin uniquement du propath pour avoir les includes, il en faut pas copier le .ini et ajouter dans le {&propath} uniquement les dossiers qui contiennent les trucs qu'on include, ça ira bien plus vite
  • pour le CTRL + T, insérer : {custom_log.i "mon truc à logger"}
  • Pour les fichiers de conf (hormis config) snippets, keyword, abbrev etc... boolean dans la config ->local true/false, si false on garde tout dans la dll on exporte rien, si true on previent l'user qu'il aurait pas les maj des fichiers et qu'il gardera les siens
  • pour les snippets, rajouter des (%) pour remplacer des expression (par exemple pour dvi faire def var (%context_global_local)i_
  • Prévoir un bouton "ping" de la database
  • prévoir une fonction pour cacher tous les statements de l'appbuilder
  • Proposer à l'utilisateur de mettre ses propres fonctions progress en raccourci {icon, nom, shortcut, program.p} faire un fichier d'interface avec divers info qu'il peut utiliser pour piloter son .p et lire un fichier de retour qu'il peut utiliser pour commander npp
  • Proposer en option de définir un path commun pour les configurations, et sur le clic d'un bouton on remplace les fichiers de conf local par ceux du répertoire commun!!!!!!
  • Rajouter des tooltips sur le code explorer, à l'identique des tooltips keywords
  • real syntax highlighting
  • remplacer le HACK pour cacher l'auto comp par un start record macro?
  • Scrollbar doit descendre quand on clic dans un endroit sans le thumb
  • si from appbuilder, dans l'update select, checker ou est le caret, si il est dans une zone normalement non éditable prévenir l'user qu'il fait de la merde
  • si le plugin n'est pas chargé correctement, il faut squizzer le cleanup et le create menu !!! pour que l'import du plugin se passe sans encombres!!!
  • tooltips : pour les types et les flags, rajouter des annotations pour gagner en compréhension
  • tooltips code explorer...

Auto-completion

  • Remplacer l'autocompletion par défaut de Npp, lire les fichiers /plugins/APIs et mimiquer le fonctionnement actuel décrit ici : http://docs.notepad-plus-plus.org/index.php/Auto_Completion
  • Pour l'autocomp, faire un GetChild() dans l'autocompletionData et faire un truc plus générique qui fait qu'on AutocompletionData peut avoir des enfants qui seront affichés soit après un . (pour les tables par ex) ou après un : pour les handles
  • Améliorer l'autocomplétion : changer le contexte pour après un RUN il faut afficher des procédures à run
  • Améliorer l'autocomp : changer le contexte pour { } il faut afficher des fichiers à include
  • auto comp: contexte dynamic-function(" il faut proposer toutes les fonctions locales + les fonctions chargées en dynamique, qu'on a renseigné au préalable.
  • remplacer l'autocomplete et la function list par defaut..
  • ajouter le parse des publish/subscribe et mettre ça dans le code explorer

Procedure not detected when using abbreviated keywords

Hi,

When using PROC instead n RPOCEDURE to declare a rocedure, it is not detected in the code explorer.
Before considering this issue, I have to ensure "PROC xxx :" tells ABL to declare a new procedure.

Regards,
C.CLEAUD

Event name mis-detected

Hi,

Following code is detected in EVENT section but the event name is U instead of CLOSE.
Can you fix this, please?

King regards,
C.CLEAUD

/* *************************** Main Block *************************** */
ON "CLOSE":U OF THIS-PROCEDURE DO:
UNSUBSCRIBE TO "LogError".
UNSUBSCRIBE TO "Sleep".
DELETE PROCEDURE THIS-PROCEDURE.
END.

Create dinstinct types for runs/calls

Hi,

Can you create more sections in the Code explorer :

  • static function calls
  • dynamic function calls
  • internal procedure runs
  • external programs runs
  • dynamic calls
  • internal callback reference
    Thanks for considering this ticket.

Kind regards,
C. CLEAUD

CTRL+SPACE not always working

Hi,

It is sometimes required to type one character then remove it before auto-completion list appear.
Can you fix this, please?

Thanks a lot!
C.CLEAUD

Lighten loading time [CHALLENGE] [ENHANCEMENT]

Hi,

Is there a way to lighten the loading time of the plugin?

On a quite recent computer, N++ takes 1 to 2 more seconds to get ready when the plugin is installed.
Is there a way to split the plugin into 2 DLL, one acting as a stub providing every things requested by (N++ <-> plugin) interface and another containing the intelligence?
The other would load with a small delay...

Do you think this is possible?

Thanks,
Regards,
C.CLEAUD

Avoid tooltip on commented code

Hi,

When hovering a word part of a comment, the tool tries to display a tooltip and often founds nothing.
Can you disable tooltips on commented text?

Thanks
C.CLEAUD

Wrong procedure scope detection

Hi !

It's me, again! I'm not your nightmare but I found something really strange. :)
Considering following ABL code, the procedure xx2, xx3 and xx4 and detected in the wrong scope:

  • Hovering on xx1 tells the procedure is scoped in "Definition block" --> OK :)
  • Hovering on xx2 to xx4 tells the procedure is scoped in "Root" --> Wrong :(
  • Same proble when displaying auto completion tooltin right after "RUN xx"

Thanks for fixing this.
Kind regards,
C.CLEAUD


&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
&ANALYZE-RESUME
&ANALYZE-SUSPEND _UIB-CODE-BLOCK CUSTOM DEFINITIONS Procedure
/
----------------------------------------------------------------------
/
/* This .p file was created with the Progress AppBuilder. /
/
----------------------------------------------------------------------*/

PROCEDURE xx1:
END.

PROCEDURE xx2:
END PROCEDURE.

PROCEDURE xx3:
END PROCEDURE.

PROCEDURE xx4:
END PROCEDURE.

RUN xx /* Invoke auto-completion here */

/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME

&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure

/* *************************** Main Block *************************** */
RETURN "".

/* _UIB-CODE-BLOCK-END */
&ANALYZE-RESUME

Typo error

Hi,

There is a typo error in the title "SYNTHAX" displayed in the tooltip onver a keyword.
Can you fix this, please?

Kind regards,
C. CLEAUD

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.