From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Mark Oteiza Newsgroups: gmane.emacs.bugs Subject: bug#21465: [PATCH] CC-modes hierarchy Date: Sun, 13 Sep 2015 17:18:01 -0400 Message-ID: <20150913211801.GA10161@holos> References: <87pp1neg2k.fsf@udel.edu> <20150913160626.GA1086@holos> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1442179397 26250 80.91.229.3 (13 Sep 2015 21:23:17 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 13 Sep 2015 21:23:17 +0000 (UTC) Cc: 21465@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Sep 13 23:23:06 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 1ZbEjp-00087m-Q5 for geb-bug-gnu-emacs@m.gmane.org; Sun, 13 Sep 2015 23:23:06 +0200 Original-Received: from localhost ([::1]:37235 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbEjp-0001GO-4z for geb-bug-gnu-emacs@m.gmane.org; Sun, 13 Sep 2015 17:23:05 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44997) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbEg2-0000jl-0m for bug-gnu-emacs@gnu.org; Sun, 13 Sep 2015 17:19:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZbEg0-0003ux-V6 for bug-gnu-emacs@gnu.org; Sun, 13 Sep 2015 17:19:09 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:38887) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbEfu-0003t7-V8; Sun, 13 Sep 2015 17:19:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1ZbEfu-00085T-F4; Sun, 13 Sep 2015 17:19:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org, bug-cc-mode@gnu.org Resent-Date: Sun, 13 Sep 2015 21:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 21465 X-GNU-PR-Package: emacs,cc-mode X-GNU-PR-Keywords: patch Original-Received: via spool by 21465-submit@debbugs.gnu.org id=B21465.144217908531021 (code B ref 21465); Sun, 13 Sep 2015 21:19:02 +0000 Original-Received: (at 21465) by debbugs.gnu.org; 13 Sep 2015 21:18:05 +0000 Original-Received: from localhost ([127.0.0.1]:59330 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZbEez-00084G-1t for submit@debbugs.gnu.org; Sun, 13 Sep 2015 17:18:05 -0400 Original-Received: from mail-qk0-f170.google.com ([209.85.220.170]:34513) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZbEex-000849-Tz for 21465@debbugs.gnu.org; Sun, 13 Sep 2015 17:18:04 -0400 Original-Received: by qkfq186 with SMTP id q186so51319937qkf.1 for <21465@debbugs.gnu.org>; Sun, 13 Sep 2015 14:18:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=LOvc4/AFpab6mFxIWO1To1TLzBo7qK041Zp9JcQD0nk=; b=TqB9MXj9Bl7vhsryOZjUFzVJh693zXohULT8q6UgkCA7iCTOnOBlj6J+mcJqm/UH+A iqLNIFe2igRQaqjKi3dFMR/SGaFfDL19eozau/Oxb5c7/0iI5bqEczqbYsoRtJ3mnGm3 qw+R7wWuN7jOWBTu+d+UX8DhDhSV3Pf11tDF7G2CCZTdoyQon5sq3vzjt0Oky2QAYLeo 4+zBIf06qnsyUrXFQ1o39PnYxWn0tbwCo5+/YEgqRSrrs4o39Wfmg6Uy+Sg3cq8fR1g4 Ki9qaf+VY76q3EG3NX+y5MNU6xRfAxbz9icRcqaHAmYHnqPRdtZbIMtn1M3y0lY/LfV5 EDSQ== X-Gm-Message-State: ALoCoQmh8oEatiPcJpNxAL2HmQ5BFbhKxb0vL3Rus4ksvceDHHAOdyHaXPoW7Cri1miJgxiR3LED X-Received: by 10.55.41.224 with SMTP id p93mr16625732qkp.73.1442179083546; Sun, 13 Sep 2015 14:18:03 -0700 (PDT) Original-Received: from holos.localdomain (c-73-172-248-173.hsd1.md.comcast.net. [73.172.248.173]) by smtp.gmail.com with ESMTPSA id 8sm4642557qgi.1.2015.09.13.14.18.02 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 13 Sep 2015 14:18:02 -0700 (PDT) Original-Received: by holos.localdomain (Postfix, from userid 1000) id 22E5268971; Sun, 13 Sep 2015 17:18:01 -0400 (EDT) Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24+12 (e85eda4ee425) (2015-08-30) 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: 208.118.235.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:106498 Archived-At: On 13/09/15 at 04:24pm, Stefan Monnier wrote: > > Nope, for some reason, doing (c-make-inherited-keymap) in the map > > definition in 24, I end up only with a Foo++ menu. Simply using > > (make-keymap), I'd end with with both Foo++ and C++ menus. > > Oh, you mean that your code uses c-make-inherited-keymap and the change > breaks your code, so you then try to fix it by replacing it with > make-sparse-keymap or make-keymap. > > Indeed, that's not the right fix. The right fix is to complain about > the removal of c-make-inherited-keymap because it is used by external > CC-mode modes. > > BTW, you don't need c-make-inherited-keymap. Instead you need > > (defvar foo++-mode-map > (let ((map (make-sparse-keymap))) > (set-keymap-parent map c-mode-base-map) > ... > map)) > > This should be just as backward compatible as using > c-make-inherited-keymap (and "backward" includes XEmacs, here). That works, thanks. > >> > when there shouldn't be, or: > >> > (define-derived-mode foo++-mode c-derivative-mode "Foo++" > >> > ...) > >> > and fontification is broken. > >> > >> How is it broken? > > > Oh, it was broken because I was using (make-syntax-table) instead of > > (funcall (c-lang-const c-make-mode-syntax-table c)). It looks like > > c-derivative-mode comes with no syntax table, which is alright. > > Indeed, we could set C's syntax table in c-derivative-mode. That would > make a lot of sense, thanks. The proposed patch just introduces > c-derivative-mode as a way to make the hierarchy more visible, but it > doesn't make c-derivative-mode usable on its own. You could argue that > c-derivative-mode should be the same as c-mode, but my patch does not > try to do that (yet?). Oh, and I guess it's not necessary to do the (funcall …) since it's already c-mode-syntax-table. Similar to the keymap, I can do (set-char-table-parent table c-mode-syntax-table) It would be nice if c-derivative-mode did that work for us. Then, if I didn't want the c-mode keymap or syntax table, I could set the parent of my derived table to nil. That's what I did for a mode that I recently made derive from conf-mode. I didn't want conf-mode's keymap.