1. modifyindent changes to ed.ex
- Posted by "Ferlin H. Scarborough" <ferlin at SCOTT.NET> Nov 25, 1996
- 1752 views
Hello, I just made the changes to ed.ex that Jacques Deschenes posted earlier this month. The comment and uncomment feature works great, and I use it alot in testing procedures. I did however have a problem with the indent and unindent features. When I added the code for the indent and unindent features I received an error stating that: single-quote character is empty, so I added a space between the single quotes. Now the indent feature works fine, but the unindent feature gives me the following error: true/false condition must be an ATOM. If I remove the space on the line that gives me the error it tells me the old error that: single-quote character is empty if buffer[i][1] = '' then ^ I have noticed that the only time I get the ATOM error is if I am editing a Euphoria source file, such as test.e or test1.ex. If I am editing a plain file such as ed.doc it works great. I was wondering if anyone else has had this trouble, or if it is a conflict with some of the enhancements that I have personally made to ed.ex THANKS in advance for any help. Ferlin.
2. Re: modifyindent changes to ed.ex
- Posted by Jacques Deschenes <desja at QUEBECTEL.COM> Nov 25, 1996
- 1697 views
- Last edited Nov 26, 1996
Hi Ferlin, To answer your question, 1) There should be a space betwen the single quote. 2) I have no problem using indent/undent. buffer[i][1] should certainly be an atom and ' ' is certainly an atom too so if buffer[i][1] = ' ' then should not generated the kind of error you report. I resend the ModifyIndend() procedure to be certain you have it right ---------------------------------------------------------------------------- ---------- procedure ModifyIndent(integer action) -- if action = 1 add a tab at beginning of each line. -- if action = 0 undent a tab at beginning of each line or if no tab -- suppress a blanck. integer first, last, tab, space, BlkCount, LoopCount sequence inp inp = {1,0} while inp[1] do if action then set_top_line("Number of lines to Indent? (+ down, - up) ") else set_top_line("Number of lines to undent? (+ down, - up) ") end if inp = value(key_gets("")) end while if inp[2] = 0 then normal_video() return end if if inp[2] < 0 then first = b_line + inp[2] + 1 if first < 1 then first = 1 end if last = b_line else first = b_line last = b_line + inp[2] - 1 if last > length(buffer) then last = length(buffer) end if end if inp = {1,0} while inp[1] do if action then set_top_line("Number of blancks to insert? ") else set_top_line("Number of blancks to remove? ") end if inp = value(key_gets("")) end while BlkCount = inp[2] if BlkCount < 1 then normal_video() return end if if action then -- indent for i = first to last do tab = floor(BlkCount/edit_tab_width) space = remainder(BlkCount,edit_tab_width) buffer[i] = repeat('\t',tab) & repeat(' ',space) & buffer[i] buffer[i] = TabsFirst(buffer[i]) end for else -- undent for i = first to last do LoopCount = BlkCount while LoopCount > 0 do if buffer[i][1] = ' ' then buffer[i] = buffer[i][2..length(buffer[i])] LoopCount = LoopCount - 1 elsif buffer[i][1] = '\t' then if LoopCount < edit_tab_width then space = edit_tab_width - LoopCount buffer[i] = repeat(32,space) & buffer[i][2..length(buffer[i])] LoopCount = 0 else buffer[i] = buffer[2..length(buffer[i])] LoopCount = LoopCount - edit_tab_width end if else exit end if buffer[i] = TabsFirst(buffer[i]) end while end for end if b_col = 1 s_col = 1 set_modified() normal_video() DisplayWindow(b_line - s_line + 1, 1) end procedure -- ModifyIndent() ---------------------------------------------------------------------------- ----------- Jacques Deschenes Baie-Comeau, Quebec Canada desja at quebectel.com
3. Re: modifyindent changes to ed.ex
- Posted by "Ferlin H. Scarborough" <ferlin at SCOTT.NET> Nov 27, 1996
- 1726 views
------=_NextPart_000_01BBDC63.03D0A8E0 Hello Jacques, Thanks for the prompt reply to my ModifyIndent problem I extracted your code from the email and inserted it into the editor program, and still have the same message: true/false condition must be an ATOM if buffer[i][1] = ' ' then I figured if I attached my copy of the editor program to this message, that perhaps you or someone who has dealt with Euphoria longer than me could find my problem. Again the ONLY time it happens is if I am editing a Euphoria source file, it works great on other documents. Any help with this would be greatly appreciated. Thanks in Advance. Ferlin. ------=_NextPart_000_01BBDC63.03D0A8E0
4. Re: modifyindent changes to ed.ex
- Posted by Jacques Deschenes <desja at QUEBECTEL.COM> Nov 27, 1996
- 1749 views
- Last edited Nov 28, 1996
Ferlin wrote: > Thanks for the prompt reply to my ModifyIndent problem >I extracted your code from the email and inserted it into the >editor program, and still have the same message: >true/false condition must be an ATOM > if buffer[i][1] = ' ' then to have that error it need that buffer[i][1] be a sequence I don't see why it should be sequence? I ran your version of ed.ex editing syncolor.e and using indent/undent without any error. But I observed that there is a missing space in function TabsFirst() line: while find(line[j]," \t" do there should have a space here-------^ Jacques Deschenes Baie-Comeau, Quebec Canada desja at quebectel.com