From: Yaroslav K. <kav...@je...> - 2005-10-13 12:43:07
|
clisp+readline+mingw For what is necessary function tgetent if it is not used anywhere? Thanks! -- WBR, Yaroslav Kavenchuk. |
From: Tomas Z. <zel...@gm...> - 2005-09-30 11:53:25
|
Correcting myself - it is name parameter that must be allocated elsewhere. As for the set of function, I am missing these (binding from string/file) (def-call-out parse-and-bind (:name "rl_parse_and_bind") (:arguments (line c-string)) (:return-type int)) (def-call-out read-init-file (:name "rl_read_init_file") (:arguments (name c-string)) (:return-type int)) Actually, my definitions are slightly different, as I use a wrapper macro so that not to type function name twice: (eval-when (:compile-toplevel :load-toplevel) (defun symbol-to-c-name (symbol &optional (prefix "")) "Translate common lisp name to c name, optionally prepending a prefix" (concatenate 'string prefix =09 (substitute #\_ #\- =09=09=09 (string-downcase =09=09=09 (symbol-name symbol)))))) (defmacro def-rl-call-out (name &rest body) "Simplifies definition of foreign functions in readline package by translating name and providing :library argument to def-call-out." `(def-call-out ,name =09 (:name , (symbol-to-c-name name "rl_")) =09 (:library ,+readline-library+) =09 ,@body)) 2005/9/30, Tomas Zellerin <zel...@gm...>: > Hello, > > nice, this is rather similar to what I was attempting. > > One note from quick look - does your add-defun works to you? I believe > it must be allocated elsewhere (I used malloc), because readline keeps > the string. > > Best regards, > > Tomas Zellerin > > 2005/9/29, Sam Steingold <sd...@gn...>: > > there have been expressed some interest in the past to have a wider > > access to the readline features, e.g., saving history into files &c. > > you can do that now with the new readline module by putting this into > > your ~/.clisp: > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > (readline:read-history "~/.clisp-history") > > (push (lambda () (readline:write-history "~/.clisp-history")) > > custom:*fini-hooks*) > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > the module is very small and basic, please feel free to send additions. > > > > -- > > Sam Steingold (http://www.podval.org/~sds) running w2k > > <http://www.mideasttruth.com/> <http://www.openvotingconsortium.org/> > > <http://www.memri.org/> <http://www.dhimmi.com/> <http://www.jihadwatch= .org/> > > Lisp is a language for doing what you've been told is impossible. - Ken= t Pitman > > > > > > ------------------------------------------------------- > > This SF.Net email is sponsored by: > > Power Architecture Resource Center: Free content, downloads, discussion= s, > > and more. http://solutions.newsforge.com/ibmarch.tmpl > > _______________________________________________ > > clisp-list mailing list > > cli...@li... > > https://lists.sourceforge.net/lists/listinfo/clisp-list > > > |
From: Sam S. <sd...@gn...> - 2005-09-30 13:43:19
|
> * Tomas Zellerin <mryyreva@tznvy.pbz> [2005-09-30 13:53:13 +0200]: > > Correcting myself - it is name parameter that must be allocated elsewhere. does my module work for you? > As for the set of function, I am missing these (binding from string/file) > > (def-call-out parse-and-bind > (:name "rl_parse_and_bind") > (:arguments (line c-string)) > (:return-type int)) > (def-call-out read-init-file > (:name "rl_read_init_file") > (:arguments (name c-string)) > (:return-type int)) please send a patch placing all the functions you want in the right order in the right section. > Actually, my definitions are slightly different, as I use a wrapper > macro so that not to type function name twice: and how do you convert from "history_is_stifled" to "history-stifled-p"? :-) > (:library ,+readline-library+) not needed in the module. PS. please fix your mailer to respect "Mail-Copies-To" and "Reply-to". -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://ffii.org/> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.openvotingconsortium.org/> <http://truepeace.org> Live Lisp and prosper. |
From: Tomas Z. <zel...@gm...> - 2005-10-02 20:30:38
|
2005/9/30, Sam Steingold <sd...@gn...>: > > * Tomas Zellerin <mryyreva@tznvy.pbz> [2005-09-30 13:53:13 +0200]: > > > > Correcting myself - it is name parameter that must be allocated elsewhe= re. > > does my module work for you? Mostly, but not here. Try add-defun something, and then either list all known functions, or try to get the function using named-function. The former case is probably more instructive, as you can see that there is new function with name containing strange characters - new content of given place on stack, I guess. Also, setf-ing readline-name causes crash for me. No idea why and how to prevent it - I had same problem. As read-only variable, it is pretty useless. "It would be nice" if it was set to clisp somewhere by default. > > As for the set of function, I am missing these (binding from string/fil= e) > > > > (def-call-out parse-and-bind > > (:name "rl_parse_and_bind") > > (:arguments (line c-string)) > > (:return-type int)) > > (def-call-out read-init-file > > (:name "rl_read_init_file") > > (:arguments (name c-string)) > > (:return-type int)) > > please send a patch placing all the functions you want in the right > order in the right section. See attached below. Hope it would work, I have access to internet only through Windows atm. I included functions and variables I actually used, so it should work. It is still by no means complete set. I tried to make work key bindings and doing some work on background while waiting in repl, the choice of functions reflects this. Change to add-defun is not included. Also, according to info readline (which I used as the base), redisplay has return-type void. > > > Actually, my definitions are slightly different, as I use a wrapper > > macro so that not to type function name twice: > > and how do you convert from "history_is_stifled" to "history-stifled-p"? = :-) > Good point. I did not define the function :) > > (:library ,+readline-library+) > > not needed in the module. I tried to make it work on Windows, this is probably leftover of it. > > PS. please fix your mailer to respect "Mail-Copies-To" and "Reply-to". Ill try. Is it better? Tomas diff -ur /mnt/readline/readline.lisp ../modules/readline/readline.lisp --- /mnt/readline/readline.lisp 2005-09-30 16:12:10.000000000 +0200 +++ ../modules/readline/readline.lisp 2005-10-01 07:24:15.000000000 +0200 @@ -26,6 +26,8 @@ (c-lines "#include <readline/readline.h>~%") (def-c-type readline-command (c-function (:arguments (rep int) (char int))= )) +(def-c-type readline-hook-function (c-function (:return-type int))) +(def-c-type readline-vcpfunc (c-function (:arguments (text c-string)))) (def-call-out readline (:name "readline") (:arguments (prompt c-string)) @@ -56,6 +60,19 @@ (:arguments (variable c-string) (value c-string)) (:return-type int)) +(def-call-out bind-keyseq (:name "rl_bind_keyseq") + (:arguments (keyseq c-string) + (callback readline-command)) + (:return-type int)) + +(def-call-out parse-and-bind (:name "rl_parse_and_bind") + (:arguments (line c-string)) + (:return-type int)) + +(def-call-out read-init-file (:name "rl_read_init_file") + (:arguments (name c-string)) + (:return-type int)) + ;;; Associating Function Names and Bindings (def-call-out named-function (:name "rl_named_function") @@ -67,6 +84,30 @@ (def-call-out redisplay (:name "rl_redisplay") (:arguments) (:return-type int)) +(def-call-out forced-update-display (:name "rl_forced_update_display") + (:return-type int)) +(def-call-out on-new-line (:name "rl_on_new_line") + (:return-type int)) + +;;; Modifying text +(def-call-out insert-text (:name "rl_insert_text") + (:arguments (text c-string)) + (:return-type int)) + +;;; Character input + +(def-call-out set-keyboard-input-timeout (:name "rl_set_keyboard_input_timeout") + (:arguments (microseconds int)) + (:return-type int)) ; returns old value + +;;; Alternate interface +(def-call-out callback-handler-install (:name "rl_callback_handler_install= ") + (:arguments (prompt c-string) (lhandler readline-vcpfunc))) +(def-call-out callback-read-char (:name "rl_callback_read_char")) +(def-call-out callback-handler-remove (:name "rl_callback_handler_remove")= ) + + + ;;; variables (def-c-var library-version (:name "rl_library_version") (:type c-string)) @@ -75,6 +116,10 @@ (def-c-var insert-mode (:name "rl_insert_mode") (:type int)) (def-c-var readline-name (:name "rl_readline_name") (:type c-string)) ;"CL= ISP" +(def-c-var startup-hook (:name "rl_startup_hook") (:type readline-hook-function)) +(def-c-var pre-input-hook (:name "rl_pre_input_hook") (:type readline-hook-function)) +(def-c-var event-hook (:name "rl_event_hook") (:type readline-hook-functio= n)) + ;;; ------ history ------ (c-lines "#include <readline/history.h>~%") |
From: Sam S. <sd...@gn...> - 2005-10-03 01:51:47
|
> * Tomas Zellerin <mryyreva@tznvy.pbz> [2005-10-01 08:59:24 +0200]: > > 2005/9/30, Sam Steingold <sd...@gn...>: >> > * Tomas Zellerin <mryyreva@tznvy.pbz> [2005-09-30 13:53:13 +0200]: >> > >> > Correcting myself - it is name parameter that must be allocated elsewhere. >> >> does my module work for you? > > Mostly, but not here. Try add-defun something, and then either list > all known functions, or try to get the function using named-function. how do I list all known functions? > The former case is probably more instructive, as you can see that > there is new function with name containing strange characters - new > content of given place on stack, I guess. I guess :alloc :malloc-free is needed. > Also, setf-ing readline-name causes crash for me. No idea why and how > to prevent it - I had same problem. same: :alloc :malloc-free. > As read-only variable, it is pretty useless. "It would be nice" if it > was set to clisp somewhere by default. it was before... > I included functions and variables I actually used, so it should work. > It is still by no means complete set. I tried to make work key > bindings and doing some work on background while waiting in repl, the > choice of functions reflects this. well, if we are at it, why not do everything? > Change to add-defun is not included. Also, according to info readline > (which I used as the base), redisplay has return-type void. indeed. thanks. >> PS. please fix your mailer to respect "Mail-Copies-To" and "Reply-to". > Ill try. Is it better? yes, thanks. Alas, the patch was corrupt (lines wrapped &c) the best way would be to open a "patch" tracker issue on SF. thanks. -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://pmw.org.il/> <http://www.memri.org/> <http://www.palestinefacts.org/> <http://www.savegushkatif.org> <http://www.jihadwatch.org/> Why use Windows, when there are Doors? |
From: Tomas Z. <zel...@gm...> - 2005-10-03 06:30:38
|
> >> > >> does my module work for you? > > > > Mostly, but not here. Try add-defun something, and then either list > > all known functions, or try to get the function using named-function. > > how do I list all known functions? I do it by binding dump-functions to a key in inputrc and pressing the key. "\ea": dump-functions > > > The former case is probably more instructive, as you can see that > > there is new function with name containing strange characters - new > > content of given place on stack, I guess. > > I guess :alloc :malloc-free is needed. > Yes, I did it that way and it worked. You will get a leak every time you change binding to same string, but why someone should do it? > > Also, setf-ing readline-name causes crash for me. No idea why and how > > to prevent it - I had same problem. > > same: :alloc :malloc-free. > I should have guessed it. > > As read-only variable, it is pretty useless. "It would be nice" if it > > was set to clisp somewhere by default. > > it was before... > > > I included functions and variables I actually used, so it should work. > > It is still by no means complete set. I tried to make work key > > bindings and doing some work on background while waiting in repl, the > > choice of functions reflects this. > > well, if we are at it, why not do everything? There are reasons I see not to include everything : - unused functions will not be tested and could cause crashes - unused functions are not needed (there is lot of duplication through the interface) - someone would have to write it, and I dont understand what some functions do, in particular how completion works. Of course, all can be disagreed (you wont get testing unless you include it= ). A style question - why are defined variables not starred? > Alas, the patch was corrupt (lines wrapped &c) > the best way would be to open a "patch" tracker issue on SF. > thanks. It is there. Regards, Tomas |
From: Sam S. <sd...@gn...> - 2005-10-03 16:50:21
|
> * Tomas Zellerin <mryyreva@tznvy.pbz> [2005-10-03 08:30:26 +0200]: > >> >> >> >> does my module work for you? >> > >> > Mostly, but not here. Try add-defun something, and then either list >> > all known functions, or try to get the function using named-function. >> >> how do I list all known functions? > I do it by binding dump-functions to a key in inputrc and pressing the key. > "\ea": dump-functions cool! how do I bind F1? "\e[11~" (suggested in the manual) does not work. (I use cygwin/bash) >> > The former case is probably more instructive, as you can see that >> > there is new function with name containing strange characters - new >> > content of given place on stack, I guess. >> >> I guess :alloc :malloc-free is needed. >> > Yes, I did it that way and it worked. You will get a leak every time > you change binding to same string, but why someone should do it? this should be reflected in the (:documentation "string") of the call out. >> well, if we are at it, why not do everything? > There are reasons I see not to include everything : > - unused functions will not be tested and could cause crashes untested functions should be marked as such with a comment, e.g.: (def-call-out foo (:name "bar") ; untested ....) > - unused functions are not needed (there is lot of duplication through > the interface) :-) these are the famous last words: "I don't need it, so nobody does". let us not fall into this trap. people _will_ complain - just like you did. > - someone would have to write it, and I dont understand what some > functions do, in particular how completion works. > Of course, all can be disagreed (you wont get testing unless you include it). > > A style question - why are defined variables not starred? good question. we do not star foreign variables, see grep -r -i def-c-var modules/ I don't know why, it's just they way it always has been. >> Alas, the patch was corrupt (lines wrapped &c) >> the best way would be to open a "patch" tracker issue on SF. >> thanks. > It is there. thanks. so now you can update the patch! -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://www.openvotingconsortium.org/> <http://truepeace.org> <http://pmw.org.il/> <http://www.dhimmi.com/> <http://www.mideasttruth.com/> We are born naked, wet, and hungry. Then things get worse. |
From: Tomas Z. <zel...@gm...> - 2005-10-04 06:36:14
|
> >> how do I list all known functions? > > I do it by binding dump-functions to a key in inputrc and pressing the = key. > > "\ea": dump-functions > > cool! > how do I bind F1? > "\e[11~" (suggested in the manual) does not work. > (I use cygwin/bash) > On unixes, type ^v (or whatever is either bound to quoted-insert and/or set up with stty) and press the key to see generated codes. ^] is \e. Dont know if it works on Cygwin - I can imagine OS below catching the key before it arrives \to bash. You can also do (funcall (readline:named-function "dump-functions") 0 0). > > Yes, I did it that way and it worked. You will get a leak every time > > you change binding to same string, but why someone should do it? > > this should be reflected in the (:documentation "string") of the call out= . Speaking about documentation string, I see there are hardly any in the modules. Is this by design, or just nobody did it? :) > > >> well, if we are at it, why not do everything? > > There are reasons I see not to include everything : > > - unused functions will not be tested and could cause crashes > > untested functions should be marked as such with a comment, e.g.: > (def-call-out foo (:name "bar") ; untested In comment or in :documentation? > ....) > > > - unused functions are not needed (there is lot of duplication through > > the interface) > > :-) > these are the famous last words: "I don't need it, so nobody does". > let us not fall into this trap. > people _will_ complain - just like you did. Certainly. :) I just though of having two different functions, one with additional argument and the other with same argument defaulted, a bit... unlispy. > > thanks. > so now you can update the patch! :) I knew it would end this way. I can and will, but it may take some time. What is the situation with automatic generators of lisp def-call-outs from .h file? I heard of some, but never did any make work. One more note - readline-name does not work (crashes when set) as :malloc-free neither. I guess clisp tries to free old value. Tomas |
From: Sam S. <sd...@gn...> - 2005-10-06 02:29:02
|
> * Tomas Zellerin <mryyreva@tznvy.pbz> [2005-10-04 08:36:07 +0200]: > >> >> how do I list all known functions? >> > I do it by binding dump-functions to a key in inputrc and pressing the key. >> > "\ea": dump-functions >> >> cool! >> how do I bind F1? >> "\e[11~" (suggested in the manual) does not work. >> (I use cygwin/bash) >> > On unixes, type ^v and press the key to see generated codes. duh... thanks! >> > Yes, I did it that way and it worked. You will get a leak every time >> > you change binding to same string, but why someone should do it? >> >> this should be reflected in the (:documentation "string") of the call out. > Speaking about documentation string, I see there are hardly any in the > modules. Is this by design, or just nobody did it? :) the :documentation option is a recent addition. there are some in modules/bindings/win32/win32.lisp and now in modules/readline/readline.lisp please add more as you go. >> untested functions should be marked as such with a comment, e.g.: >> (def-call-out foo (:name "bar") ; untested > In comment or in :documentation? comment, and on the same line as "def-call-out" so that grep can give the list of untested functions. OTOH, it would be nice if they _were_ tested in test.tst. > Certainly. :) I just though of having two different functions, one > with additional argument and the other with same argument defaulted, a > bit... unlispy. pure FFI _is_ unlispy. to get lispy behavior one has to write some C code :-) see e.g., modules/berkeley-db/bdb.c. > :) I knew it would end this way. I can and will, but it may take some > time. What is the situation with automatic generators of lisp > def-call-outs from .h file? I heard of some, but never did any make > work. I have never used one. you might want to try SWIG - the recent addition. note that CLISP FFI is more expressive that C, so it is absolutely crucial that you carefully proof-read any generated FFI forms. > One more note - readline-name does not work (crashes when set) as > :malloc-free neither. I guess clisp tries to free old value. WFM now. -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://www.honestreporting.com> <http://www.openvotingconsortium.org/> <http://www.mideasttruth.com/> <http://www.jihadwatch.org/> Abandon all hope, all ye who press Enter. |
From: Yaroslav K. <kav...@je...> - 2005-10-14 07:51:20
|
please, append some functions form appended patch (or me with it address to Tomas Zellerin?) Thanks! -- WBR, Yaroslav Kavenchuk. Index: modules/readline/readline.lisp =================================================================== --- readline.lisp Thu Oct 6 01:54:32 2005 +++ readline.lisp Fri Oct 14 07:14:26 2005 @@ -66,6 +66,17 @@ (:arguments (name c-string)) (:return-type readline-command)) +;;; Terminal + +(def-call-out set-screen-size (:name "rl_set_screen_size") + (:arguments (rows int) (columns int)) + (:return-type nil)) + +(def-call-out get-screen-size (:name "rl_get_screen_size") + (:arguments (rows (c-ptr int) :out :alloca) + (columns (c-ptr int) :out :alloca)) + (:return-type nil)) + ;;; Redisplay (def-call-out redisplay (:name "rl_redisplay") |