Some feedback.

Roland Krause rokrau at yahoo.com
Fri Feb 15 17:39:00 GMT 2002


Eric,
thanks for your detailed email and for your suggestions. In the future
all menu items and many other user actions will be implemented using
KDE's KActions. This, together with KDE-3's multi key accelerators,
will make a flexible assignment of keyboard shortcuts a lot easier. 

Roland

--- Eric Methorst <arnalon at xs4all.nl> wrote:
> Hi there.
> 
> I've been using KDevelop for some time now, and I thought it might be
> 
> helpfull to you if I relayed my experiances.
> 
> First of all I'd like to say you guys made a great product. I'm the
> kind of 
> programmer who is used to having 10 or more source and header files
> opened, 
> which becomes quite confusing if you're running seperate x-terms :-)
> Having 
> an integrated debugger is great and being able to generate api
> documentation 
> makes that part of life also much easier.
> 
> Having everyting in one place, is quite a good idea, which I'm
> actually used 
> to since I've been using the developer studio for some years in the
> past.
> 
> However: there is always some room for improvement and i'd like to
> take the 
> oppurtunity to suggest a few.
> 
> Bugs:
> - I found quite an interesing bug in the api-documentation generator.
> I 
> declared the following function in a header file:
> someParseFunct(char const* in, vector<string>& out, char seperator =
> ';');
> The api-doc generator will fail on the default ';', suggesting to me
> it is 
> considering that the doc parser is simply looking for the first
> occurance of 
> an ';' and not looking for it at the end of the ertry (e.g looking
> for ');' 
> or something like that.
> 
> - I remapped some keys to step into (F11) and step out (SHIFT-F10),
> step over 
> (F10) for the debugger, yet a lot of times they donot seem to work,
> forcing 
> me to use the mouse while debugging! (For that reason alone, I
> consider thit 
> one a severe bug).
> 
> - There is some strange occurance in the api-doc generation wich
> causes my 
> documentation to come out wrong on each generation. For some reason
> the 
> generator does not find my own main description of a class (in the
> /** ... */ 
> section) and therefore uses the GNU header part. So each time I
> generate the 
> api-doc, it says: class MyClass This program is free software ...
> etc.
> It seems that having whitespace and or a newline after the final
> #endif 
> triggers this, yet it also happened at certain files that reference 
> eachother. The only solution so far was to remove the original files
> from the 
> project, rename them, re-create the class in the IDE and copy-pasting
> the 
> implementation.  Quite a lot of work, and very annoying by the way
> :-(
> Once, it kept on alternating this between two classes, making it
> impossible 
> for me to generate a good api-doc.
> FInal solution was to use new header and cpp templates that donot use
> the 
> /******************** string but the /*============= instead.
> 
> - I've not been able to tell kdevelop that the main 'program' is
> actually a 
> library instead of a program. In the end, I had to manually edit the
> project 
> file.
> 
> - I cannot enter seperate settings for a sub-project. If I require
> linking 
> with a special lib, I need to add this to the main program settings,
> while I 
> donot want to, since it results in having the library loaded when the
> program 
> is running! there goes all my work of loading plugins manually using
> ldopen!
> In the end, I changed the configure.in and created special m4 macro's
> to get 
> this working correctly (see attachements, please not I've never seen
> m4 
> before so though it may not look much, it took me more than a day to
> write 
> and I'm actually just happy it works!).
> (To elucidate on this: I created a standard sql connection library,
> so I have 
> the same interface no matter what database is being used! Therefore,
> for each 
> database I create a seperate subproject which will be a plug-in at
> runtime. 
> If I'm only connecting to a postgress database, I donot want any code
> and or 
> libraries laoded into memory that are required for mysql! Hence,
> usage of 
> ldopen and clear seperation of all extra includes and linking for
> each 
> project and subproject)
> 
> - A few times now, I was running through compiler errors using F4 and
> the IDE 
> suddenly resized to twice it's width. Had to minimize/maximize a few
> times 
> before it allowed itself to resize again back to the original size.
> (I'm 
> usually running the app maximized)
> 
> 
> Feature requests:
> - Could you make it default behaviour (or optional) that when I'm
> using 
> kdevelop's option to make a distribution, it will also add my api
> doc! This 
> is very important when creating libraries that have to be used by
> others.
> 
> - Could you make a shortcut key that allows me to toggle between the
> last two 
> files i've viewed? This is very helpfull when I'm copy-pasting
> several times 
> between two files, which now consists of a lot of actions. (I notices
> that 
> for example ALT-ESC is still available)
> 
> - In the window section, I did not find an easy shortcut to access my
> opened 
> files. Compare against the developer studio, which allows me to
> access them 
> using ALT-W, 5   I am now forced to do ALT-W, arrow down 5 times,
> enter
> I would appreciate it very much if I could use e.g. ALT-W <number> or
> even 
> better ALT-W-letter.
> This cuts down the amount of key actions drastically while navigating
> through 
> my files.
> 
> - I haven't found a way to access the class tree via the keyboard.
> That too 
> would be a nice feature.
> 
> - Being able to scroll with the keyboard keys in the messages pane
> would also 
> be nice.
> 
> 
> While those things I summed as bugs are just that (sorry, but it
> simply does 
> not behave as expected) they are manageable, can be hacked around.
> The interface feature requests are far more important to me. 
> I've seen a colleague of mine who was merely 26 yeaers of age being
> condemned 
> to sit at home and never to work again, due to what we call RSI
> (repetetive 
> stress syndrome), whilst all of our team were plagued with severe
> physical 
> discomfort as well.
> The main part of the solution for us who remained, proved to be a
> very simple 
> one: stop using the mouse and use keyboard shortcuts instead (which
> has the 
> added bonus that it's also much faster :-) )
> 
> I think your product is great, but you have reached the stage that
> added 
> functionality is no longer required to convince people to use it. I
> believe 
> it is now time you focus on the interface; the ease of use and
> especially 
> abolishing the mouse requirement, more so since this is an
> application people 
> actually use more than 8 hours a day, 5 days a week.
> 
> 
> Sincerely,
> (and thanx 4 making it in the first place)
> 
> Eric Methorst
> 
> -- 
> Eric Methorst
> arnlon at xs4all.nl
> http://arnalon.dhs.org
> MUD: telnet arnalon.dhs.org:5000
> > dnl general.in include this file in order to get the MY_GEN_PATH
> macro
> AC_DEFUN(MY_GEN_PATH,
> [
> AC_MSG_CHECKING(for $1 $2)
> AC_ARG_WITH($1-$2, [  --with-$1-$2=DIR
>                           adds $1 include path ($3)],
> 	use_gen_path="$withval",
> 	use_gen_path=$3
> )
> if test "$2" = "include"; then
> 	my_gen_flag="-I"
> else
> 	my_gen_flag="-L"
> fi
> 
> if test -n "$use_gen_path"; then
>    ac_save_ifs=$IFS
>    IFS=':'
>    for dir in $use_gen_path; do
>      $4="$$4 $my_gen_flag$dir"
> 	 if test ! -d $dir; then
> 		AC_WARN("direcory $dir does not exist!")
> 	 fi
>    done
>    IFS=$ac_save_ifs
>    use_gen_path="added"
> else
>    use_gen_path="no"
> fi
> AC_SUBST($4)
> AC_MSG_RESULT($use_gen_path)  
>                                   
> ])
> 
> AC_DEFUN(MY_GEN_VERSION, [])
> MAJOR_VERSION=""
> MINOR_VERSION=""
> SUB_VERSION=""
>  
> ac_old_ifs=$IFS
> IFS='.'
> for vers in $VERSION; do
>     if test -n "$MAJOR_VERSION" -a -n "$MINOR_VERSION"; then
>         SUB_VERSION=$vers
>     fi
>     if test -n "$MAJOR_VERSION" -a -z "$MINOR_VERSION"; then
>         MINOR_VERSION=$vers
>     fi
>     if test -z "$MAJOR_VERSION" -a -z "$MINOR_VERSION"; then
>         MAJOR_VERSION="$vers"
>     fi
> done
>  
> dnl echo "$MAJOR_VERSION . $MINOR_VERSION . $SUB_VERSION "
> IFS=$ac_old_ifs   
> if test -z "$MAJOR_VERSION"; then 
> 	MAJOR_VERSION=0
> fi
> if test -z "$MINOR_VERSION"; then 
> 	MINOR_VERSION=0
> fi
> if test -z "$SUB_VERSION"; then 
> 	SUB_VERSION=0
> fi
> 
> AC_SUBST(MAJOR_VERSION)
> AC_SUBST(MINOR_VERSION)
> AC_SUBST(SUB_VERSION)
> 
> > dnl without this order in this file, autoconf will not work!
> dnl the argument is a source file out of your sources. But
> dnl acinclude.m4 makes the job for all programs ;-)
> AC_INIT(acinclude.m4)
> 
> dnl enable the following if you want to use autoconf/automake 
> dnl framework from a certain directory (like kde-common)
> dnl AC_CONFIG_AUX_DIR(admin)
> 
> AC_CANONICAL_SYSTEM
> AC_ARG_PROGRAM
> 
> AM_INIT_AUTOMAKE(dbconnect,1.0.1)
> 
> AC_PREFIX_DEFAULT(/usr/local)
> if test "x$prefix" = "xNONE"; then
>   prefix=$ac_default_prefix
>   ac_configure_args="$ac_configure_args --prefix $prefix"
> fi
> 
> dnl without this order in this file, automake will be confused!
> dnl 
> AM_CONFIG_HEADER(config.h)
> 
> dnl checks for programs.
> dnl first check for c/c++ compilers
> AC_CHECK_COMPILERS
> 
> dnl create only shared libtool-libraries
> AC_ENABLE_SHARED(yes)
> 
> dnl set the following to yes, if you want to create static
> dnl libtool-libraries
> AC_ENABLE_STATIC(no)
> 
> dnl create a working libtool-script
> KDE_PROG_LIBTOOL
> 
> dnl check for presence of dynamic-loading-library functions
> KDE_CHECK_LIBDL
> 
> dnl activate the following for some additional tests
> dnl   (compat, crypt, socket, nsl, ...)
> dnl KDE_MISC_TESTS
> 
> dnl add --with-extra-includes and --with-extra-libs switch to
> ./configure
> dnl
> AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
> all_libraries="$all_libraries $USER_LDFLAGS"
> all_includes="$all_includes $USER_INCLUDES"
> AC_SUBST(all_includes)
> AC_SUBST(all_libraries)
> 
> AC_SUBST(AUTODIRS)
> 
> dnl in this space add everything you want to check for
> dnl examples are specific headers, libraries, etc.
> AC_ARG_ENABLE(mysql, [  --disable-mysql         donot build mysql
> sources], 
> 		[BUILD_MYSQL=""; echo "NOT Building mysql"], 
> 		[BUILD_MYSQL="mysql" ;echo "Building mysql sources" ])
> AC_SUBST(BUILD_MYSQL)  
> 
> 
> AC_ARG_ENABLE(pgsql, [  --disable-pgsql         donot build postgress
> sources], 
> 		[BUILD_PGSQL=""; echo "NOT Building mysql"], 
> 		[BUILD_PGSQL="postgress" ;echo "Building mysql sources" ])
> AC_SUBST(BUILD_PGSQL)  
> 	
> dnl Add extra path variables for postgres and mysql.
> dnl Thus, first include the mygenpath.in file.
> builtin([include], [mygenpath.in])
> MY_GEN_PATH(pgsql, include,
> [/usr/include/pgsql:/usr/include/pgsql/libpq++], PGSQL_INCLUDE)
> MY_GEN_PATH(pgsql, lib, [/usr/lib], PGSQL_LIBDIR)
> MY_GEN_PATH(mysql, include,
> [/usr/include/mysql:/usr/include/mysql/mysql++], MYSQL_INCLUDE)
> MY_GEN_PATH(mysql, lib, [/usr/lib], MYSQL_LIBDIR)
> 	
> dnl MY_CONF_VERSION
> MY_GEN_VERSION() 
> 
> dnl perform program name transformation
> AC_ARG_PROGRAM
> 
> dnl add here all your Makefiles. These will be created by configure
> AC_OUTPUT(Makefile dbconnect-api/Makefile dbconnect/Makefile
> dbconnect/docs/Makefile dbconnect/docs/en/Makefile
> dbconnect/postgress/Makefile dbconnect/mysql/Makefile )
> > ####### kdevelop will overwrite this part!!! (begin)##########
> lib_LTLIBRARIES = libdbconnect.la
> 
> libdbconnect_la_SOURCES = connfact.cpp vstmtdata.cpp sqlstmt.cpp
> pstmtdata.cpp bastmt.cpp 
> 
> SUBDIRS = docs postgress mysql 
> 
> EXTRA_DIST = bastmt.cpp bastmt.h pstmtdata.cpp pstmtdata.h
> sqlstmt.cpp sqlstmt.h vstmtdata.cpp vstmtdata.h connfact.cpp
> connfact.h defs.h enums.h emconnection.h 
> 
> ####### kdevelop will overwrite this part!!! (end)############
> noinst_HEADERS = debugLog.h emException.h stringUtil.h
> ###bin_PROGRAMS = dbconnect
> SOMAJOR=@MAJOR_VERSION@
> SOMINOR=@MINOR_VERSION@
> SOSUBMINOR=@SUB_VERSION@
> 
> include_HEADERS = bastmt.h pstmtdata.h sqlstmt.h vstmtdata.h
> connfact.h defs.h enums.h emconnection.h 
> 
> lib_LTLIBRARIES = libdbconnect.la
>  
> libdbconnect_la_SOURCES = emconnection.cpp connfact.cpp vstmtdata.cpp
> sqlstmt.cpp pstmtdata.cpp bastmt.cpp 
> LDFLAGS = $(USER_LDFLAGS)
> 
> libdbconnect_la_LDFLAGS = $(all_libraries) -no-undefined
> -version-info $(SOMAJOR):$(SOMINOR):$(SOSUBMINOR) $(LDFLAGS)  
> 
> SUBDIRS = docs $(BUILD_PGSQL) $(BUILD_MYSQL) 
> # set the include path found by configure
> INCLUDES= $(all_includes) $(USER_INCLLUDES)
>  
> # the library search path.
> ### dbconnect_LDFLAGS = $(all_libraries) -shared
> # try to overrule default kdevelop behaviour here:
> libdbconnect_la_LIBADD = -ldl -lbaselib	
>                                                                      
>           
> > ####### kdevelop will overwrite this part!!! (begin)##########
> lib_LTLIBRARIES = libpostgress.la
> 
> libpostgress_la_SOURCES = pgsqlstmt.cpp pgsqlconnect.cpp pgcreate.cpp
> empgdatabase.cpp 
> 
> 
> EXTRA_DIST = empgdatabase.cpp empgdatabase.h pgcreate.cpp pgcreate.h
> pgsqlconnect.cpp pgsqlconnect.h pgsqlstmt.cpp pgsqlstmt.h 
> 
> ####### kdevelop will overwrite this part!!! (end)############
> SOMAJOR=@MAJOR_VERSION@
> SOMINOR=@MINOR_VERSION@
> SOSUBMINOR=@SUB_VERSION@
> 
> # here you should add all header files, which contains the
> functionality
> # of your shared lib (published for the users)
> include_HEADERS = 
> 
> # here you should add all header files, which shouldn´t be installed
> noinst_HEADERS =
> 
> libpostgress_la_LDFLAGS = $(all_libraries) -no-undefined
> -version-info $(SOMAJOR):$(SOMINOR):$(SOSUBMINOR) $(LDFLAGS)
> 
> # add here the libraries which have to be include
> # for building the shared lib
> #
> #  please consider also the usage of the make environment variables
> #  like
> #  $(LIB_KDEUI), $(LIB_QT), $(LIB_HTML), etc.
> #  instead of the hardcoded entries, which have placed
> #  in here.
> #  The following line is only a suggestion!
> #
> PGSQL_LIBDIR=@PGSQL_LIBDIR@	
> libpostgress_la_LIBADD = $(all_libraries) $(USER_LDFLAGS)
> $(PGSQL_LIBDIR) -lpq++ 
> PGSQL_INCLUDES=@PGSQL_INCLUDE@
> INCLUDES := $(all_includes) $(USER_INCLUDES) $(INCLUDES)
> $(PGSQL_INCLUDES)
> > ####### kdevelop will overwrite this part!!! (begin)##########
> lib_LTLIBRARIES = libmysql.la
> 
> libmysql_la_SOURCES = mycreate.cpp mysqlstmt.cpp mysqlconnect.cpp 
> 
> 
> EXTRA_DIST = mysqlconnect.cpp mysqlconnect.h mysqlstmt.cpp
> mysqlstmt.h mycreate.cpp mycreate.h 
> 
> ####### kdevelop will overwrite this part!!! (end)############
> SOMAJOR=@MAJOR_VERSION@
> SOMINOR=@MINOR_VERSION@
> SOSUBMINOR=@SUB_VERSION@
> 
> # here you should add all header files, which contains the
> functionality
> # of your shared lib (published for the users)
> include_HEADERS =
> 
> # here you should add all header files, which shouldn´t be installed
> noinst_HEADERS = mycreate.h mysqlstmt.h mysqlconnect.h 
> 
> libmysql_la_LDFLAGS = $(all_libraries) -no-undefined -version-info
> $(SOMAJOR):$(SOMINOR):$(SOSUBMINOR) $(LDFLAGS)
> 
> # add here the libraries which have to be include
> # for building the shared lib
> #
> #  please consider also the usage of the make environment variables
> #  like
> #  $(LIB_KDEUI), $(LIB_QT), $(LIB_HTML), etc.
> #  instead of the hardcoded entries, which have placed
> #  in here.
> #  The following line is only a suggestion!
> #
> MYSQL_LIBDIR=@MYSQL_LIBDIR@	
> libmysql_la_LIBADD = $(USER_LDFLAGS) $(MYSQL_LIBDIR) -lsqlplus
> MYSQL_INCLUDES=@MYSQL_INCLUDE@	
> INCLUDES :=  $(INCLUDES) $(USER_INCLUDES) $(MYSQL_INCLUDES)
> 	
> 


__________________________________________________
Do You Yahoo!?
Got something to say? Say it better with Yahoo! Video Mail 
http://mail.yahoo.com

-
to unsubscribe from this list send an email to kdevelop-request at kdevelop.org with the following body:
unsubscribe »your-email-address«



More information about the KDevelop mailing list