1. EuGeany 1.2

New Geany support files posted to: http://rapideuphoria.com/eugeany-1.2.tar.gz They should be available in a day or two, if not sooner.

Many improvements: EuHelp.e now has a switch for users of the Linux Distribution, Debian. inspired by Andrew Katz editions to the previous version. Linux file paths are automatically determined and Windows users should only have to edit one simple constant declaration. No more file swapping with filetypes.Euphoria.conf. Also, std.euphoria-4.1.e.tags, and snippets.conf. The installation/backup program is much improved and now called EuGeany.ex. Simply unpack the EuGeany 1.2 files to the directory EuGeany and run EuGeany.ex from there.

Regards,

Edit: March 8,2013
Set the name of the download file back to http://rapideuphoria.com/eugeany-1.2.tar.gz

new topic     » topic index » view message » categorize

2. Re: EuGeany 1.2

OK, I'm setting this up at home...

Thanks Kenneth! smile

new topic     » goto parent     » topic index » view message » categorize

3. Re: EuGeany 1.2

Oops! I ruined your link, Kenneth! I thought it already posted and you had used the wrong link. SORRY!

new topic     » goto parent     » topic index » view message » categorize

4. Re: EuGeany 1.2

euphoric said...

Oops! I ruined your link, Kenneth! I thought it already posted and you had used the wrong link. SORRY!

No problem. I corrected the download link.

new topic     » goto parent     » topic index » view message » categorize

5. Re: EuGeany 1.2

A feature I would like to see, is one where the user of an editor can jump to different places of his sources according to an ex.err file. So, after a EUPHORIA program is run, and an ex.err file is created. The editor can jump to the line of failure, and then if we could have an easy way to get to the caller's line from there and all the way up the chain that would be something indeed.

Search and replace over multiple files using regular expressions is a feature I appreciate from jEdit. However, it would be nice if it could do search and replace only in say the current EUPHORIA routine, and only in the code and comments and not inside strings. So, suppose we had checkboxes for comments, code, and strings. So you can choose any combination thereof.

Finally, it would be nice to have spell checking. In the strings, the dictionary would be the natural language of the system (or something set by the user using the system), in the code the dictionary would be the declarations, and when declaring new symbols they could check between the underscores so users don't accidentally misname variables: tihs_entry would have the 'tihs' part underlined in red on the declaration. After that the use wouldn't be a spelling mistake, but 'this_entry' would because it would mispelt. Finally, comments should have a dictionary that is a combination of this and the earlier symbols.

This goes way beyond what you can do with syntax highlighting files. I suppose it is possible to create a Jedit plugin for this. Certainly, it is possible for someone working directly with a project's source code.

That's my 2 cents. To send me 2 cents, my bitcoin address is: 1DMHNzJEhKo5Nr8v7dHp41byA8v2C67Quq :)

Shawn

new topic     » goto parent     » topic index » view message » categorize

6. Re: EuGeany 1.2

SDPringle said...

A feature I would like to see, is one where the user of an editor can jump to different places of his sources according to an ex.err file. So, after a EUPHORIA program is run, and an ex.err file is created. The editor can jump to the line of failure, and then if we could have an easy way to get to the caller's line from there and all the way up the chain that would be something indeed.

Search and replace over multiple files using regular expressions is a feature I appreciate from jEdit. However, it would be nice if it could do search and replace only in say the current EUPHORIA routine, and only in the code and comments and not inside strings. So, suppose we had checkboxes for comments, code, and strings. So you can choose any combination thereof.

Finally, it would be nice to have spell checking. In the strings, the dictionary would be the natural language of the system (or something set by the user using the system), in the code the dictionary would be the declarations, and when declaring new symbols they could check between the underscores so users don't accidentally misname variables: tihs_entry would have the 'tihs' part underlined in red on the declaration. After that the use wouldn't be a spelling mistake, but 'this_entry' would because it would mispelt. Finally, comments should have a dictionary that is a combination of this and the earlier symbols.

This goes way beyond what you can do with syntax highlighting files. I suppose it is possible to create a Jedit plugin for this. Certainly, it is possible for someone working directly with a project's source code.

That's my 2 cents. To send me 2 cents, my bitcoin address is: 1DMHNzJEhKo5Nr8v7dHp41byA8v2C67Quq :)

Shawn,

These are all great ideas. I especially like the find/replace settings, that bugs me all too often.

If you don't mind, I'd like to steal borrow these ideas for my Euphoria IDE project. smile

-Greg

new topic     » goto parent     » topic index » view message » categorize

7. Re: EuGeany 1.2

SDPringle said...

A feature I would like to see, is one where the user of an editor can jump to different places of his sources according to an ex.err file. So, after a EUPHORIA program is run, and an ex.err file is created. The editor can jump to the line of failure, and then if we could have an easy way to get to the caller's line from there and all the way up the chain that would be something indeed.

This is a feature in Edita, and I shamelessly copied it in my wxIDE editor (I think there's something like this in ed.ex, too). It is very handy.

The basic idea is that you hit F12, which opens up an ex.err file in the directory of the file you're editing, and then you go to whatever line you're interested in, and hit F12 again, which goes to the referenced line. If the file isn't already opened, then it opens it for you.

Matt

new topic     » goto parent     » topic index » view message » categorize

8. Re: EuGeany 1.2

mattlewis said...

(I think there's something like this in ed.ex, too).

IIRC ed.ex would, if it saw an ex.err in the current directory and no file name was given, open the file referenced in the ex.err and jump to the appropriate line number, and then display the 1-line error message from ex.err in the status.

new topic     » goto parent     » topic index » view message » categorize

9. Re: EuGeany 1.2

Some time ago, I documented a way one could associate .err with ed.exe, in the Installation (Section 2.? ). You need to modify the registry. When done you only click the ex.err file and ed.exe opens for you. Now, if we have a way of directing an editor to go to some line in a given file at the command line, you can strip out pieces of ed.ex and call whatever editor that can do that. But often it is not the inner most frame that has the problem. It is the caller of that routine, calling it badly for example.

Shawn Pringle
Forked into: ex.err & Geany

new topic     » goto parent     » topic index » view message » categorize

10. ATTN: Shawn, Matt, Greg...

FORK IT

new topic     » goto parent     » topic index » view message » categorize

11. Re: EuGeany 1.2 - now available for download

Click here: http://rapideuphoria.com/eugeany-1.2.tar.gz

The files should unpack to the directory EuGeany-1.2. The installation program EuGeany.ex should be run from the installation directory.

Read the documentation comments for EuGeany.ex and EuHelp.* before running EuGeany.ex.

Please post any requests for help, criticisms, or suggestions for improvements here or email to me at: wolfmanjacques@gmail.com

Regards, Ken Rhodes

new topic     » goto parent     » topic index » view message » categorize

12. Re: EuGeany 1.2 - now available for download

After experimenting, I manged to break my Geany installation. It currently recognizes no files when I try the file open dialog (all directory listings are completely blank). At the moment I lack the time to figure this out.

In the mean time try this bit of code:

include std/console.e 
include std/filesys.e 
 
sequence pwd = current_dir() & "/" 
sequence path = getenv( "HOME") & "/.config/geany" 
sequence destination   
 
 
sequence filedata = {  
     { "/filedefs/" , "filetype_extensions.conf" }, 
     {"/"           , "snippets.conf"}, 
     {"/filedefs/"  , "filetypes.Euphoria.conf"}, 
     {"/tags/"      , "std.euphoria-4.1.e.tags" } 
     } 
      
for i=1 to length( filedata ) do 
    -- BACKUP OLD FILES 
    destination = path & filedata[i][1] & filedata[i][2] 
    display( "\n----------- " & destination ) 
    if file_exists( destination ) then 
        puts(1, "backing up " ) 
        if copy_file( destination, destination & ".bak", 1 ) then 
            puts(1, " ... " ) 
        else 
            display( " !!! backup failed" ) 
            abort(0) 
        end if 
    else 
        display( "... file does not exist ... no backup needed") 
    end if 
    -- UPDATE FILES 
    if copy_file( pwd & filedata[i][2], destination, 1) then 
        display( " updated") 
    else 
        display( " !!!  update failed") 
        abort(0) 
    end if    
end for 

_tom

new topic     » goto parent     » topic index » view message » categorize

13. Re: EuGeany 1.2 - now available for download

_tom said...

After experimenting, I manged to break my Geany installation. It currently recognizes no files when I try the file open dialog (all directory listings are completely blank). At the moment I lack the time to figure this out.

In the mean time try this bit of code:

include std/console.e 
include std/filesys.e 
 
sequence pwd = current_dir() & "/" 
sequence path = getenv( "HOME") & "/.config/geany" 
sequence destination   
 
 
sequence filedata = {  
     { "/filedefs/" , "filetype_extensions.conf" }, 
     {"/"           , "snippets.conf"}, 
     {"/filedefs/"  , "filetypes.Euphoria.conf"}, 
     {"/tags/"      , "std.euphoria-4.1.e.tags" } 
     } 
      
for i=1 to length( filedata ) do 
    -- BACKUP OLD FILES 
    destination = path & filedata[i][1] & filedata[i][2] 
    display( "\n----------- " & destination ) 
    if file_exists( destination ) then 
        puts(1, "backing up " ) 
        if copy_file( destination, destination & ".bak", 1 ) then 
            puts(1, " ... " ) 
        else 
            display( " !!! backup failed" ) 
            abort(0) 
        end if 
    else 
        display( "... file does not exist ... no backup needed") 
    end if 
    -- UPDATE FILES 
    if copy_file( pwd & filedata[i][2], destination, 1) then 
        display( " updated") 
    else 
        display( " !!!  update failed") 
        abort(0) 
    end if    
end for 

_tom

Thanks a million for the installation code, Tom! I'll try to put your routine to good use.

Ken

new topic     » goto parent     » topic index » view message » categorize

14. New installation code ( Courtesy of Tom)

Ok... I have tried not to much up Tom's code, but mucking up code is my area of expertise. sad

I have made slight changes to support Windows. I would appreciate someone who uses Geany under Windows telling me if the following code will work for Windows? According to the Geany manual, it should work for Windows XP.

include std/console.e 
include std/filesys.e 
 
sequence path = getenv( "HOME") & SLASH & ".config" & SLASH & "geany" 
sequence pwd = current_dir() & SLASH 
sequence destination 
 
ifdef WINDOWS then 
    path =  "C:" & SLASH & "Documents and Settings"  
		    & SLASH & "UserName"  
			& SLASH & "Application Data"  
			    & SLASH & "geany" 
end ifdef 
 
sequence filedata = {    
			{ SLASH & "filedefs" & SLASH , "filetype_extensions.conf" }, 
			{ SLASH & "filedefs" & SLASH , "filetypes.Euphoria.conf"}, 
			{ SLASH & "tags"     & SLASH , "std.euphoria-4.1.e.tags" }, 
			{ SLASH                      , "snippets.conf"}  
		    } 
		     
for i=1 to length( filedata ) do 
    -- BACKUP OLD FILES 
    destination = path & filedata[i][1] & filedata[i][2] 
    display( "\n----------- " & destination ) 
    if file_exists( destination ) then 
	puts(1, "backing up " ) 
	if copy_file( destination, destination & ".bak", 1 ) then 
	    puts(1, " ... " ) 
	else 
	    display( " !!! backup failed" ) 
	    abort(0) 
	end if 
    else 
	display( "... file does not exist ... no backup needed") 
    end if 
    -- UPDATE FILES 
    if copy_file( pwd & filedata[i][2], destination, 1) then 
	display( " updated") 
    else 
	display( " !!!  update failed") 
	abort(0) 
    end if 
end for 
 

Thanks, Ken

new topic     » goto parent     » topic index » view message » categorize

15. Re: New installation code ( Courtesy of Tom)

Some updated info for Windows installs:

In my version of Windows, the actual path to the directory created by geany is

    C:\Users\Owner\AppData\Roaming\geany 

That path doesn't exist until geany is run once. You should tell users to run geany once so it can write those default files/dirs. This way you can confirm that whatever path they provide for installing these forms is correct.

The path to geany config files needs to be gotten from getenv("APPDATA"), instead of getenv("HOME").

APPDATA can be used from Windows XP on up. On my Windows XP box, it returns

    C:\Documents and Settings\user\Application Data 
On Windows 7 it returns
    C:\Users\Owner\AppData\Roaming\geany 
The Windows file path code need only be this:

constant GEANY_DIR = getenv( "APPDATA" ) & SLASH & "geany" 

Ask if ya gots questions... smile

new topic     » goto parent     » topic index » view message » categorize

16. Re: New installation code ( Courtesy of Tom)

You need to confirm that the /tags/ dir exists. If not, go ahead and create it. Otherwise, install of tags file fails.

new topic     » goto parent     » topic index » view message » categorize

17. Re: New installation code ( Courtesy of Tom)

I think that if a file you want to backup doesn't exist, don't issue an error and cause the user to have to press a key. Just skip it gracefully. No harm, no foul.

For example, the "filetype_extensions.conf" file doesn't exist at first, but you warn me that it wasn't able to back it up. Not a biggie, really.

ALSO: The executable on Windows is EuHelp.exe, so currently it fails to install the help file because it uses the Unix name (no extension).

Finally, if EuHelp.exe already exists in the \bin\ folder, it doesn't get copied and indicates a failure. You should probably remove the old copy and move the new one in, just in case.

new topic     » goto parent     » topic index » view message » categorize

18. Re: New installation code ( Courtesy of Tom)

Thanks to Euphoric for all the suggestions... I will rework the code and post a new version.

Regards, Ken

new topic     » goto parent     » topic index » view message » categorize

19. Re: New installation code ( Courtesy of Tom)

I have decided to upload EuHelp separately, so there will be a similar installation program for those files. Here is the latest....

--  
--  EuGeany 1.3b 
--   
--  usage eui EuGeany.ex 
-- 
--  Installs Geany configuration files which 
--  provide support for the Euphoria Programming Language 
--  Existing files are backed up with a backup extension suffix 
--  which may be defined by the user 
-- 
--  Windows XP and later users should run Geany at least once, 
--  prior to executing this program, in order to set the "APPDATA" 
--  environment variable. 
-- 
--  For more information read comments in the respective files, 
--  especially, filetypes.Euphoria.conf. 
-- 
-- 
 
 
include std/console.e 
include std/filesys.e 
include std/graphics.e 
 
constant BACKUP_SUFFIX = "~" 
-- constant BACKUP_SUFFIX = ".BAK" 
 
sequence GEANY_USER_CONFIG = getenv( "HOME") & SLASH & ".config" & SLASH & "geany" 
 
ifdef WINDOWS then 
	GEANY_USER_CONFIG =  getenv( "APPDATA" ) & SLASH & "geany" 
end ifdef 
 
-- create tags directory, if it does not already exist: 
if  create_directory( GEANY_USER_CONFIG & SLASH & "tags" ) then end if 
 
constant SCREEN = 1 
constant DIR = 1 
constant FILE = 2 
sequence data = {       -- DIR = [1]                        -- FILE = [2] 
			{ SLASH & "filedefs" & SLASH , "filetypes.Euphoria.conf"}, 
			{ SLASH & "tags"     & SLASH , "std.euphoria-4.1.e.tags" }, 
			{ SLASH                      , "filetype_extensions.conf" }, 
			{ SLASH                      , "snippets.conf"} 
		    } 
 
constant OVERWRITE_EXISTING_FILE = 1 
sequence destination 
sequence pwd = current_dir() & SLASH 
bk_color(BLACK) 
for i=1 to length( data ) do 
 
    destination = GEANY_USER_CONFIG & data[i][DIR] & data[i][FILE] 
     
    -- BACKUP OLD FILES 
	text_color(BRIGHT_BLUE) 
	display( "\n---- " & destination ) 
	if file_exists( destination ) then 
	     
	    -- make a back up copy 
	    text_color(YELLOW) 
	    for x = 1 to length(GEANY_USER_CONFIG & data[i][DIR]) -11  do 
		puts(SCREEN, " ") 
	    end for 
	    display( " backing up ... ", 0 ) 
	     
	    if copy_file( destination, destination & BACKUP_SUFFIX,  OVERWRITE_EXISTING_FILE ) then  
		    -- do nothing 
	    else 
		text_color(BRIGHT_RED) 
		display( " !!! backup failed" ) 
	    end if 
	 
	else 
	     
	    -- file does not exist, no need to back up 
	    text_color(YELLOW) 
	    display( "no backup file necessary ... ", 0 ) 
	 
	end if 
	 
     
    -- UPDATE FILES 
	if copy_file( pwd & data[i][FILE], destination, OVERWRITE_EXISTING_FILE) then 
	     
	    -- file is successfully updated 
	    text_color(BROWN) 
	    display( data[i][FILE], 0) 
	    text_color(BRIGHT_CYAN) 
	    display ( " UPDATED!") 
	 
	else 
	    -- update failed 
	    text_color(BRIGHT_RED) 
	    display( " !!!  update failed") 
	 
	end if 
end for 
 
new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu