From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Marcin Borkowski Newsgroups: gmane.emacs.help Subject: Re: How to handle default value in read-string? Date: Wed, 19 Aug 2015 23:15:46 +0200 Message-ID: <87bne36ku5.fsf@mbork.pl> References: <87k2tc9jeu.fsf@mbork.pl> <93600d92-2698-483a-8c1b-f1333363f541@default> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1440098267 30614 80.91.229.3 (20 Aug 2015 19:17:47 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 20 Aug 2015 19:17:47 +0000 (UTC) To: Help Gnu Emacs mailing list Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Thu Aug 20 21:17:40 2015 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZSVLF-000078-Hy for geh-help-gnu-emacs@m.gmane.org; Thu, 20 Aug 2015 21:17:37 +0200 Original-Received: from localhost ([::1]:55016 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSAib-0004Hn-5e for geh-help-gnu-emacs@m.gmane.org; Wed, 19 Aug 2015 17:16:21 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42021) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSAiF-0004Em-NI for help-gnu-emacs@gnu.org; Wed, 19 Aug 2015 17:16:00 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZSAiC-0001LM-Fp for help-gnu-emacs@gnu.org; Wed, 19 Aug 2015 17:15:59 -0400 Original-Received: from mail.mojserwer.eu ([2a01:5e00:2:52::8]:45035) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSAiC-0001Ke-6p for help-gnu-emacs@gnu.org; Wed, 19 Aug 2015 17:15:56 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by mail.mojserwer.eu (Postfix) with ESMTP id 8E59A5F2044 for ; Wed, 19 Aug 2015 23:15:54 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mail.mojserwer.eu Original-Received: from mail.mojserwer.eu ([127.0.0.1]) by localhost (mail.mojserwer.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id k8T8OFhyRNta for ; Wed, 19 Aug 2015 23:15:52 +0200 (CEST) Original-Received: from localhost (103-115.echostar.pl [213.156.103.115]) by mail.mojserwer.eu (Postfix) with ESMTPSA id 65CD05F2043 for ; Wed, 19 Aug 2015 23:15:52 +0200 (CEST) In-reply-to: <93600d92-2698-483a-8c1b-f1333363f541@default> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a01:5e00:2:52::8 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:106715 Archived-At: On 2015-08-04, at 01:51, Drew Adams wrote: >> I'd like read-string to somehow indicate the default value. A natural >> idea is to include it in the prompt, for example having a prompt like >> >> (format "Foo (%s): " default) >> >> However, Icicles' version of read-string already does exactly that, so >> for Icicles users this would be superfluous. >> >> So here's the question: is there a better way than just have a prompt of >> >> (if icicle-mode (don't-include-default) (do-include-default))? > > That's OK. Or wrap the `read-string' call in: > > (let ((icicle-default-value nil)) ...) > > A nil value of `icicle-default-value' tells Icicles not to put the > default value in the prompt. Then you can add it to the prompt > explicitly, so it will be there with and without Icicle mode: > > (defun foo (strg) > (interactive > (let ((icicle-default-value nil)) > (list (read-string "String (default my-default): " > nil nil "my-default"))))) OK, so I sat to this today, and didn't manage to get it to work. Here's my function: --8<---------------cut here---------------start------------->8--- (defun my-read-string (prompt &optional initial-input history default-value inherit-input-method) "A replacement for `read-string', displaying the default. Also, not displaying it twice should the user use Icicles." (let ((icicle-default-value nil) (prompt-with-default (progn (string-match "\\(: \\)?$" prompt) (replace-match (format " (%s)\\1" default-value) t nil prompt)))) (read-string prompt-with-default initial-input history default-value inherit-input-method))) --8<---------------cut here---------------end--------------->8--- If I do M-: (my-read-string "foo: " nil nil "bar") with Icicles off, everything is fine. If Icicles are on, however, this is what I get: foo (bar) (bar): -!- Setting icicle-default-value to nil globally doesn't help, either. My Icicles version is --8<---------------cut here---------------start------------->8--- ;; Version: 2015.04.03 ;; Package-Requires: () ;; Last-Updated: Fri Apr 3 09:12:40 2015 (-0700) ;; By: dradams ;; Update #: 23650 --8<---------------cut here---------------end--------------->8--- What am I doing wrong? -- Marcin Borkowski http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski Faculty of Mathematics and Computer Science Adam Mickiewicz University