From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: safe way to add contents to a file ? Date: Fri, 20 Dec 2019 11:00:40 -0500 Message-ID: References: <0FE61EAF-672C-4348-8107-F4C3D176FCF4@traduction-libre.org> <87k16ua2qm.fsf@telefonica.net> <2C8281A0-290F-4505-8495-4992E8E0B82B@traduction-libre.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="148897"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Dec 20 17:01:19 2019 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iiKiN-000cTg-3n for geh-help-gnu-emacs@m.gmane.org; Fri, 20 Dec 2019 17:01:19 +0100 Original-Received: from localhost ([::1]:58342 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iiKiL-0000qr-Az for geh-help-gnu-emacs@m.gmane.org; Fri, 20 Dec 2019 11:01:17 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54414) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iiKi5-0000p1-1n for help-gnu-emacs@gnu.org; Fri, 20 Dec 2019 11:01:02 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iiKhu-0003U7-8K for help-gnu-emacs@gnu.org; Fri, 20 Dec 2019 11:00:56 -0500 Original-Received: from 195-159-176-226.customer.powertech.no ([195.159.176.226]:35550 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iiKht-0003OX-Ve for help-gnu-emacs@gnu.org; Fri, 20 Dec 2019 11:00:50 -0500 Original-Received: from list by blaine.gmane.org with local (Exim 4.89) (envelope-from ) id 1iiKhq-000bt9-Ku for help-gnu-emacs@gnu.org; Fri, 20 Dec 2019 17:00:46 +0100 X-Injected-Via-Gmane: http://gmane.org/ Cancel-Lock: sha1:NggdznoazdteKgGLYAq58PsSMAQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 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.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:122076 Archived-At: > (setq myText "bla") > (setq myMarker "") > (setq myFile "/path/to/test.xml") Being at top-level these aren't just setting the vars but defining them, so should use `defvar` or `defconst`. > (defun myInsert (myText myMarker myFile) > (save-current-buffer > (set-buffer (find-file-noselect myFile)) `with-current-buffer` does the same, but shorter ;-) > (goto-char (point-min)) > (goto-char (- (search-forward myMarker) (length myMarker))) If the search fails, this will signal a "low-level" error, and it's often useful to replace it with some other behavior (e.g. an error message which the user is more likely to understand, or some other behavior), so it's more idiomatic to do something like: (goto-char (point-min)) (if (not (search-forward myMarker nil t)) (user-error "Can't find foo bar in your fine file") (goto-char (match-beginning 0)) > Are there things I can do to make that code more idiomatic? Can't think of anything else. Stefan