From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andreas =?UTF-8?Q?R=C3=B6hler?= Newsgroups: gmane.emacs.bugs Subject: bug#20732: in-string-p fails Date: Fri, 05 Jun 2015 08:01:11 +0200 Message-ID: <55713B27.3040407@easy-emacs.de> References: <55701A18.6050503@easy-emacs.de> <55702162.30808@yandex.ru> <55703B8E.30804@easy-emacs.de> <5570BDC8.1010800@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1433484149 10681 80.91.229.3 (5 Jun 2015 06:02:29 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 5 Jun 2015 06:02:29 +0000 (UTC) To: Dmitry Gutov , 20732-done@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jun 05 08:02:17 2015 Return-path: Envelope-to: geb-bug-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 1Z0khm-0008Dt-6C for geb-bug-gnu-emacs@m.gmane.org; Fri, 05 Jun 2015 08:02:10 +0200 Original-Received: from localhost ([::1]:45362 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0khl-00052x-IH for geb-bug-gnu-emacs@m.gmane.org; Fri, 05 Jun 2015 02:02:09 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56644) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0khi-00051t-3O for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 02:02:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0khe-0000td-UN for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 02:02:06 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:59230) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0khe-0000tV-S7 for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 02:02:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Z0khe-0007zr-FK for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 02:02:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Andreas =?UTF-8?Q?R=C3=B6hler?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 05 Jun 2015 06:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20732 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 20732-done@debbugs.gnu.org id=D20732.143348408230692 (code D ref 20732); Fri, 05 Jun 2015 06:02:02 +0000 Original-Received: (at 20732-done) by debbugs.gnu.org; 5 Jun 2015 06:01:22 +0000 Original-Received: from localhost ([127.0.0.1]:40972 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0kgz-0007yw-5p for submit@debbugs.gnu.org; Fri, 05 Jun 2015 02:01:21 -0400 Original-Received: from mout.kundenserver.de ([212.227.17.13]:60931) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0kgx-0007yk-1F for 20732-done@debbugs.gnu.org; Fri, 05 Jun 2015 02:01:19 -0400 Original-Received: from [192.168.178.31] ([77.12.24.28]) by mrelayeu.kundenserver.de (mreue103) with ESMTPSA (Nemesis) id 0MQtv4-1YeEQ308oo-00UNRk; Fri, 05 Jun 2015 08:01:13 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 In-Reply-To: <5570BDC8.1010800@yandex.ru> X-Provags-ID: V03:K0:dcWTzA50iJUF+QyzwgnQYCpb1ALVz69fROKwriq74LMD6v7K+CT GK/w4eAy1K/uobW6ziryYD65ALCl7fIfX//YzbRYH0iDRP9Vx9XM5zrgQ/8Hwtx/iR7EttY mZBy9e7f+n6+h1OGwBSE12XXEiRAnANXRkAuOu7zzhtmt9hGTwT60/BGyFC9KcgY1TQjHxJ UT7lt4fOw1rpKJgNVnlAw== X-UI-Out-Filterresults: notjunk:1;V01:K0:p49Z4ekbxY4=:dE6DQXAXyZI3K166dhyzdf Ie5qB3/HA5b56l3Iz+ycPJ+FPm4dTHwhacOacPBudFHd4XvdyRJpm/CJUG6UK5DBe0pjqIrUs QdF0I4Qpkw8yR/lnlD5KC3BwnrE2MYvJ14tkWQmq6D5k9tLtgwFratrjPFtaM1fxLxX9+oymA AZ1zsEb+yRz3r7ASeoDhYB0WppJfBaJ7GGiCAIo1crikSrYjGCj4fgcK9Av32c4BDMnRat+j5 d2tArAWiFphmVFdc5ifg3lb2chcNObXAj0so73vMfe0/RC8tyaWU6lI+wiG5AwJzDeTa8L4HT EMXg8jsCSBHGExKR+k1qWaDsPqeam/S5X6DZZM46mmHTqzGAN+PdcqVCUhQ9K2EEIK2LD1OdB HaaJphrwD9QmB3FlUZN9uFASBo6x5TCn9Vy1vvRGQZUeFRE1J+CbreBUgy3wBsbR7DvGq4SlA ZheubuCEj2xkvkzDS+o4bg48H6qP93FS1LcXurSGgxLbN1CzE16pxv6Z+1awoUKYLKvW71/Az 2x6amxep8bAQ9U8ndTbjXuThhDnOKJDbzPkNbz/tcZVD5wT0rML5kWprSlz/11cBu6uuPE6NK QMOEIMlGf7SPVPUZ3zUUwkwM9sWIQcUbp4vcRmUA+IJ/zcNqv8EFFD57KP75DM8qwkthcz3ZB UfDN5GHxzL/ipd2mSNvhjQCpp8HtMGqt8plhcVChN37O4ZA== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:103587 Archived-At: Am 04.06.2015 um 23:06 schrieb Dmitry Gutov: > On 06/04/2015 02:50 PM, Andreas Röhler wrote: > >> In question slow is better than false. > > Then (setq open-paren-in-column-0-is-defun-start nil) in your Emacs > config. > >> There is no way to know reliably if inside a string than scanning the >> whole buffer. All other is woodoo. > > There's a whole package dedicated to doing is faster and in easier > fashion: lisp/emacs-lisp/syntax.el. > > You're welcome to suggest improvements that don't sacrifice > performance to this extent. > > Why not have two functions dealing with different circumstances. - in-string-p-maybe, which might guess first and fast, re-fine afterwards. - a precise in-string-p running parse-partial-sexp on widened buffer. (defun in-string-p-precise () "Returns the character which delimits the string if inside, nil otherwise. " (save-restriction (widen) (ignore-errors (nth 3 (parse-partial-sexp (point-min) (point)))))) Maybe also return t if at string-start pos already: (eq (char-syntax (char-after)) 34) When not called from complex environment (also precise): (defun ar-in-string-p () "Return position, if inside or at opening delimiter. Otherwise return nil. " (interactive) (save-restriction (widen) (let* ((pps (parse-partial-sexp (point-min) (point))) (erg (and (nth 3 pps) (nth 8 pps))) (la (unless erg (when (eq (char-syntax (char-after)) 34) (point))))) (setq erg (or erg la)) (when (interactive-p) (message "%s" erg)) erg)))