Begin main content

Emacs Programmed Completion

Subtitle - how (completing-read) stole my afternoon.

I thought I'd post my experiences since completing-read is so poorly understood based on the forum and blog posts out there. When you write an interactive Elisp command, many will know that you can easily read a value from the user. Eg: this will ask you how you feel and log it:

(defun mood(mood)
"Logs your mood"
(interactive "sHow are you feeling? ")
(message mood))

But the string form of argument to interactive is just a shortcut. You can easily supply some code instead, with a static completion list:

(defun mood(mood)
"Logs your mood"
(interactive (list (completing-read "How are you feeling? " '("happy""sad")))
(insert arg))
(message mood))

If you want something more complex though, instead of supplying a completion list, you can supply a function and that function receives as one of it's arguments the string to be completed. But it's not as simple as that function just returning a list unfortunately, and that's where people come unstuck. Your function is now embedded in the guts of the Emacs completion mechanism and as such it has to answer a whole range of questions about completions. It is reasonably well documented (if a bit terse) in the Programmed Completion section of the Emacs manual. There is a second argument which contains an optional predicate function (I'm ignoring that), but the important bit is the third argument which effectively sets the mode in which your function is being called.

In fact, your function will usually be called multiple times for each completion tab press. Essentially, your function may be asked to provide the best completion string possible, if there string is an exact match, if there are no matches, or to provide a list of possible matches. There is one final thing that will be asked, and that is the substring your completion is for. So in the example you're about to see I am completing directories, so the completion being offered at any given time only applies to the part after the last forward slash.

An example is as good as a thousand or so words, so here's my interactive function cdsrc. Basically it's a convenience function to quickly change directory into one of my client projects, which may be one or two levels deep in my main company source directory. The hard work is done by cdsrc-completions and you can see in the (cond) at the end where it responds to the different modes discussed briefly above and in detail in Programmed Completion.

(setq cdsrc-completions-prefix "~/src/_Pumptheory/")

(defun safe-fill-common-string-prefix (s1 s2)
(if (and s1 s2)
(fill-common-string-prefix s1 s2) nil))

(defun cdsrc-completions (str pred mode)
(let ((dirname (replace-regexp-in-string "[^/]+$""" str))
(filename (replace-regexp-in-string "^.*/""" str))
(slashpos (or (string-match "/.*$" str) 0)))

(let ((completions (all-completions filename (delq nil
(mapcar (lambda (x)
(and (file-directory-p (concat cdsrc-completions-prefix dirname x))
(not (string-match "^\\." x))
(concat x "/")))
(directory-files (concat cdsrc-completions-prefix dirname)))))))

;; return differently based on what mode we were called in ;; see http://www.gnu.org/software/emacs/manual/html_node/elisp/Programmed-Completion.html
(cond
((not mode) (cond
((and (eq 0 (length completions)) (eq 0 (length filename))) 't);; in our case, only report exact match when no nested dirs left
((> (length completions) 1)
(concat dirname (or (reduce 'safe-fill-common-string-prefix completions) filename)))
((eq (length completions) 1)
(concat dirname (car completions)))
('t nil)))

((eq mode 't) completions)

((eq mode 'lambda) (member (concat filename "/") completions))

('t (cons (list 'boundaries slashpos) (length filename))));; let completion know our completions only apply after the last / )))

(defun cdsrc (path)
"Changes to a subdir of cdsrc-completions-prefix in the current active interactive shell buffer"
(interactive (list
(let ((completion-ignore-case 't))
(completing-read
(concat "Enter subdir of " cdsrc-completions-prefix ": ")
'cdsrc-completions))))
(let ((path2 (concat cdsrc-completions-prefix path)))
(cd path2)
(if (string-match mode-name "Shell")
(progn (end-of-buffer)
(comint-kill-input)
(comint-send-string (current-buffer) (concat "cd " path2))
(comint-send-input)))))

This is out of my emacs.d, specifically aufflick-shell-hooks.el.

05:36 AM, 21 Feb 2012 by Mark Aufflick Permalink

BlackMen

I am completing directories, so the completion being offered at any given time only applies to the part after the last forward slash.loft conversions wandsworth

by Unregistered Visitor on 01/06/15

jack13

Spinna has made it simple for you by compiling his short list of classic Moog material from the late-60’s. Here are some of the choice highlights from his list courtesy of MTV Hive: https://www.rebelmouse.com/penguinmethodreviews/

by Unregistered Visitor on 01/06/15

chrisjordanphotography

Adonis Golden Ratio: Kyle Leon Reveals His Ultra Clever And Scientifically Proven Method For Getting Ridiculously Ripped And Achieving Ideal Male Body Proportions Women Can't Resist... chrisjordanphotography

by Unregistered Visitor on 01/07/15

jack13

This is a superb post I seen because of offer it. It is truly what I needed to see trust in future you will proceed for imparting such a magnificent post. ” https://www.rebelmouse.com/dramamethodreview/

by Unregistered Visitor on 01/07/15

BlackMen

I am completing directories, so the completion being offered at any given time only applies to the part after the last forward slash.http://askmed.com/doctor/1837798-dr-yevgeniya-i-karmazin-md/summary/

by Unregistered Visitor on 01/07/15

jack13

I wish to show thanks to you just for bailing me out of this particular trouble.As a result of checking through the the net and meeting techniques that were not productive, I was thinking my life was done. Awesome service

by Unregistered Visitor on 01/07/15

bubblegum casting

This means, lengthen your neck, and lean your head forward slightly.bubblegum casting

by Unregistered Visitor on 01/08/15

davidjohn

Thank you for posting such a great article! I found your website perfect for my needs. It contains wonderful and helpful posts. Keep up the good work! kayla itsines review

by Unregistered Visitor on 01/08/15

Rebel Mouse

Excellent read, Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style.Rebel Mouse

by Unregistered Visitor on 01/08/15

votive candles

Astonishing features of floral water is very soothing in summer and it can also be used for personal care. votive candles

by Unregistered Visitor on 01/08/15

girlsdoporn

main company source directory. The hard work is done by cdsrc-completions and you can see in the (cond) at the end where it responds to the different modes discussed briefly above and in detail girlsdoporn

by Unregistered Visitor on 01/08/15

rozi

Good to become visiting your weblog again, it has been months for me. Nicely this article that i've been waited for so long. I will need this post to total my assignment in the college, and it has exact same topic together with your write-up. Thanks, good share.πανινα παπουτσια

by Unregistered Visitor on 01/09/15

asdasd

Great post I would like to thank you for the efforts you have made in writing this interesting and knowledgeable article. http://textyourexbackforum.com

by Unregistered Visitor on 01/09/15

bubblegum

That is the excellent mindset, nonetheless is just not help to make every sence whatsoever preaching about that mather. bubblegum casting

by Unregistered Visitor on 01/09/15

davidjohn

You have a real ability for writing unique content. I like how you think and the way you represent your views in this article. I agree with your way of thinking. Thank you for sharing.bottom exercises

by Unregistered Visitor on 01/10/15

BlackMen

I am completing directories, so the completion being offered at any given time only applies to the part after the last forward slash.PTC Sites

by Unregistered Visitor on 01/10/15

I read that Post and got it fine and informative.

I read that Post and got it fine and informative. http://no.binary-trade.com/text.php?id=67&sid=26

by Unregistered Visitor on 01/11/15

asdasd

No doubt this is an excellent post I got a lot of knowledge after reading good luck. Theme of blog is excellent there is almost everything to read, Brilliant post. https://rebelmouse.com/mikewaldenacnenomorereview

by Unregistered Visitor on 01/11/15

girlsdoporn

Yet no one at the time thought this was remotely possible. What appears, in retrospect, an inevitable success story of 1960s activism was anything but. girlsdoporn

by Unregistered Visitor on 01/11/15

Davidjohn

I’d absolutely love to write some material for your blog in exchange for a link back to mine. Please send me an email if interested....http://www.yelp.com/biz/silver-olas-murrieta-2

by Unregistered Visitor on 01/12/15

bubblegum casting

Absolute power perverted their mind as it will always pervert the minds of all absolute rulers.bubblegum casting

by Unregistered Visitor on 01/13/15

katsuyo

More and more people are choosing home health care as an alternative to entering assisted living facilities katsuyo

by Unregistered Visitor on 01/13/15

william

This was a really great contest and hopefully I can attend the next one. It was alot of fun and I really enjoyed myself.. Clash of clans hack tool

by Unregistered Visitor on 01/13/15

bubblegum casting

that is the substring your completion is for. So in the example you're about to see I am completing directories, so the completion being offered at any given time only applies to the part after the last forward slash. bubblegum casting

by Unregistered Visitor on 01/13/15

jualjamtangankwsupermurah

thanks for his articel can menembah my insight on the internet, and for anyone who is a fan of watches Please visit the following web http://jualjamtangankwsupermurah.com/Jam Tangan Online Murah jam tangan original http://Jual Jam Tangan Kw/Jam Tangan Online Murah jam tangan original

by Unregistered Visitor on 01/14/15

jam tangan online

I really love to read this post and I am glad to find your distinguished way of writing the post. Thanks and Regards http://jamtanganonline.com

by Unregistered Visitor on 01/14/15

suci

https://http://www.jamtanganwanita.kaffah.biz/ http://jam-tanganonline.org http://jamtangan-wanita.org http://grosirjamtanganonline.com http://www.penjualanjamtanganonline.com

by Unregistered Visitor on 01/14/15

leni

Thanks so much for writing all of the excellent information! http://daftarhargahargamobil.blogspot.com http://harga-ikanhias.blogspot.com http://bursamobilkita.blogspot.com http://daftarhargahargamotor.blogspot.com http://koleksibatu-akik.blogspot.com http://jualjamtangandijakarta.blogdetik.com

by Unregistered Visitor on 01/14/15

anton

Nice information, valuable and excellent design, as share good stuff with good ideas and concepts https://jualjamtangankwsupermurah.wordpress.com http://pusatjamtangandijakarta.wordpress.com http://carijammurah.wordpress.com http://jualjamtanganonlinemurah.wordpress.com http://jamtanganwanitamurah.weebly.com http://pusatjamtanganpria.weebly.com http://tokojamtanganfashiondijakartaterbaru.blogspot.com "http://tokojamtanganfashionmurahdijakarta.blogspot.com

by Unregistered Visitor on 01/14/15

deki

http://independencescience.co/houses/jual-jam-tangan-dijakarta/ http://gulfsite.info/houses/cari-jam-tangan-dijakarta-/ http://17cars.info/houses/pusat-jam-tangan-online-2/ http://6g66.info/houses/jual-jam-tangan-pria-wanita/ http://www.goodprophets.info/houses/suplier-jam-tangan-dijakarta-/ http://heimatfreunde.info/houses/order-jam-tangan-murah-dijakarta/ http://ixospli.info/houses/jual-jam-tangan-kw-super/

by Unregistered Visitor on 01/14/15

vietnam tour

Great Article it its really informative and innovative keep us posted with new updates. its was really valuable. thanks a lot. vietnam tour

by Unregistered Visitor on 01/14/15

IMTI

We have ever arrive across on this subject. Really Wonderful. I’m also an expert in this topic.. vpnfree

by Unregistered Visitor on 01/15/15

bubblegum casting

Essentially, your function may be asked to provide the best completion string possible, if there string is an exact match, if there are no matches, or to provide a list of possible matches. There is one final thing that will be asked, and that is the substring your completion is for. So in the example you're about to see I am completing directories, so the completion being offered at any given time only applies to the part after the last forward slash. bubblegum casting

by Unregistered Visitor on 01/15/15

great

We are really grateful for your blog post. You will find a lot of approaches after visiting your post. Great work.Eye Serum

by Unregistered Visitor on 01/15/15

Davidjohn

I just got to this amazing site not long ago. I was actually captured with the piece of resources you have got here. Big thumbs up for making such wonderful blog page! no credit check loan

by Unregistered Visitor on 01/15/15

Halong bay cruise

You may post on the quotes for the blog. You could tell how it’s brand new. Your blog thoughts will springboard your participates. Halong bay cruise

by Unregistered Visitor on 01/15/15

SDASDASD

This is highly informatics, crisp and clear. I think that everything has been described in systematic manner so that reader could get maximum information and learn many things. money

by Unregistered Visitor on 01/16/15

Silver Jewellery

My own teachers blot produced myself beneficials the boost price part bonuss pertaining to haste. My husband furthermore i realized in the affordable that they can would repudiate qualm myself. Silver Jewellery

by Unregistered Visitor on 01/16/15

electronic recycling Omaha

You have made an extraordinary showing. I will most likely burrow it and generally suggest to my companions. I am sure they will be profited from this site. electronic recycling Omaha

by ahmed raza on 01/16/15

AbbyBrink

Many new ways of education are introduced which are more effective. New definitions of students and teachers are mentioned. Multiple means of education are used now a days which are not only confined to the classes like for essay is available. I used to cooperate with professional paper writing service . Now, I think, writing will be much easier.

by Unregistered Visitor on 01/17/15

electrochlor salt cell

I was actually going through the nice helpful tips from the blog and I put respect to the writer of this post, enjoying the smart way you write articles in this -electrochlor salt cell

by Unregistered Visitor on 01/17/15

franklin7

I wanted to thank you for this excellent read!! I definitely loved every little bit of it. spiritual gifts

by Unregistered Visitor on 01/20/15

william

Hello, I have browsed most of your posts. This post is probably where I got the most useful information for my research. Thanks for posting, maybe we can see more on this. Are you aware of any other websites on this subject. Covet Fashion Cheats

by Unregistered Visitor on 01/20/15

william

including reasonable comments here... 8 Ball pool cheats

by Unregistered Visitor on 01/20/15

student help

here are many students who are worried about writing effective papers and deadlines for submitting their essay papers are very short. They are in trouble what to do? If you are one of them then you'll batter understand this situation. Now kick away all worries because now you can hire professional writers to ask custom-paper-writing.org on my behalf and within the deadlines. I assure you this is easiest way of getting good grades and I hope you guys will find it effective :)

by Unregistered Visitor on 01/20/15

tokotaswanitabranded

thank you so much for writing the article, this can add insight and knowledge to me. http://tokotaswanitabranded.com tas wanita branded TAS WANITA TERBARU TAS BRANDED TERBARU

by Unregistered Visitor on 01/20/15

tas wanita branded

I am completing directories, so the completion being offered at any given time only applies to the part after the last forward slash.TAS WANITA TERBARU TAS BRANDED TERBARU CLICK HERE TOKO TAS WANITA TAS WANITA BRANDED

by Unregistered Visitor on 01/20/15

jack13

savored every little bit of it and I have you anine bing bookmarked to check out new stuff you post.. phone answering service for business

by Unregistered Visitor on 01/21/15

thank you

Anda mencari produk Mebel Jati dengan desain minimalis ataupun klasik asli mebel jepara dengan harga murah. kami menyediakan berbagai tipe atau model produk Mebel Jati Jepara terutama dengan menggunakan material kayu jati. Disni saya menjual produk produk mebel mulai dari kursi tamu minimalis meja makan jati tempat tidur dan sebagainya. Untuk indormasi lebih lanjut anda bisa langsung menuju katalog website kami. Produk produk yang kami tawarkan mempunyai kualitas tinggi dan kami menawarkannya dengan harga yang cukup terjangkau, tentunya kualitas produk tersebut akan kami jaga. Produk Mebel Jati Minimalis selalu banyak diminati oleh banyak konsumen baik itu dari dalam maupundari luar negri. Banyak sekali turis turis asing berbondong bondong ke jepara dengan tujuan yang sama seperti anda yaitu untuk mencari produk Kursi Tamu Jati. Kami Mebel Jati sebagai produksen furniture memberikan anda kemudahan untuk berbelanja produk furniture jepara dengan aman melalui transaksi online, kami menyediakan berbagai model di dalam katalog website kami. Anda cukup duduk santai di ruamh, kami kerjakan produk pesanan anda dan tentunya kami akan memberikan garansi jika produk tidak sampai ke tangan anda ataupun produk Mebel Jati yang anda pesan tidak sesuai dengan pesanan. Setiap produk kami, kami proses dengan sangat terkontrol, baik itu dalam hal pemilihan kayu, proses kontruksi, pahatan ukir hingga proses finishing. Oleh karena itu kami sebagai perusahaan Mebel Jati selalu mengutamakan kualitas produk serta meningkatkan pelayanan yang ramah kepada anda. Jepara memang dikenal sudah sejak lama sebagai kota industri Mebel Jati Jepara terbesar di asia hingga dunia. Kualitas produk dari jepara sudah banyak di akui oleh beberapa negara. Kota Jepara sendiri selalu menjadi langganan aktif dalam setiap pengadaan pameran furniture Mebel Jati. Banyak sekali produk produk yang di tawarkan disana, baik itu dengan model minimalis ataupun klasik. Salah satunya yang menjadi produk unggulan mebel jepara yaitu Kursi Tamu Jati yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jepara yang sudah berkembang hingga sekarang. Anda dapat memilih produk produk furniture tersebut diatas tadi di katalog produk kami tersebut disini yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jati Jepara banyak sekali yang dapat anda pilih. Untuk bertransaksi dalam pembelian yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jati secara online dengan kami, anda tidak perlu ragu, karena perusahaan kami sudah diakui dan mempunyai ijin kerja yang bersangkutan dengan hukum. Jadi apabila anda ada keluhan saat bertransaksi Mebel Jati dengan kami, jaminan keamanan 100% di toko kami Mebel Jati Jepara produk produk kami berkualitas karena dikerjakan oleh tenaga mebel yang sudah berpengalaman dibidangnya. Untuk katalog produk anda bisa klik link berikut Gambar Tempat Tidur Jati Jepara kami sudah mulai membuka pemesanan dengan anda cukup dengan santai diruamh, anda tinggal menyodorkan bagaimana produk mebel yang anda inginkan, anda dp maka kami akan kerjakan, untuk lama proses tergantung tingkat kerumitan produk pesanan, itu smua bisasa kami tawarkan secara Tips Sebelum Membeli Furniture Jati Diantaranya anda dapat memesan produk yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Furniture Jati Jepara Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Meja Makan Jati dengan harga yang sesuai dengan kantong anda. Mebel Jepara memang sedang maraknya disaat perkembangan yang semakin canggih, tetapi anda jangan mudah tertipu dengan tergiur harga yang jauh dibawah harga normal. Produk unggulan mebel jepara seperti Gebyok Jati rata rata dijual dengan harga standart yaitu di kisaran Rp. 7.000.000, dan untuk produk Tempat Tidur Jati ada di kisaran harga berkisar antara Rp. 3.000.000 hingga Rp. 30.000.000 tergantung tingkat kesulitan dan bahan material seperti yang saya terangkan diatas. Tersedia model kamar set dengan type Kamar Set Jati Jepara yang anda bisa lihat disini. Kami menyediakan layanan online untuk pemesanan yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jati dengan sistem online. yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Meja Makan Jati juga tersedia di toko kami. Banyak pilihan produk produk mebel yang ada di toko kami, diantaranya yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Kursi Tamu Jati dengan harga yang bervariasi dan tentunya sangat kompetitif. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jati Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Minimalis Jati yang sangat cantik dengan keaslian ukiran khas mebel jepara yang terukir rapih dan halus di setip sudutnya. Ada juga produk unggulan lain seperti tempat tidur, meja makan, set meja makan dan banyak lainnya. Oleh karena itu mulai dari lima tahun terakhir kami sudah mengembangkan untuk pembelian produk furniture dengan menawarkannya di Mebel Jati Jepara

by Unregistered Visitor on 01/21/15

Clifford high School Online

Really appreciate this wonderful post that you have provided for us. Accredited GED Online

by Unregistered Visitor on 01/21/15

custom-paper-writing

There are many students who are worried about writing effective papers and deadlines for submitting their essay papers are very short. They are in trouble what to do? If you are one of them then you'll batter understand this situation. Now kick away all worries because now you can hire professional writers to ask custom-paper-writing.org on my behalf and within the deadlines. I assure you this is easiest way of getting good grades and I hope you guys will find it effective :)

by Unregistered Visitor on 01/21/15

william

Thanks for your post. I’ve been thinking about writing a very comparable post over the last couple of weeks, I’ll probably keep it short and sweet and link to this instead if thats cool. Thanks. Zynga poker Cheats

by Unregistered Visitor on 01/21/15

erhgerherh

Here at Toronto Secure Locks we offer an unbeatable fast Professional Locksmith service, so if you’re locked out, need your locks changing or replacing or even need a safe opening we can help any time of day, we also provide an Access control, CCTV http://localcalgarylocksmith.com/ http://0544342878.com http://mysaite.ru

by Unregistered Visitor on 01/21/15

sdfgswagd

Here at Toronto Secure Locks we offer an unbeatable fast Professional Locksmith service, so if you’re locked out, need your locks changing or replacing or even need a safe opening we can help any time of day, we also provide an Access control, CCTV http://localcalgarylocksmith.com/ http://0544342878.com http://mysaite.ru

by Unregistered Visitor on 01/21/15

imti

he businesses which provide these vendors, will provide you with non-automated or robot likes and supply you with genuine Instagram likes. διαιτα

by Unregistered Visitor on 01/22/15

jack13

Couldn't be written any better. Reading this post reminds me of my old room mate! He always kept talking about this. I will forward this article to him. Pretty sure he will have a good read. Thanks for sharing! wireframe app

by Unregistered Visitor on 01/22/15

BlackMen

There is a second argument which contains an optional predicate function (I'm ignoring that), but the important bit is the third argument which effectively sets the mode in which your function is being called.loft conversions north London

by Unregistered Visitor on 01/22/15

Rachel

Olympic Snowboarding 2008 finds the country in a good mammoth find it difficult to thwart any emerging dominance of The japanese and Cuba meant for baseball supremacy everywhere. The XXIXth Olympiad within the Modern Era within the Olympic Snowboarding 2008 Matches may let the curtain fall over the game for baseball. www.scorespro.com

by Unregistered Visitor on 01/23/15

jack13

Her website is very nice and easy to understand gan, thank ya and do not be bored bored to post other interesting articles.. wood cider

by Unregistered Visitor on 01/24/15

imti

e it responds to the different modes discussed briefly above and in detail . car from delhi to jaipur

by Unregistered Visitor on 01/24/15

jack13

I have you anine bing bookmarked to check out new stuff you post. king size race car bed

by Unregistered Visitor on 01/24/15

jack13

You could have supplied high Quality versions of those map / conflict images. help desk email

by Unregistered Visitor on 01/26/15

amazing post

De kamers hebben een comfortabel zitgedeelte. Het prijs van een kamer inclusief ontbijtbuffet. chambre d hotes in Lot Frankrijk

by Unregistered Visitor on 01/26/15

william

Excellent .. Amazing .. I’ll bookmark your blog and take the feeds also…I’m happy to find so many useful info here in the post, we need work out more techniques in this regard, thanks for sharing. amazing news

by Unregistered Visitor on 01/26/15

ssacv

Impressive web site, Distinguished feedback that I can tackle. Im moving forward and may apply to my current job as a pet sitter, which is very enjoyable, but I need to additional expand. Regards. masina de tuns iarba Husqvarna

by Unregistered Visitor on 01/26/15

jack13

These material can be blogs, web material, or other types of published material. nys uncontested divorce forms

by Unregistered Visitor on 01/27/15

Stanley High School Online

Thank you for posting such a great article! High School Diploma Online

by Unregistered Visitor on 01/27/15

jack13

As the exposure measures have not been defined, the isolation index is meaningless.. schuhe online kaufen

by Unregistered Visitor on 01/27/15

I really

Very useful post. This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. Really its great article. Keep it up. how to get any girl you want to like you

by Unregistered Visitor on 01/27/15

Add comment