home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / AACD / Programming / envsof20 / eiffel / rexx / open_short.ged < prev    next >
Encoding:
Text File  |  1999-08-24  |  2.4 KB  |  87 lines

  1. /*
  2.  * short.ged -- Show (cached) short form of class name under cursor.
  3.  *
  4.  * Copyright (C) 1999 Thomas Aglassiner <agi@sbox.tu-graz.ac.at>
  5.  * Freeware. Use at your own risk.
  6.  */
  7. version_info = "$VER: short.ged 1.3 (15.8.99)"
  8.  
  9. OPTIONS RESULTS                             /* enable return codes     */
  10.  
  11. if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  12.     address 'GOLDED.1'
  13.  
  14. 'LOCK CURRENT RELEASE=6'                    /* lock GUI, gain access   */
  15.  
  16. if (RC ~= 0) then
  17.     exit
  18.  
  19. OPTIONS FAILAT 21
  20.  
  21. SIGNAL ON SYNTAX                            /* ensure clean exit       */
  22.  
  23. rexx_path = 'GoldEd:add-ons/eiffel/rexx/'
  24. update_command_script = rexx_path || 'update_short.rexx'
  25.  
  26. Call AddLib('rexxdossupport.library', 0, -30, 2)
  27.  
  28. 'QUERY WORD VAR=class_name'
  29.  
  30. legal_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_1234567890'
  31. IF (Strip(Upper(class_name), 'B', legal_letters) = '') ,
  32.    & (class_name ~= '') THEN ,
  33. DO
  34.    temporary_file = 't:finder.tmp'
  35.  
  36.    ADDRESS COMMAND 'finder >' || temporary_file || ' ' || class_name
  37.  
  38.    class_path = ''
  39.    IF RC = 0 THEN DO
  40.       IF OPEN('full_path', temporary_file, 'read') THEN DO
  41.          class_path = READLN('full_path')
  42.          CALL CLOSE('full_path')
  43.       END
  44.    END
  45.    CALL DELETE(temporary_file)
  46.  
  47.    IF class_path = '' THEN DO
  48.       Call view_class_error('Find Class Error')
  49.    END
  50.    ELSE DO
  51.       separator_index = Max(LastPos(':', class_path), LastPos('/', class_path))
  52.       short_path = Left(class_path, separator_index) || 'sofa/short/' || SubStr(class_path, separator_index + 1)
  53.  
  54.       update_command = update_command_script || ' "' || class_path || '" Quiet Port="' || Address() || '"'
  55.       Address Command 'rx ' || update_command
  56.  
  57.       IF RC = 0 THEN DO
  58.          'WINDOW FORCE USE="' || short_path || '"'
  59.       END
  60.       ELSE DO
  61.           Call view_class_error('Short Error')
  62.       END
  63.    END
  64. END
  65. ELSE DO
  66.    'REQUEST TITLE="Short Error" PROBLEM="Cursor must be placed over a proper class name (all upper-case)."'
  67. END
  68.  
  69. 'UNLOCK' /* unlock GUI */
  70. exit
  71.  
  72. /* View class error message */
  73. view_class_error:
  74.    Parse Arg title
  75.    'REQUEST STATUS=""'
  76.    'REQUEST TITLE="' || title || '" PROBLEM="Cannot find class ''' || class_name || '''.*NMake sure that*N· the current directory of GoldEd is the same as for the compiler,*N· the class path (loadpath.se) is set properly*N· the class name is typed properly and the file exists.*N"'
  77.    Return
  78.  
  79. /* Syntax error handler */
  80. SYNTAX:
  81.    SAY "Syntax error line" SIGL ":" ERRORTEXT(RC)
  82.    'UNLOCK'
  83.  
  84.    exit
  85.  
  86.  
  87.