From debbugs-submit-bounces@debbugs.gnu.org Thu May 05 08:33:54 2016 Received: (at submit) by debbugs.gnu.org; 5 May 2016 12:33:54 +0000 Received: from localhost ([127.0.0.1]:38830 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayITa-00085O-Gx for submit@debbugs.gnu.org; Thu, 05 May 2016 08:33:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:43028) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayITY-00085A-D5 for submit@debbugs.gnu.org; Thu, 05 May 2016 08:33:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ayITJ-0005pX-Cs for submit@debbugs.gnu.org; Thu, 05 May 2016 08:33:43 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:33201) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ayITI-0005ol-6K for submit@debbugs.gnu.org; Thu, 05 May 2016 08:33:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33992) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ayIT5-0007Eh-Ml for bug-gnu-emacs@gnu.org; Thu, 05 May 2016 08:33:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ayISq-0005lG-81 for bug-gnu-emacs@gnu.org; Thu, 05 May 2016 08:33:16 -0400 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]:36404) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ayISo-0005g6-It for bug-gnu-emacs@gnu.org; Thu, 05 May 2016 08:33:08 -0400 Received: by mail-lf0-x22b.google.com with SMTP id u64so94388107lff.3 for ; Thu, 05 May 2016 05:32:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:subject:to:cc:message-id:mime-version; bh=a1ywzS8Gj1JYEQWxHCQsoGtDVAN6RXfveXF7r+mM83g=; b=Wqni4rrCtt/yYh6WFMcqWn/5xo43W4Xuqcc60uIy0aq+Pe7SN0LaTVZPJvFHrwFStR eRplgUbZiGv8GVnMGVJeZgHw9OELCndXIoyrf1fotMpyG9sJGuPLXv6EYSupCWdyQDQz Y/HIDS7VSLbkp3DzLKj3LSNZex6KR5oUMnA/i5llNHgtRWCgIqUpAiYo7Mc7+w9Of0c5 kFS/a7yKTkRYufZMqnR6UdkleYmlxgh6LfQw6JjU6hbQyLPE+Ud46mW/y3flGWOtIDqk aGAfQ0JGK1rHRA9PCoTmzvfnThxaG8rvClgxe34qlBNuu+SdzsrEXFVPxp11oMCq0QX6 8HBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:subject:to:cc:message-id:mime-version; bh=a1ywzS8Gj1JYEQWxHCQsoGtDVAN6RXfveXF7r+mM83g=; b=mEY51hHvj508nnW7+tfu6Sw0WqvMecLFs0BIeAY/q/eAHEfGvAMnJac8/PwQBffUMQ FPaJzlhavu9GJhg2R65WSebWA3HGK/oMzCL/5nZmsX+CTWCYQTx3pQ2eiGqW57dBTiDD 5mgfFQ2YmnCD5m0xMutIQxVmIT5t0swMPqI7YWEEicttuyqiS60woqR61cua/PJlmCkZ /uvTcB4O/Kx16nbNPKGAKxw7mgGBAsoEeeMRvSc7zGfK/dzyEqxH/w6lDqwvSmSDq5d9 sfutXpUbEq+Cy+0biys5F0JsYSHA6hWpfjHCXLuLp71ymJc9Jm8lvwI9KCUJRxAl7fJ8 YFWg== X-Gm-Message-State: AOPr4FXCCG53/WOFmsDEJsGqGYIPAAjhScJ/EEPKBHC9TfY0HQUzYjObyzdtwpcButB1tQ== X-Received: by 10.112.52.196 with SMTP id v4mr6044466lbo.59.1462451567887; Thu, 05 May 2016 05:32:47 -0700 (PDT) Received: from [10.0.0.38] (ti0117a400-4543.bb.online.no. [85.166.100.207]) by smtp.gmail.com with ESMTPSA id n13sm1480991lfb.28.2016.05.05.05.32.46 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 05 May 2016 05:32:47 -0700 (PDT) Date: Thu, 05 May 2016 14:32:45 +0200 From: Simen =?iso-8859-1?q?Heggest=F8yl?= Subject: [PATCH] Support completion of HTML tags in CSS selectors To: bug-gnu-emacs@gnu.org Message-Id: <1462451565.2892.0@smtp.gmail.com> X-Mailer: geary/0.10.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-JZ17QS6ty4mvouVPSs7e" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit Cc: Stefan Monnier , Dmitry Gutov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --=-JZ17QS6ty4mvouVPSs7e Content-Type: multipart/alternative; boundary="=-cljR0H1lgDR93trekiW+" --=-cljR0H1lgDR93trekiW+ Content-Type: text/plain; charset=utf-8; format=flowed The attached patch adds support for completion of HTML tags in CSS selectors for CSS- and SCSS mode. -- Simen --=-cljR0H1lgDR93trekiW+ Content-Type: text/html; charset=utf-8
The attached patch adds support for completion of HTML tags in CSS
selectors for CSS- and SCSS mode.

-- Simen
--=-cljR0H1lgDR93trekiW+-- --=-JZ17QS6ty4mvouVPSs7e Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Support-completion-of-HTML-tags-in-CSS-selectors.patch >From 4af469d4a67c020eef90e3c19ca9094bf7b59696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Heggest=C3=B8yl?= Date: Sun, 1 May 2016 14:59:11 +0200 Subject: [PATCH] Support completion of HTML tags in CSS selectors * lisp/textmodes/css-mode.el (css--complete-property): Make completion non-exclusive to allow mixing with selector completions. (css--html-tags): New variable holding a list of HTML tags for completion. (css--nested-selectors-allowed): New variable for determining whether nested selectors are allowed in the current mode. (css--complete-selector): New function for completing part of a CSS selector. (css-completion-at-point): Removed in favor of adding several completion functions to `completion-at-point-functions'. (css-mode): Add each completion function to `completion-at-point-functions' instead of using `css-completion-at-point'. (scss-mode): Allow nested selectors. --- etc/NEWS | 4 ++-- lisp/textmodes/css-mode.el | 41 +++++++++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 21602ff..e202612 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -282,8 +282,8 @@ different group ID. ** CSS mode --- -*** Support for completing attribute values and bang-rules using the -'completion-at-point' command. +*** Support for completing attribute values, at-rules, bang-rules, and +HTML tags using the 'completion-at-point' command. +++ ** Emacs now supports character name escape sequences in character and diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index e30fb3e..77e2e77 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -30,10 +30,12 @@ ;; - electric ; and } ;; - filling code with auto-fill-mode ;; - fix font-lock errors with multi-line selectors +;; - support completion of user-defined classes names and IDs ;;; Code: (require 'seq) +(require 'sgml-mode) (require 'smie) (defgroup css nil @@ -747,7 +749,7 @@ css--complete-property (let ((start (point))) (skip-chars-backward " \t\r\n") (when (memq (char-before) '(?\{ ?\;)) - (list start pos css-property-ids)))))) + (list start pos css-property-ids :exclusive 'no)))))) (defun css--complete-bang-rule () "Complete bang-rule at point." @@ -824,15 +826,24 @@ css--complete-property-value (list (point) end (cons "inherit" (css--property-values property)))))))) -(defun css-completion-at-point () - "Complete current symbol at point. -Currently supports completion of CSS properties, property values, -pseudo-elements, pseudo-classes, at-rules, and bang-rules." - (or (css--complete-property) - (css--complete-bang-rule) - (css--complete-property-value) - (css--complete-pseudo-element-or-class) - (css--complete-at-rule))) +(defvar css--html-tags (mapcar #'car html-tag-alist) + "List of HTML tags. +Used to provide completion of HTML tags in selectors.") + +(defvar css--nested-selectors-allowed nil + "Non-nil if nested selectors are allowed in the current mode.") +(make-variable-buffer-local 'css--nested-selectors-allowed) + +;; TODO: Currently only supports completion of HTML tags. By looking +;; at open HTML mode buffers we should be able to provide completion +;; of user-defined classes and IDs too. +(defun css--complete-selector () + "Complete part of a CSS selector at point." + (when (or (= (nth 0 (syntax-ppss)) 0) css--nested-selectors-allowed) + (save-excursion + (let ((end (point))) + (skip-chars-backward "-[:alnum:]") + (list (point) end css--html-tags))))) ;;;###autoload (define-derived-mode css-mode prog-mode "CSS" @@ -852,8 +863,13 @@ css-mode :backward-token #'css-smie--backward-token) (setq-local electric-indent-chars (append css-electric-keys electric-indent-chars)) - (add-hook 'completion-at-point-functions - #'css-completion-at-point nil 'local)) + (dolist (func (list #'css--complete-bang-rule + #'css--complete-property-value + #'css--complete-pseudo-element-or-class + #'css--complete-at-rule + #'css--complete-property + #'css--complete-selector)) + (add-hook 'completion-at-point-functions func t 'local))) (defvar comment-continue) @@ -990,6 +1006,7 @@ scss-mode (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)") (setq-local css--at-ids (append css-at-ids scss-at-ids)) (setq-local css--bang-ids (append css-bang-ids scss-bang-ids)) + (setq-local css--nested-selectors-allowed t) (setq-local font-lock-defaults (list (scss-font-lock-keywords) nil t))) -- 2.8.1 --=-JZ17QS6ty4mvouVPSs7e-- From debbugs-submit-bounces@debbugs.gnu.org Thu May 05 11:03:28 2016 Received: (at submit) by debbugs.gnu.org; 5 May 2016 15:03:28 +0000 Received: from localhost ([127.0.0.1]:40320 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayKoK-0005EV-Lm for submit@debbugs.gnu.org; Thu, 05 May 2016 11:03:28 -0400 Received: from eggs.gnu.org ([208.118.235.92]:50094) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayKoJ-0005EH-0F for submit@debbugs.gnu.org; Thu, 05 May 2016 11:03:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ayKo4-00036v-9E for submit@debbugs.gnu.org; Thu, 05 May 2016 11:03:18 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:44796) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ayKo4-00035j-6D for submit@debbugs.gnu.org; Thu, 05 May 2016 11:03:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40893) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ayKns-0005WP-5d for bug-gnu-emacs@gnu.org; Thu, 05 May 2016 11:03:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ayKnd-0002vV-J4 for bug-gnu-emacs@gnu.org; Thu, 05 May 2016 11:02:52 -0400 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:35734) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ayKnd-0002qS-Eo for bug-gnu-emacs@gnu.org; Thu, 05 May 2016 11:02:45 -0400 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id u45F2TqA028832; Thu, 5 May 2016 11:02:29 -0400 Received: by pastel.home (Postfix, from userid 20848) id E7DEC600E9; Thu, 5 May 2016 11:02:28 -0400 (EDT) From: Stefan Monnier To: Simen =?windows-1252?Q?Heggest=F8yl?= Subject: Re: [PATCH] Support completion of HTML tags in CSS selectors Message-ID: References: <1462451565.2892.0@smtp.gmail.com> Date: Thu, 05 May 2016 11:02:28 -0400 In-Reply-To: <1462451565.2892.0@smtp.gmail.com> ("Simen =?windows-1252?Q?H?= =?windows-1252?Q?eggest=F8yl=22's?= message of "Thu, 05 May 2016 14:32:45 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV5663=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5663> : inlines <4764> : streams <1630449> : uri <2203735> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org, Dmitry Gutov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) > @@ -747,7 +749,7 @@ css--complete-property > (let ((start (point))) > (skip-chars-backward " \t\r\n") > (when (memq (char-before) '(?\{ ?\;)) > - (list start pos css-property-ids)))))) > + (list start pos css-property-ids :exclusive 'no)))))) > > (defun css--complete-bang-rule () > "Complete bang-rule at point." It'd be better to avoid the :exclusive thingy, and use something like completion-table-merge instead. :exclusive basically prevents any completion style other than prefix completion, so it's better avoid it when possible. This said, it's not a real objection. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu May 05 12:44:54 2016 Received: (at 23458) by debbugs.gnu.org; 5 May 2016 16:44:54 +0000 Received: from localhost ([127.0.0.1]:40492 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayMOT-0007km-Tf for submit@debbugs.gnu.org; Thu, 05 May 2016 12:44:54 -0400 Received: from mail-lf0-f52.google.com ([209.85.215.52]:36480) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayMOS-0007ka-LU for 23458@debbugs.gnu.org; Thu, 05 May 2016 12:44:53 -0400 Received: by mail-lf0-f52.google.com with SMTP id u64so102969808lff.3 for <23458@debbugs.gnu.org>; Thu, 05 May 2016 09:44:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:subject:to:cc:message-id:in-reply-to:references :mime-version; bh=IUdEspM7Fy1PA/JKvNygqUo/1t6NwGvHQV/ySUKKZsQ=; b=UqQea/iT+6z8c9fvfUZE8OBkAG9iX7o0PPVvPHnAS9MGlr6GqmpWj3HcBRNGjfdYFy yaN7rbgx0CDtryYSNxG/XKCLFXyIPBL8webfyC/P0XtMVt70Ow5jIy5PTzkUU+3ZjApV tGZvhn3H7km+HeoqmO+hK9kaCtnTneOdvSug37rGvGMxnrxfzCcAVtGTxnd63pnCGER7 Xa7fW3BG7eQ0fijXSrDu+dy0Itg2oAUDV3cd6gQbv44GEZ2A5mHctxc697/Y1CUAeKW3 UXnZjBDsQCCG3TKRGAEu62GGfwZgKYGAk7RefFADrpB93fdz9r+l5SYSGFK/JTVq+wxM NgqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:subject:to:cc:message-id:in-reply-to :references:mime-version; bh=IUdEspM7Fy1PA/JKvNygqUo/1t6NwGvHQV/ySUKKZsQ=; b=MsplrrXWgNNdHdCrmc25+rRqNFRUsCW9cEu1gF5AX84bnywFM/DwI3JUKKMenIPd+D G9B/dnpq17tplKQ9Omx+ZlXAHm/Xb7iEgVR1nrZ6W82nF0ilcg/Yx1wwoJmg3tvULIIF l0DqypJf06ni2T6Q7oOeo45pjmkZVNViBSyfVmEgVoNGKf617Pr+zsPljhsM0wt+SRVz UjOQmfMqb7SKDb3pYzhV/0jwQXzdNDx1lgcYGfplIuuIJ8uUv2S+hVH0WsXeYehzDm/R 7TDjoBWNRbX6DB1eHXuE/2i0s/xUXlap9oveq8CpFd9LxMvM/fPBW/RRbEuB5qOjxdte dO4w== X-Gm-Message-State: AOPr4FXTJaXEwNkNmiMXXSMUfOYEKhP6iATXUcUazDDReR2u0fUK41Llk88vr/pugAr2ag== X-Received: by 10.112.35.162 with SMTP id i2mr7357305lbj.13.1462466686657; Thu, 05 May 2016 09:44:46 -0700 (PDT) Received: from [192.168.1.10] (45-126-11.connect.netcom.no. [176.11.126.45]) by smtp.gmail.com with ESMTPSA id d1sm1639794lbm.3.2016.05.05.09.44.43 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 05 May 2016 09:44:45 -0700 (PDT) Date: Thu, 05 May 2016 18:44:35 +0200 From: Simen =?iso-8859-1?q?Heggest=F8yl?= Subject: Re: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors To: Stefan Monnier Message-Id: <1462466675.13053.0@smtp.gmail.com> In-Reply-To: References: <1462451565.2892.0@smtp.gmail.com> <=?ISO-8859-1?Q?1462451565.2892.0@smtp.gmail.com> <"Simen_Heggest=F8?= =?ISO-8859-1?Q?yl"'s_message_of_"Thu, _05_May_2016_14:32:45_+0200"> X-Mailer: geary/0.10.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-b74hJtCZB+Y69oFPIktM" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 23458 Cc: 23458@debbugs.gnu.org, dgutov@yandex.ru X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --=-b74hJtCZB+Y69oFPIktM Content-Type: multipart/alternative; boundary="=-sDCV57mWvzPNDj2i11HS" --=-sDCV57mWvzPNDj2i11HS Content-Type: text/plain; charset=utf-8; format=flowed On Thu, May 5, 2016 at 5:02 PM, Stefan Monnier wrote: > It'd be better to avoid the :exclusive thingy, and use something like > completion-table-merge instead. > > :exclusive basically prevents any completion style other than prefix > completion, so it's better avoid it when possible. This said, it's > not > a real objection. Something along these lines? -- Simen --=-sDCV57mWvzPNDj2i11HS Content-Type: text/html; charset=utf-8 On Thu, May 5, 2016 at 5:02 PM, Stefan Monnier <monnier@IRO.UMontreal.CA> wrote:
It'd be better to avoid the :exclusive thingy, and use something like completion-table-merge instead. :exclusive basically prevents any completion style other than prefix completion, so it's better avoid it when possible. This said, it's not a real objection.

Something along these lines?

-- Simen
--=-sDCV57mWvzPNDj2i11HS-- --=-b74hJtCZB+Y69oFPIktM Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Support-completion-of-HTML-tags-in-CSS-selectors.patch >From 1fcc84e66167d464194716e05994706742184155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Heggest=C3=B8yl?= Date: Sun, 1 May 2016 14:59:11 +0200 Subject: [PATCH] Support completion of HTML tags in CSS selectors * lisp/textmodes/css-mode.el (css--html-tags): New variable holding a list of HTML tags for completion. (css--nested-selectors-allowed): New variable for determining whether nested selectors are allowed in the current mode. (css--complete-selector): New function for completing part of a CSS selector. (css-completion-at-point): Support completion of selectors. (scss-mode): Allow nested selectors. --- etc/NEWS | 4 ++-- lisp/textmodes/css-mode.el | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 21602ff..e202612 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -282,8 +282,8 @@ different group ID. ** CSS mode --- -*** Support for completing attribute values and bang-rules using the -'completion-at-point' command. +*** Support for completing attribute values, at-rules, bang-rules, and +HTML tags using the 'completion-at-point' command. +++ ** Emacs now supports character name escape sequences in character and diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index e30fb3e..cf407ef 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -30,10 +30,12 @@ ;; - electric ; and } ;; - filling code with auto-fill-mode ;; - fix font-lock errors with multi-line selectors +;; - support completion of user-defined classes names and IDs ;;; Code: (require 'seq) +(require 'sgml-mode) (require 'smie) (defgroup css nil @@ -824,15 +826,40 @@ css--complete-property-value (list (point) end (cons "inherit" (css--property-values property)))))))) +(defvar css--html-tags (mapcar #'car html-tag-alist) + "List of HTML tags. +Used to provide completion of HTML tags in selectors.") + +(defvar css--nested-selectors-allowed nil + "Non-nil if nested selectors are allowed in the current mode.") +(make-variable-buffer-local 'css--nested-selectors-allowed) + +;; TODO: Currently only supports completion of HTML tags. By looking +;; at open HTML mode buffers we should be able to provide completion +;; of user-defined classes and IDs too. +(defun css--complete-selector () + "Complete part of a CSS selector at point." + (when (or (= (nth 0 (syntax-ppss)) 0) css--nested-selectors-allowed) + (save-excursion + (let ((end (point))) + (skip-chars-backward "-[:alnum:]") + (list (point) end css--html-tags))))) + (defun css-completion-at-point () "Complete current symbol at point. Currently supports completion of CSS properties, property values, pseudo-elements, pseudo-classes, at-rules, and bang-rules." - (or (css--complete-property) - (css--complete-bang-rule) + (or (css--complete-bang-rule) (css--complete-property-value) (css--complete-pseudo-element-or-class) - (css--complete-at-rule))) + (css--complete-at-rule) + (seq-let (prop-beg prop-end prop-table) (css--complete-property) + (seq-let (sel-beg sel-end sel-table) (css--complete-selector) + (when (or prop-table sel-table) + `(,@(if prop-table + (list prop-beg prop-end) + (list sel-beg sel-end)) + ,(completion-table-merge prop-table sel-table))))))) ;;;###autoload (define-derived-mode css-mode prog-mode "CSS" @@ -990,6 +1017,7 @@ scss-mode (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)") (setq-local css--at-ids (append css-at-ids scss-at-ids)) (setq-local css--bang-ids (append css-bang-ids scss-bang-ids)) + (setq-local css--nested-selectors-allowed t) (setq-local font-lock-defaults (list (scss-font-lock-keywords) nil t))) -- 2.8.1 --=-b74hJtCZB+Y69oFPIktM-- From debbugs-submit-bounces@debbugs.gnu.org Thu May 05 12:59:12 2016 Received: (at 23458) by debbugs.gnu.org; 5 May 2016 16:59:12 +0000 Received: from localhost ([127.0.0.1]:40511 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayMcK-00086n-1f for submit@debbugs.gnu.org; Thu, 05 May 2016 12:59:12 -0400 Received: from chene.dit.umontreal.ca ([132.204.246.20]:35076) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayMcH-00086e-Vv for 23458@debbugs.gnu.org; Thu, 05 May 2016 12:59:10 -0400 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id u45Gx7Ui001359; Thu, 5 May 2016 12:59:08 -0400 Received: by pastel.home (Postfix, from userid 20848) id CC22960357; Thu, 5 May 2016 12:59:07 -0400 (EDT) From: Stefan Monnier To: Simen =?windows-1252?Q?Heggest=F8yl?= Subject: Re: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Message-ID: References: <1462451565.2892.0@smtp.gmail.com> <=?ISO-8859-1?Q?1462451565.2892.0@smtp.gmail.com> <1462466675.13053.0@smtp.gmail.com> Date: Thu, 05 May 2016 12:59:07 -0400 In-Reply-To: <1462466675.13053.0@smtp.gmail.com> ("Simen =?windows-1252?Q?Heggest=F8yl=22's?= message of "Thu, 05 May 2016 18:44:35 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.2 X-NAI-Spam-Rules: 2 Rules triggered GEN_SPAM_FEATRE=0.2, RV5663=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5663> : inlines <4766> : streams <1630492> : uri <2203791> X-Spam-Score: -3.4 (---) X-Debbugs-Envelope-To: 23458 Cc: 23458@debbugs.gnu.org, dgutov@yandex.ru X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.4 (---) > Something along these lines? Yes. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu May 05 15:24:53 2016 Received: (at 23458-done) by debbugs.gnu.org; 5 May 2016 19:24:53 +0000 Received: from localhost ([127.0.0.1]:40575 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayOtI-0004yF-Tp for submit@debbugs.gnu.org; Thu, 05 May 2016 15:24:53 -0400 Received: from mail-lf0-f54.google.com ([209.85.215.54]:35509) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayOtH-0004y0-9H for 23458-done@debbugs.gnu.org; Thu, 05 May 2016 15:24:51 -0400 Received: by mail-lf0-f54.google.com with SMTP id j8so107311785lfd.2 for <23458-done@debbugs.gnu.org>; Thu, 05 May 2016 12:24:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:subject:to:cc:message-id:in-reply-to:references :mime-version; bh=DfCivgmoZmiDpXQGDzXPE54VDQ3N1FNjtN185gNh9bE=; b=kNIFmvomLsMcEqBh5s5zYrFMSVBrbwt0gKjYm0QWBSqrEKBzgLyOdfOc8LYWKOE1g0 jF7Y2McFUXMllJ5HwgQZCLu5t1hqStpmY3VjlzHy754/l9SJxCDrfC7uwKcZCfFIzHqj 776HGaIXtyJU1SU2QDTM8bxYFJuwC4HcksgU77RbICdON3Hwk3dh0KW1BKizedb85Ymb 16YmGZ585ML6sBlI+cIK0IxrNaKLlYabsT2uBGKP7o5UQ/oLzqe/p/6CClVk/4wvy2Ik 3T40Ke5t7e7OJi4EZnoLjou9Dy+I4kLD7+bkWmvU2TB72/9mCNWYyQbQidu4jHHgXgSN 3o3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:subject:to:cc:message-id:in-reply-to :references:mime-version; bh=DfCivgmoZmiDpXQGDzXPE54VDQ3N1FNjtN185gNh9bE=; b=TmnW/lmEWztbvG8xoeuBefUAAdWlGrxJ7QDoQtuzClUHAeJrfxxguVbFxhPTZouiqz bFQWpS4EqWeNe7O/oAib+K6wVgopPqHJMgPgg8jCpoH57f9f8QchZCIsLU2Yg0lca+mX YR7ZPJJWlL0aeZIMzhOg0hJRQ4MJ7GOHhgN+YLonlibuJw9+hgM2NbAm44e54Rr1n1GW WADAZZyto3lGsfXGKWbRyEtyC3gOyYqRT2tP+oaK3RSDdLWnQBRJo0TSgzSA9vzFrAt3 WKEvS8xhRyR+bUMdfKPI6oAWq6CFdI2kDJrvFiCPSTzr20LvKRg4SDf6CveGg1dS35xn erOw== X-Gm-Message-State: AOPr4FUzMU7xg8zdtmNFOgR/m25lja/O9mnyd+gdAOPPCLOhZWaXBg1wXj2ohKTWTDJrkA== X-Received: by 10.25.166.200 with SMTP id p191mr7747291lfe.124.1462476285451; Thu, 05 May 2016 12:24:45 -0700 (PDT) Received: from [192.168.100.5] (cm-84.210.143.4.getinternet.no. [84.210.143.4]) by smtp.gmail.com with ESMTPSA id a134sm1766124lfb.1.2016.05.05.12.24.44 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 05 May 2016 12:24:44 -0700 (PDT) Date: Thu, 05 May 2016 21:24:43 +0200 From: Simen =?iso-8859-1?q?Heggest=F8yl?= Subject: Re: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors To: Stefan Monnier Message-Id: <1462476283.4582.0@smtp.gmail.com> In-Reply-To: References: <1462451565.2892.0@smtp.gmail.com> <=?ISO-8859-1?Q?1462451565.2892.0@smtp.gmail.com> <1462466675.13053.0@smtp.gmail.com> <=?ISO-8859-1?Q?1462466675.13053.0@smtp.gmail.com> <"Simen_Heggest?= =?ISO-8859-1?Q?=F8yl"'s_message_of_"Thu, _05_May_2016_18:44:35_+0200"> X-Mailer: geary/0.10.0 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-jSG7iUohE3CYxIbhQwzq" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 23458-done Cc: 23458-done@debbugs.gnu.org, dgutov@yandex.ru X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --=-jSG7iUohE3CYxIbhQwzq Content-Type: text/plain; charset=utf-8; format=flowed On Thu, May 5, 2016 at 6:59 PM, Stefan Monnier wrote: >> Something along these lines? > > Yes. Good, thanks for taking a look. I've installed the patch in master. I think that by this, CSS mode's completion has finally reached feature parity with company-css. -- Simen --=-jSG7iUohE3CYxIbhQwzq Content-Type: text/html; charset=utf-8 On Thu, May 5, 2016 at 6:59 PM, Stefan Monnier <monnier@IRO.UMontreal.CA> wrote:
Something along these lines?
Yes.

Good, thanks for taking a look.

I've installed the patch in master.

I think that by this, CSS mode's completion has finally reached
feature parity with company-css.

-- Simen
--=-jSG7iUohE3CYxIbhQwzq-- From debbugs-submit-bounces@debbugs.gnu.org Thu May 05 17:52:14 2016 Received: (at 23458-done) by debbugs.gnu.org; 5 May 2016 21:52:14 +0000 Received: from localhost ([127.0.0.1]:40857 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayRBu-00020y-3t for submit@debbugs.gnu.org; Thu, 05 May 2016 17:52:14 -0400 Received: from chene.dit.umontreal.ca ([132.204.246.20]:45265) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayRBr-00020q-Er for 23458-done@debbugs.gnu.org; Thu, 05 May 2016 17:52:13 -0400 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id u45Lq90O029408; Thu, 5 May 2016 17:52:10 -0400 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id B0860AE057; Thu, 5 May 2016 17:52:09 -0400 (EDT) From: Stefan Monnier To: Simen =?windows-1252?Q?Heggest=F8yl?= Subject: Re: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Message-ID: References: <1462451565.2892.0@smtp.gmail.com> <=?ISO-8859-1?Q?1462451565.2892.0@smtp.gmail.com> <1462466675.13053.0@smtp.gmail.com> <=?ISO-8859-1?Q?1462466675.13053.0@smtp.gmail.com> <1462476283.4582.0@smtp.gmail.com> Date: Thu, 05 May 2016 17:52:09 -0400 In-Reply-To: <1462476283.4582.0@smtp.gmail.com> ("Simen =?windows-1252?Q?H?= =?windows-1252?Q?eggest=F8yl=22's?= message of "Thu, 05 May 2016 21:24:43 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV5663=0 X-NAI-Spam-Version: 2.3.0.9418 : core <5663> : inlines <4769> : streams <1630603> : uri <2203926> X-Spam-Score: -3.4 (---) X-Debbugs-Envelope-To: 23458-done Cc: 23458-done@debbugs.gnu.org, dgutov@yandex.ru X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.4 (---) > Good, thanks for taking a look. > I've installed the patch in master. > I think that by this, CSS mode's completion has finally reached > feature parity with company-css. Great, thanks, Stefan From debbugs-submit-bounces@debbugs.gnu.org Sat May 07 19:37:28 2016 Received: (at 23458) by debbugs.gnu.org; 7 May 2016 23:37:28 +0000 Received: from localhost ([127.0.0.1]:42995 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1azBmq-00027S-Lq for submit@debbugs.gnu.org; Sat, 07 May 2016 19:37:28 -0400 Received: from mail-wm0-f49.google.com ([74.125.82.49]:36341) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1azBmp-00027G-B9 for 23458@debbugs.gnu.org; Sat, 07 May 2016 19:37:27 -0400 Received: by mail-wm0-f49.google.com with SMTP id n129so96397763wmn.1 for <23458@debbugs.gnu.org>; Sat, 07 May 2016 16:37:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=fF5nJcu4T/uj+TrY9OT+HYZG2vttNEeTWlugpG1FdXg=; b=OUM6JPI499cgvvDoWilph8JQfokPGoqjayDfn+WkJbYM/cwtb2g/fywcN4qO/k7HXc h7EvO2rRSfjgT8bpVxzdOzpUYiTkBKV0rj/Qg8RMUiA0QmHttNDFIO8Ajo/+b4vUtpGS GS4tb/R3MMneIJMyb14zJ2AIoBcQbCCmZ6ldjbLPIvNcKEPI+Z5smFTmvwNbL1OsfpCk XxKueNKGa7CAK06f1sNrtUz+WPw+DAvE/ydFH+pnfKJ4WUK/uS51/WKY+lpNzJm2YG91 PrHd86rak5w0uIBjSGbkMK5XHitD8p7F8gVLETUk6SE+HanzkGFAihMpnfxnwsO8UMtm KA5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=fF5nJcu4T/uj+TrY9OT+HYZG2vttNEeTWlugpG1FdXg=; b=I4L71AYHpvox0CGL5zR1rwKGsWl6imbeDMSB9FAOi9kzYeDLvyLO6BsBILyJst2A/9 MRVaTJyQkcgRDhD8VkEr1WaCI7hMdNUMhEvomS/jkSf/Sef/F9DawbkiWFUHx7kM6yDy XNWOj5Mu1vUmqXkgvEq5UIvE5WBl6luufUWms1MM/M2IlGwZoSvf5YyI4wBmoTgVzY4V nCJNFLq3FmAfSEkyoX3hd3I+EIW4gVxqYzQZMtYjj1ZgOUIcgeRgn58xM7xxC327LuPj jz+cvAIyYyEb7ZHjQRogJkOMp6Gi26/5ByIVj1VpEciSJJjRSqk4zPq/xMONET8jso1r hTUA== X-Gm-Message-State: AOPr4FVhYiBIY8BKbjenboS5ET/DOzW4j8FcOV6yS4jlfHlYJU4UFEIjnDAG8l1i+2Tkxw== X-Received: by 10.28.172.132 with SMTP id v126mr4038228wme.28.1462664241732; Sat, 07 May 2016 16:37:21 -0700 (PDT) Received: from [192.168.1.2] ([185.105.175.24]) by smtp.googlemail.com with ESMTPSA id k62sm2652018wmb.7.2016.05.07.16.37.20 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 07 May 2016 16:37:21 -0700 (PDT) Subject: Re: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors To: 23458@debbugs.gnu.org, simenheg@gmail.com References: <1462451565.2892.0@smtp.gmail.com> <=?ISO-8859-1?Q?1462451565.2892.0@smtp.gmail.com> <1462466675.13053.0@smtp.gmail.com> <1462466675.13053.0@smtp.gmail.com> <"Simen Heggest=?ISO-8859-1?Q?=F8yl"'s_message_of_"Thu, _05_May_2016_18:44:35_+0200"> <1462476283.4582.0@smtp.gmail.com> From: Dmitry Gutov Message-ID: Date: Sun, 8 May 2016 02:37:19 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1 MIME-Version: 1.0 In-Reply-To: <1462476283.4582.0@smtp.gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 23458 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) On 05/05/2016 10:24 PM, Simen Heggestøyl wrote: > I've installed the patch in master. > > I think that by this, CSS mode's completion has finally reached > feature parity with company-css. Great! I'll have to remember to update the company-backends initvalue form when we finally decide which Emacs version the master will be released in. From unknown Fri Aug 15 04:08:11 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 05 Jun 2016 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator