lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Attila Siladji wrote:
I would like to announce QDE version 0.6. This is a development environment for Lua. The program has already a lot of features:

- Project management

Good to switch quickly from file to file. Why the file list isn't
sorted? It is after reloading the project.

I had trouble to import a lot of Lua files into the project, it was
complaining about a filename displayed mangled.
There was around 25 files, with name lengths from 8 to 25 characters. Maybe you have set a file list buffer too small. I have studied the problem, and found there was a problem on WinNT4, with no satifying solution.
http://www.kbalertz.com/kb_131462.aspx
http://www.codeproject.com/editctrl/fileeditctrl.asp?df=100&forumid=1930&exp=0&select=145192&tid=131296
If you have a good idea...
Note: I made my test on Win98, so I suppose you just don't manage the hook. I hope the code above will help.

Problem: No detection of external modifications of files. I edited a file with SciTE (the habits are hard to quit...) but QDE still shown the old content.
Removed file from project, added it back, no result because I forgot to
close the edit window of the file...
Remove again the file, the File tab goes empty (white)...
The tree seems to be still there, but not displayed.
Closed QDE, restarted. Where is my project?
OK, where I defined it...
Let's take a look at this qpr file...
Flat file, good, but strange format. Not XML, not Lua, oh well...
Paths to files are relative, project can be moved, but with care...

- Multi document interface

I don't like much Windows' MDI, so I would appreciate tabs to manage
windows, althought the file list can be used as such (but then it would
need to show the opened files).

- AutoComplete functionality

Like in SciTE, no comment: good feature. Expandable (flat file for
definitions), excellent.

- CodeExplorer for fast navigation among functions and table members

Excellent feature. Real time update, good!

A glitch, thought: I had a file with only a big table of tables.
The main table isn't listed, but it lists some sub-tables, when they
have "raw" name, ie. not in ["foo"] form.

Example of problematic file is included.

ru and av1/av2 keys are local and therefore present several times in the
table. They are listed in the Code Explorer (they shouldn't) and jump to
the first entry only.

Note that:
- Arrays and functions defined in block comments are listed...
- Arrays where the opening soft brace are not on the same line as the
array name are ignored.
- Functions defined as foo = function() ... end are ignored.
- Lists local functions, but if several local functions has the same
name, only the last one is listed.

Some work needs to be done on the parser...

It uses Scintilla as text widget, an excellent choice, if I can say that
myself :-)
It should be nice to be able to edit styles...

Some features I like, and miss here:
- Search/Replace: if something is selected (not multilines), put it in
the Search field.
- Search/Replace: I like the Replace in Selection I implemented for SciTE...
- Ctrl+E to jump to opening/closing [round/soft/square] brace.
- Mark a file as "dirty" (changed, not saved).

For more information please visit http://www.quotixsoftware.com <http://www.quotixsoftware.com/>

Pet peeve of mine: I don't like installations when they are not
mandatory (ie. with no ActiveX to register, complex registry settings,
etc.). I downloaded a 936KB file, to install 1.25MB of files. Zipped
these files, I have a 583KB archive. What a waste!

I like when sites provide both an installer (for the clueless users. Are
Lua programmers clueless?) and a zip.

May I suggest NSIS as installer? More compact. Inno is fine, but perhaps
better suited for larger project.
Oops, I almost forgot Kurmi... But I believe it is more suited to
cross-platform projects.

Last note: I am aware that this is a version 0.6, ie. still far from
official release, with much things to be done (mmm, this greyed out
Debug menu item...) and glitches to be ironed out... I hope my remarks
will help you on this way.

This is a good, clean product, I am looking forward the next versions.

Tested v. 0.6, on Win98SE, PII300, 196KB of memory.

--
Philippe Lhoste
--  (near) Paris -- France
--  Professional programmer and amateur artist
--  http://Phi.Lho.free.fr
--  --  --  --  --  --  --  --  --  --  --  --


-- Do this and that.
-- by Philippe Lhoste <PhiLho(a)GMX.net> http://Phi.Lho.free.fr
-- v. 1.0 -- 2004/10/19

--[[
t =
{
	['&'] = "&amp;",
	['<'] = "&lt;",
	['>'] = "&gt;",
	-- French entities (the most common ones)
	['à'] = "&agrave;",
	['â'] = "&acirc;",
}
a = {[f(1)] = g; "x", "y"; x = 1, f(x), [30] = 23; 45}
function foo6(f)
	return f
end
--function foo7(f)
--	return f
--end
]]

foo =
{
	["argenteuil"] =
	{
		ru = { liasse = "25", voie = "rue du Pont d'Argenteuil" },
		av1 = { liasse = "637", voie = "av. d'Argenteuil" },
		av2 = { liasse = "0000", voie = "av. du Vx Ch. d'Argenteuil" },
		special =
			function(voie)
				local f = string.find(string.lower(voie), "rue")
				if f ~= nil then
					return "ru"
				else
					-- Avenue
					f = string.find(string.lower(voie), "ch")
					if f == nil then
						return "av1"
					else
						return "av2"
					end
				end
			end
	},
	["association"] = { liasse = "03", voie = "rue de l'Association" },
	["basly"] =
	{
		ru = { liasse = "04", voie = "rue Basly" },
		al = { liasse = "04", voie = "allée Basly" },
		pref = "ru"
	},
	["beaumarchais"] = { liasse = "10", voie = "bd Beaumarchais" },
	["bee"] =
	{
		ru = { liasse = "27", voie = "rue F. Bée" },
		av1 = { liasse = "27", voie = "av. F. Bée" },
		av2 = { liasse = "637", voie = "av. B. Bée" },
		pref = "ru"
	},
}

r =
{
  4, 5
}

local foo1 = function(a)
	return a
end

local foo2 =
	function(b)
		return b
	end
	
foo3 = function(a)
	return a
end

foo4 =
	function(b)
		return b
	end

function foo5(c)
	return string.gsub(c, "(.)",
		function (x)
			return x .. x
		end)
end

function Main1(argc, argv)
	local function Inside(c, v)
		print"Inside Main1!"
	end
	Inside(argc, argv)
end

function Main2(argc, argv)
	local function Inside(cc, vv)
		print"Inside Main2!"
	end
	Inside(argc, argv)
end

Main1(); Main2()