unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Svend Sorensen <svend@ciffer.net>,
	Nicolas Richard <theonewiththeevillook@yahoo.fr>
Cc: 17284@debbugs.gnu.org
Subject: bug#17284: Host name completion in shell mode take 45 seconds
Date: Fri, 3 Apr 2015 09:25:04 -0700 (PDT)	[thread overview]
Message-ID: <4982c9c5-f87b-41f0-8e79-30fb65de6e99@default> (raw)
In-Reply-To: <CA+N+ML9Ee+b2Yxsx4Kwovm8XhT0sXCgCuDjkf-C+3TZpskA=XA@mail.gmail.com>

> > > Does it help to replace (looking-back ",") by (eq ?, (char-before)) ?
> > 
> > The function runs quickly with that change.
>
> Couldn't the byte-compiler warn when `looking-back' is used without
> specifying LIMIT?  Making LIMIT non-optional seems too harsh.

1. Is it really about LIMIT?  Or is it instead about looking back
   at a literal string of chars?  And typically a short string.
   I'm guessing that that is the use case to pursue here.

2. Instead of (or in addition to) a byte-compiler warning for
   `looking-back', how about adding a function `chars-before'?

Since I use multiple Emacs versions, some quite old, I use this.
But I'm sure that a much better (including prettier) definition
can be had for recent Emacs.  Or (better) define it in C.

(defun chars-before (chars)
  "Return non-nil if the literal string CHARS is right before point."
  (let* ((len  (length chars))
         (idx  (1- len))
         (pt   (point)))
    (catch 'chars-before
      (dolist (char  (append chars ()))
        (unless (condition-case nil
                    (eq char (char-before (- pt idx)))
                  (error nil))
          (throw 'chars-before nil))
        (setq idx  (1- idx)))
      t)))

Likewise (but may be no better than `looking-at' + `regexp-quote'):

(defun chars-after (chars)
  "Return non-nil if the literal string CHARS is right after point."
  (let* ((len  (length chars))
         (idx  (1- len))
         (pt   (point)))
    (catch 'chars-after
      (dolist (char  (nreverse (append chars ())))
        (unless (condition-case nil
                    (eq char (char-after (+ pt idx)))
                  (error nil))          ; e.g. `eobp'
          (throw 'chars-after nil))
        (setq idx  (1- idx)))
      t)))





  parent reply	other threads:[~2015-04-03 16:25 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-17 17:47 bug#17284: 24.3.90; Host name completion in shell mode take 45 seconds Svend Sorensen
2015-04-02 17:36 ` bug#17284: " Svend Sorensen
2015-04-03  5:39   ` Nicolas Richard
2015-04-03  9:09     ` Svend Sorensen
2015-04-03 10:36       ` Nicolas Richard
2015-04-03 11:12         ` martin rudalics
2015-04-03 13:28           ` Stefan Monnier
2015-04-04  8:29             ` martin rudalics
2015-04-04 13:54               ` Stefan Monnier
2015-04-04 15:59                 ` martin rudalics
2015-04-03 11:42         ` Dmitry Gutov
2015-04-03 11:58           ` Nicolas Richard
2015-04-03 16:25       ` Drew Adams [this message]
2015-04-04  8:29         ` martin rudalics
2015-04-04 14:46           ` Drew Adams
2015-04-04 16:00             ` martin rudalics
2015-04-04 21:38               ` Drew Adams
     [not found]                 ` <cf794d98-4671-4a57-92cf-27a8c59c9211@default>
2016-01-02  3:59                   ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4982c9c5-f87b-41f0-8e79-30fb65de6e99@default \
    --to=drew.adams@oracle.com \
    --cc=17284@debbugs.gnu.org \
    --cc=svend@ciffer.net \
    --cc=theonewiththeevillook@yahoo.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).