Giter Club home page Giter Club logo

ileditor's Introduction

Donate

Welcome Screen

ILEditor is an editor for development of ILE applications on IBM i. ILEditor will support development with any ILE language, be it CL, RPG, COBOL, C or C++. Error listing and syntax highlighting is available for all ILE languages.

ILEditor requires IBM i release V7R1 or higher.

Features

  • Source member editing (+ browsing & diff view)
  • Inline compiling & error listing
  • Multiple system configurations
  • Basic CL Formatting
  • ILE syntax highlighting
  • Store members locally & search locally
  • Integrated spool file listing
  • Light and dark modes
  • Offline mode for when you're on the go
  • Support for FTPES (requires setup on IBM i)

Installation

  • You can install from the ClickOnce installer which will also prompt you when an update is available. Download here.
  • Build from source. Clone from GitHub, open the project into Visual Studio and build from there.

Contributing

We are open to issues (which can be feature requests) and pull requests.

Libraries used

ileditor's People

Contributors

gailor avatar kenwilcox avatar nathanielacollier avatar szsascha avatar worksofliam 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

ileditor's Issues

Fixed-to-free file definitions

Converting fixed-format file specs is not currently supported because I am not a pro a fixed-format file specs.

If anyone could help write the logic, it would be much appreciated!

For future reference:

  1. Code starts here
  2. Would require a case 'F':

Project rename [help wanted]

Hi

Idle needs to be renamed. I have been putting it off for months, but since I am not a Python developer I never realised that the Python IDE is actually called IDLE as well - this is a bit of an issue.

I need help with name suggestions, so please share some ideas if you have any.

Cheers,
Liam

Remove Compile Type accidently keyed in.

In the compile options, you can create a New compile type or New command.
I have accidentally keyed in a New Compile Type with the wrong name. but I don't see a way to remove it.

Ability to search inside of opened spool file

When I open a spool file it is often the case I need to search for specific things. Currently I have to search with my eyes. Would be great to have a simple search/find capability.

Love,
Bacon (wrapped in Bacon)

Simultaneous multiple connections

Right now I can only connect to one system at a time. If I need to connect to another system it requires closing my work on the current system and connecting to another. Would be nice if I could have multiple systems connected simultaneously.

Love,
Bacon

CODECOV integration

Turns out it is possible to call CODECOV to generate code coverage information - ILEditor just needs to be able to display this information.

image

I not currently have these PTFs, but when I do this will be one of the tasks I focus on.

Next Stable Release (29/01/18)

The master is many commits ahead of next release. Some people have said that this build will not work. Please try this build and raise an issue with your problem.

Next release includes a new FTP library which improves performance and security with FTPES (with setup on IBM i required). This is the largest back-end change in a while. We will be releasing this on Saturday 27th of January, so please test to make sure it everything works for you.

For those willing to try this build, it is attached to this commit. This will not install anything and will run within the directory extracted in. You will still be able to use your existing systems.

Download the stable build here: Release.zip

If you find any bugs, please raise an issue.

No members found

Good Morning.
Since last update i can't fetch any members :-(
tree_browser
Joblog from the ftp-job is in german but shows no error.

Code Conversion - Data Structures Not Migrated Properly

Hi Liam,

I was using ILEditor to convert a program from fixed format to free and noticed that my data structures were not converted properly.

If I start with this:

DHEADERDS e ds extname(HEADER) Qualified

After conversion I get this:
Dcl-DS HEADERDS e extname(HEADER) Qualified;

But that does not compile and what I really needed was:

Dcl-DS HEADERDS
            extname('HEADER') Qualified
end-ds;

That does seem like a complex conversion so if that needs fixed manually each time, that's fine too but I wanted to make you aware.

Thank you,
Brian

ILEditor on old OS VRM

Hello,

It seems that ILEditor extracts / returns some informations to the client using RUNSQL.
Unfortunately, this command appeared at level 7.1 of the OS.
Actually, I do'nt know if

In our case, we have more than 250 boxes ranging from 5.3 to 7.3 TR4.
For organisationnal reasons, our tools are always generated and distributed from an LPAR running at level VRM 540.

I have noticed that the PF-SRC member lists are always generated but nothing is returned to ILEditor due to the lack of RUNSQL command

There are several other 'older' methods to get these informations from DB2i.
Could you consider to add a choice button or another mecanism to select the right extraction method?

I know this request sounds from another epoch, but it would be great for us.

Thank you
Benoit

Default Spool library and object

Currently you have to modify connection settings before you can display your own spool files. Would be good if this was configured by default.

As a stop gap, you could fill it with QGPL/QPRINT which is most likely what many have as their default.

Love,
Bacon

Error produced when double clicking error listing entry when line number > 308

When clicking on an error after compiling I got an error saying there was an unhandled exception. It seems to be related to the line number the error happened on. The error was on line 1811 in this case.

I actually looked further into this and the error number reported by ILEditor in this case was wrong. I have communicated info with Liam about this.

Library List Suggestions

Liam, first let me say how impressed I am with this editor! Nice job!

In using it for a little bit here are a couple issues I have:

  1. Library list - If we select "Use User Profile Library List" it would be nice if it loaded the library list into the screen so we can verify and/or edit this library list. Also if it set the current library to the user profile's current library. Maybe a button (Load User Library List) instead of a checkbox?

  2. A default Current Library setting for new systems? I don't think I've ever used SYSTOOLS.

  3. When firing up the editor, does it always need to be maximized. A small thing, I know. :)

Again, that's for your hard work!

IFSBrowser directory traversal

Using latest source (SHA ad79952) when I traverse the directories in the IFS Browser past the initial load the last folder in the parent path is coming back from the Client.GetListing(remoteDir).

Example: lets say that I have my home directory set up to /home/source and under that there's a Common folder and under Common there are folders A, B, and C. When the IFSBroswer.cs files_AfterExpand is called I see that e.Node.Tag is /home/source/Common but when I inspect Listing.ToArray in the e.Node.Nodes.AddRange() the Listings show Common/A, Common/B, and Common/C, which just gets added to the Tree View as such. Then when I try to open up that file or directory I get a /home/source/Common/Common/A does not exist, which is true since Common is in the path twice.

I'd love to help out on this, but I'm not sure the best way to attack this. I'm guessing it has something to do with the FluentFTP?

SEU Line Commands

While I've only briefly been exposed to the SEU line commands, I've seen alot of people at the company I work at use them. Being able to do both the single line commands, and block commands seems like it would be really useful. For a list of all the commands I found this:
https://as400iseries.wordpress.com/2013/03/13/using-the-seu-editor/.

For implementing it would need to start with how to enter commands. It would need to be able to type text next to multiple line numbers. We'd need to be able to associate text fragments entered with the line number where it was entered.

AvalonEdit implements LineNumberMargin here: https://github.com/icsharpcode/AvalonEdit/blob/master/ICSharpCode.AvalonEdit/Editing/LineNumberMargin.cs. I made a repo and reduced the code needed to use the base LineNumberMargin but have some control over OnRendor here: https://github.com/NathanielACollier/AvalonEdit.Pieces.LineNumberMarginCommands/blob/master/AvalonEdit.Pieces/LineNumberMarginWithCommands.cs.

To me it would be better if there was some way to make your own line number margin that had interactive textboxes for each line number. I think the line number should not look like text boxes but turn into a blank textbox when you click one.

IDE - Save Setup of IDE on Exit and use on Open

Hi Liam,

I wanted to ask if the saving of the general setup of the IDE was possible in ILEditor? Like when I open it and position the various items like Toolbox, QSYS Browser, etc if the sizes, positions, and attributes (like auto hide) of those items should be saved somehow when you close the IDE and reopen it later?

This sort of ties in to Brad's issue of window size, it just expands on it a bit more.

Thank you again,
Brian

Command entry window

Create a command entry form to enter in commands. This form should show:

  • Command entry textbox
  • Command result
  • Job log listing

Locking members

Now that we maintain a connection to the IBM i - it may be possible for us to implement member locking when editing members!

SRCDAT value 000000

Hi Barry,

I did some trial on editing sources and yes the SRCDAT on each record changed into 000000.. Pls help on this matter.. I use SRCDAT to track back when the change of lines was made..

Thank you..

Plugin System

I want to create a plugin system so people can integrate their own ideas or products into the editor.

Plugin DLL should expose

  • string Name
  • string DisplayName
  • void OnPluginSelected - when selected from the toolbox

FTP Connection - Keep alive or reconnect automatically and FTP log Timestamp

I find that if my IBM i FTP server has an inactivity time out set (CGGFTPA Inactivity timeout . . . . . . . INACTTIMO 300 ), ILEditor won't automatically reconnect unless I stop and restart ILEditor.

I am assuming the FTP server timeout is what is causing me not to refresh my member list as I don't see the active FTP job any longer on the system.

The FTP log in ILEditor also doesn't have a timestamp in it, so it is hard to tell what commands are failing and why. That would be a nice addition.

IFS support

Must support IFS stream files.

It will be up to the user to handle compiling CL, DDS, etc from the IFS (perhaps by using CRTFRMSTMF)

  • Opening stream files (this also introduced opening local files)
  • Saving stream files (this also introduced saving local files)
  • New Connection Settings: homeDir, buildLib for when compiling from IFS. homeDir will be used as the current directory when compiling and buildLib is the library we will build the object into
  • Ability to compile stream files
  • Error listing is working as expected, except that clicking on error throws an error saying to open the file - must fix.
  • Browser for the IFS. Will use homeDir as root directory

Mid priority

  • Files be stored on local machine in same folder structure on remote machine.
  • Ability to shortcuts to other folders instead of just the homeDir

Low priority

  • Python syntax highlighting (light & dark)
  • PHP syntax highlighting (light & dark)
  • JavaScript syntax highlighting (light & dark)

Getting error "Unable to download member LIBR1/SOURCEPF.MBR1". Please check it exists and that you have access to the remote system

Hi Barry,

Don't know if I should be raising this as an issue. I just updated to the latest version of the editor and now I am not able to open any of the sources? It was working on the last version but since the last update, I am getting the error "Unable to download member LIBR1/SOURCEPF.MBR1". Please check it exists and that you have access to the remote system"?

Are there any logs that I look to see why I am not able to view any of the sources?

Thanks,
Venky

Hard error when visiting IFS first

ILEditor bombs if the first thing I do is try to view the IFS. If I first display QSYS.LIB and then IFS then the IFS shows successfully.

See below screenshot.

image

RPG Source conversion - DCL-xx

When I take a hunk of "old" code to convert to free-form, a trailing "END-xx;" is "missing(not added)". It's is easy enough for me to to add after the conversion, just wanted to see your thoughts.

example

D RtvObjD Pr ExtPgm( 'QUSROBJD' )
D RoRcvVar 32767a Options( *VarSize )
D RoRcvVarLen 10i 0 Const
D RoFmtNam 8a Const
D RoObjNamQ 20a Const
D RoObjTyp 10a Const
D RoError 32767a Options( *VarSize )

converts to

   Dcl-PR RtvObjD  ExtPgm( 'QUSROBJD' );
     Dcl-Parm RoRcvVar Char(32767) Options( *VarSize );
     Dcl-Parm RoRcvVarLen Int(10) Const;
     Dcl-Parm RoFmtNam Char(8) Const;
     Dcl-Parm RoObjNamQ Char(20) Const;
     Dcl-Parm RoObjTyp Char(10) Const;
     Dcl-Parm RoError Char(32767) Options( *VarSize );

QSYS Browser Still shows deleted SPFs

I did some cleanup within my library and removed some old source physical files. I noticed that they still show in QSYS Browser and don't see a way to refresh or remove a src-pf from the listing.

Improvements to outline

RPG

  • When Standard type using LIKE keyword, result is THEVAR LIKE - make it so shows the LIKE block value instead
  • Grab Dcl-PI parameters
  • Grab Dcl-DS subfields

CL

  • Support both following DCL syntaxes:
dcl  &FromFile      *char    10
DCL        VAR(&FromFile) TYPE(*CHAR) LEN(10)

ILEditor through VPN

Hello Liam,
I'm trying to work with your editor through VPN.
I'm getting Unable to connect ... - Timed out to trying ... after few seconds.
VPN is working because I can open telnet session to system.
Which ports are you using to connect.
Thanks
Peter

Build with vs2017 cannot import the following key file Idle.pfx

I think there is something I'm just not understanding and not a problem with the actual code. When I first pulled down the repo before Thanksgiving I think I was able to build it. This week though I can't get past not being able to build with errors about Idle.pfx. Below are the errors.

1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3090,5): error MSB3325: Cannot import the following key file: Idle.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_D8A95F77772037F7 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3090,5): error MSB3321: Importing key file "Idle.pfx" was canceled.

The error makes it seem like there is something maybe I can do with the certificate store to make it go away? My goal is to be able to find something I can do a pull request on.

User password prompt

If the user does not want to store their password, ILEditor should prompt them to enter it when connection to their IBM i.

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.