Hi all,
I have released Objective-CL 0.2.1. This release adds convenience and
robustness to the previous one.
* Quick Summary
Super calls are supported. Bugs have been fixed. You may omit
DEFINE-OBJECTIVE-C-GENERIC-FUNCTION calls.
* What's New?
** Super Calls
Up to now, there was no way of doing the equivalent of a message send
to `super' as in Objective-C. This has changed. Just as with
CALL-NEXT-METHOD for standard methods, you may now either call (SUPER)
as-is or with the arguments you wish to pass to it.
See the SUPER function in the reference manual for details.
** Implicit Definition of Objective-C Generic Functions
DEFINE-OBJECTIVE-C-METHOD now takes care of defining a suitable
OBJECTIVE-C-GENERIC-FUNCTION for you if you don't do so yourself.
** Bug Fixes
Lots of little bugs are gone as well. Among others, returning values
from Objective-C methods now works much more reliably, and Lisp
wrapper objects don't just vanish when the GC runs as long as the
corresponding foreign instance is still referenced by Objective-C
code.
I'm still wondering what to do on garbage-collected Objective-C runtimes.
Have fun!
~ Matthias
_______________________________________________
objective-cl-announce mailing list
objective-cl-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/objective-cl-announce
On Wed, 5 Mar 2008 21:22:25 -0500, Ben Hyde <bhyde(a)pobox.com> wrote:
> - :name (format age nil "meal{~A}" choice)
> + :name (format nil "meal{~A}" choice)
Woops, how did that one get into there?
Thanks, fixed in the new release.
Edi.
_______________________________________________
tbnl-announce site list
tbnl-announce(a)common-lisp.net
http://common-lisp.net/mailman/listinfo/tbnl-announce
Hi all,
Objective-CL 0.2.0 has been released. This release is a major
milestone on the way to 1.0.0.
* Quick summary
We can now define Objective-C classes and methods without writing a
single line of Objective-C code. The API may not be stable and there
might be crashes, but living dangerously is half the fun, right? ;)
* What's new?
** Method call syntax
#.(enable-method-syntax)
We now support Clozure CL's new method call syntax via reader macros.
That means you can write:
(let ((lock (#/new (find-objc-class 'ns-lock))))
(#/lock lock)
(print (#/stringWithCString:encoding: (find-objc-class 'ns-string)
"Hi there!" 0))
(#/unlock lock))
In fact, as the reader macro does no more than offer an alternate
syntax for symbols, you can do things like using it with APPLY as
well:
(apply #'#/stringWithUTF8String: (find-objc-class 'ns-string) (list
"Hi again."))
** Class definition
You can now define classes. For example, the following will define a
subclass of NSObject called MLKMyClass, including a native slot called
FOOS and a foreign slot (that is, an Objective-C ivar) called
FOO-COUNT (fooCount on the Objective-C side):
(define-objective-c-class ns::mlk-my-class (ns::ns-object)
((foos :initargs :foos)
(foo-count :foreign-type :int)))
Simple CFFI type specifiers are recognised by :FOREIGN-TYPE, but
please note that complex types such as struct and union types are not
yet supported.
** Method definition
You can now define Objective-C methods from Lisp for your own classes.
The following will define the Objective-C method
-(int)foo:(int)bar:(id)stuff:(id)do:(NSNumber *) on MLKMyClass
instances:
(define-objective-c-generic-function #/foo:bar:stuff:do: (self y z a b))
(define-objective-c-method #/foo:bar:stuff:do: :int
((self ns::mlk-my-class) (y :int) z a (b ns::ns-number))
(format t "Hello! Z and A are ~A and~&~A, respectively. Have a
nice day." z a)
(+ y 20))
Usage example:
OBJECTIVE-CL> (invoke (invoke (find-objc-class 'mlk-my-class) 'new)
:foo 3 :bar "abc" :stuff 3 :do 33)
Hello! Z and A are #<NS:GSC-BUFFER-STRING `abc' {8230318}> and
#<NS:GS-CACHED-INT `3' {812C5D0}>, respectively. Have a nice day.
23
Note that, at present, you absolutely have to call
DEFINE-OBJECTIVE-C-GENERIC-FUNCTION before defining methods, because
otherwise you're going to get the wrong type of generic function.
All modifiers of the standard method combination should be supported
in principle, but it's unlikey they'll work as expected. This is
planned for a future release.
&REST and &KEY arguments are not supported.
#.(disable-method-syntax)
** Struct wrappers
When an Objective-C method returns a struct, it is now wrapped in a
FOREIGN-STRUCT; likewise for unions. If you want to prevent its
automatic deallocation, you need to set its
FOREIGN-VALUE-LISP-MANAGED-P property to false. This change has been
made because it would otherwise not be safe to discard return values
of Objective-C methods, a safety which both Objective-C and Lisp
programmers have come to expect.
** COLLECT-CLASSES
The new function COLLECT-CLASSES may be used to make all classes known
to the Objective-C runtime available as CLOS classes under the NS
namespace. In an ideal world, we'd do this automatically at system
load-time, but registering such a large number of classes along with
their metaclasses takes a long time on some CL implementations (CMUCL,
SBCL), so it's the user's decision whether to use FIND-OBJC-CLASS for
each class or COLLECT-CLASSES once for now.
If you try the release out, please tell me what works and what
doesn't. If you can't even get it to compile, that is helpful
information as well.
Of course, above all, have lots of fun!
~ Matthias
_______________________________________________
objective-cl-announce mailing list
objective-cl-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/objective-cl-announce
I've released version 0.0.9 of Clouchdb. This release includes proper
support for complex keys in ad-hoc-view and invoke-view functions. It
is now possible to use s-exprs as values for :key, :start-key and
:end-key parameters.
- Peter
_______________________________________________
clouchdb-announce mailing list
clouchdb-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/clouchdb-announce
The document "Extra Numerical Types for Common Lisp" has been
submitted by Marco Antoniotti and has been accepted as CDR document 5.
According to the CDR process, this document is now in its initial
stage and will be finalized on April 9, 2008, unless withdrawn by the
author beforehand. See http://cdr.eurolisp.org/document/5/ for the
details of this document.
Pascal
--
1st European Lisp Symposium (ELS'08)
http://prog.vub.ac.be/~pcostanza/els08/
Pascal Costanza, mailto:pc@p-cos.net, http://p-cos.net
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium
_______________________________________________
cdr-announce mailing list
cdr-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cdr-announce
Hi all,
I've set up a wiki about CLFSWM here:
http://hocwp.free.fr/clfswm-wiki/
Feel free to enhance it, share your ideas or your feeling about
clfswm.
There is a page for free discution if you find it more convenient than
the mailing list.
PS: Also, the devel mailing list is the prefered way to discuss about
CLFSWM in general.
Have fun,
Philippe
--
Philippe Brochard <pbrochard(a)common-lisp.net>
http://hocwp.free.fr
_______________________________________________
clfswm-announce mailing list
clfswm-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/clfswm-announce
Hi all,
As I said in the last mail, I've done a lot of rework on CLFSWM to
change its internal structure. Now the code is much simple and there
is no more needs for the pager.
If you look at the code and want to walk throw the group tree, don't
crash your head on a recurcif algorithm. You can simply use the
with-all-* macros. Here are some examples:
--------------------------------------------------
;; Walk throw all childs
(with-all-childs (*root-group* child)
(typecase child
(xlib:window (print (xlib:wm-name child)))
(group (print (group-number child)))))
;; Walk throw all groups
(with-all-group (*root-group* group)
(print (group-number group)))
;; Walk throw all windows
(with-all-windows (*root-group* window)
(print (wm-name xlib:window)))
;; Walk throw all childs - First form is applied on windows and the
;; second on groups
(with-all-groups-windows (*root-group* child)
(print (xlib:wm-name child))
(print (group-number child)))
--------------------------------------------------
Also there is less keybinding, just press 'm' in the second mode to
open a menu.
All is not already there (like pack, resize, the mouse...) but I use
this version already so there is nothing that prevent to have it in
the CVS.
Philippe
--
Philippe Brochard <pbrochard(a)common-lisp.net>
http://hocwp.free.fr
_______________________________________________
clfswm-announce mailing list
clfswm-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/clfswm-announce
For the record, both tarballs have been updated. I could confirm that
the Excel example works again on my machine.
_______________________________________________
rdnzl-announce mailing list
rdnzl-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/rdnzl-announce
Hi all,
After some exchange with Cyrille Thouvenin I started to rewrite some
parts of clfswm.
The main major change is that there is no more references to
workspaces, all is a group. There is a root group and there childs.
A child can be a group or an application window.
Here is the old data structure:
--------------------------------------------------
(defstruct workspace number group-list)
(defstruct group x y width height window-list fullscreenp)
(defparameter *workspace-list* nil)
--------------------------------------------------
Here is the new one:
--------------------------------------------------
(defclass group name number x y w h layout window gc child ...) -simplified-
(defparameter *root-group* nil
"Root of the root - ie the root group")
(defparameter *current-root* nil
"The current fullscreen maximized child")
(defparameter *current-child* nil
"The current child with the focus")
--------------------------------------------------
Now using clfswm is like walking throw a tree of groups and windows.
Here is the current keybinding to navigate throw this tree:
Alt-Tab: circulate throw childs of *current-child* if it is a group.
Alt-Left/Right: circulate throw brother childs (ie: this is like
workspaces)
Alt-Up: select the first child.
Alt-Down: select the father of *current-child*
Alt-Enter: Make the current selected child the current root (ie
maximize it)
Alt+Shift-Enter: Make the father of current root the current root
(ie unmaximize the current child)
There is no workspace but the same effect is obtened by circulating
throw brothers childs.
The advantages:
- you can have workspace in any level.
- there is no need for the pager: _you_are_in_the_pager_!!!
You can find some screenshots here for a better idea:
http://common-lisp.net/project/clfswm/temp/
Others changes are:
* group/window coordinates are in float number between 0 (left) and
1 (right) so we can zoom them. Each group have its own window.
* each group can have its own layout:
no-layout: groups have there size, windows are maximized in the
father group
maximize-layout: groups and windows are maximized
tile-layout: groups and windows are tiled
tile-left/right/...: tile like in larswm/dwm...
... and so on - it's very easy to add a new layout.
* a group is named so you can tell where you want to map a new
window.
* Each time a new window is created each group can do something with
it (nothing, absorbe this window, copy this window, open a new
group and map the window in it, open it in the group named toto...
This is a more general process than the previous control-o (open
next window in a new workspace))
* Chained key binding. Key binding are grouped by action and there is
a little window to present possibles choices (there is no more a
lot of keys to remember).
* Currently I'm trying to have a different focus policy by groups
(I don't know if I'll integrate this by default).
Ouf, here it is :) It's a great change but the code is more simple
(for example there is no more duplicated code with the second mode
and the pager because there is no more pager :)
I'll commited all this changes. So don't be too surprised by the new
cvs content!
Have fun,
Philippe
--
Philippe Brochard <pbrochard(a)common-lisp.net>
http://hocwp.free.fr
_______________________________________________
clfswm-announce mailing list
clfswm-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/clfswm-announce
There are some significant changes in this release, see the News
section of the clouchdb web page for more information about potential
compatibility problems.
_______________________________________________
clouchdb-announce mailing list
clouchdb-announce(a)common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/clouchdb-announce