From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Re: same data appears twice, interactive then function body Date: Fri, 18 Dec 2020 21:09:43 +0300 Message-ID: References: <87y2hya6i1.fsf@zoho.eu> <87tusm9z4z.fsf@zoho.eu> <87wnxi8j6h.fsf@zoho.eu> <87k0ti8gzy.fsf@zoho.eu> <87bler1849.fsf@zoho.eu> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="12930"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.0 (3d08634) (2020-11-07) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 18 19:11:31 2020 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kqKDy-0003ES-Be for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 18 Dec 2020 19:11:30 +0100 Original-Received: from localhost ([::1]:49588 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kqKDx-0002yN-Dk for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 18 Dec 2020 13:11:29 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48176) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kqKDa-0002yF-Vl for help-gnu-emacs@gnu.org; Fri, 18 Dec 2020 13:11:06 -0500 Original-Received: from stw1.rcdrun.com ([217.170.207.13]:60853) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kqKDY-00054D-BW for help-gnu-emacs@gnu.org; Fri, 18 Dec 2020 13:11:06 -0500 Original-Received: from localhost ([::ffff:41.202.241.37]) (AUTH: PLAIN securesender, TLS: TLS1.2,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 000000000001E537.000000005FDCF0B1.00002BB9; Fri, 18 Dec 2020 11:10:57 -0700 Content-Disposition: inline In-Reply-To: <87bler1849.fsf@zoho.eu> Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:126516 Archived-At: * Emanuel Berg via Users list for the GNU Emacs text editor [2020-12-18 17:51]: > Technologist Adams was kind enough to write me a private mail > telling me my function `insert-string-centered' didn't work > when used from Lisp. Well, that's what I think anyway, since > I received it in my mailbox with no reference in the headers > to either gmane.emacs.help or help-gnu-emacs@gnu.org, and it > doesn't seem to be anywhere else to be found, either! > > Probably, he wanted to save me from being all embarrassed in > from of everyone. Well, that was kind! But no worries! > Actually, and to be frank about it, this isn't the first > mistake I ever ever made as a programmer... > > Anyway here is a new version, that God willing will work even > under such severe circumstances... > (defun insert-string-centered (str &optional width) (interactive (list (read-from-minibuffer "string: ") (string-to-number (read-from-minibuffer "width [window]: " )) )) (let*((span (if (and width (< 0 width)) width (window-text-width))) (str-len (length str)) (pad (- (/ (- span str-len) 2) (if (zerop (mod str-len 2)) 1 0) )) (pad-str (make-string pad ?\s)) ) (insert pad-str str) )) (defalias 'isc #'insert-string-centered) Look: (insert-string-centered "Hello") Hello Do you see how it will not center text as it will be influenced by the cursor position? It should not be influenced by cursor position. Question is what means "centered". Does it mean centered to the width of text or to the width of the window. There is function (current-fill-column) that will tell what is the width of the text. Maybe this is what user expects to be centered. This one here is using `move-to-column' so because of that it is not influenced by the cursor position. (defun insert-centered-text (text &optional width) (interactive "MText: ") (let* ((width (or width (window-text-width))) (length (length (string-trim text))) (pos (/ (- width length) 2))) (move-to-column pos t) (insert text) (insert "\n"))) And this one here will consider (current-fill-column) to be the authoritative width. (defun insert-centered-text (text &optional width) (interactive "MText: ") (let* ((width (or width (current-fill-column))) (length (length (string-trim text))) (pos (/ (- width length) 2))) (move-to-column pos t) (insert text) (insert "\n")))