From unknown Fri Aug 15 21:25:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Resent-From: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 May 2016 12:34:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 23458 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 23458@debbugs.gnu.org Cc: Stefan Monnier , Dmitry Gutov X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.146245163431090 (code B ref -1); Thu, 05 May 2016 12:34:01 +0000 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 =?UTF-8?Q?Heggest=C3=B8yl?= 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-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 unknown Fri Aug 15 21:25:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 May 2016 15:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23458 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Cc: 23458@debbugs.gnu.org, dgutov@yandex.ru X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org, Dmitry Gutov Received: via spool by submit@debbugs.gnu.org id=B.146246060820124 (code B ref -1); Thu, 05 May 2016 15:04:02 +0000 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 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 =?UTF-8?Q?Heggest=C3=B8yl?="'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-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 unknown Fri Aug 15 21:25:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Resent-From: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 May 2016 16:45:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23458 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Monnier Cc: 23458@debbugs.gnu.org, dgutov@yandex.ru Received: via spool by 23458-submit@debbugs.gnu.org id=B23458.146246669429812 (code B ref 23458); Thu, 05 May 2016 16:45:01 +0000 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 =?UTF-8?Q?Heggest=C3=B8yl?= Message-Id: <1462466675.13053.0@smtp.gmail.com> In-Reply-To: References: <1462451565.2892.0@smtp.gmail.com> <1462451565.2892.0@smtp.gmail.com> <"Simen =?UTF-8?Q?Heggest=C3=B8=3D=3FISO-8859-1=3FQ=3Fyl?="'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-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 unknown Fri Aug 15 21:25:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 May 2016 17:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23458 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Cc: 23458@debbugs.gnu.org, dgutov@yandex.ru Received: via spool by 23458-submit@debbugs.gnu.org id=B23458.146246755231177 (code B ref 23458); Thu, 05 May 2016 17:00:02 +0000 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 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 =?UTF-8?Q?Heggest=C3=B8yl?="'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-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 unknown Fri Aug 15 21:25:42 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Subject: bug#23458: closed (Re: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors) Message-ID: References: <1462476283.4582.0@smtp.gmail.com> <1462451565.2892.0@smtp.gmail.com> X-Gnu-PR-Message: they-closed 23458 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 23458@debbugs.gnu.org Date: Thu, 05 May 2016 19:25:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1462476302-19136-1" This is a multi-part message in MIME format... ------------=_1462476302-19136-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #23458: [PATCH] Support completion of HTML tags in CSS selectors which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 23458@debbugs.gnu.org. --=20 23458: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D23458 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1462476302-19136-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit 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-- ------------=_1462476302-19136-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit 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-- ------------=_1462476302-19136-1-- From unknown Fri Aug 15 21:25:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 May 2016 21:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23458 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Cc: 23458-done@debbugs.gnu.org, dgutov@yandex.ru Received: via spool by 23458-done@debbugs.gnu.org id=D23458.14624851347753 (code D ref 23458); Thu, 05 May 2016 21:53:02 +0000 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 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 =?UTF-8?Q?Heggest=C3=B8yl?="'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-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 unknown Fri Aug 15 21:25:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#23458: [PATCH] Support completion of HTML tags in CSS selectors Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 May 2016 23:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23458 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 23458@debbugs.gnu.org, simenheg@gmail.com Received: via spool by 23458-submit@debbugs.gnu.org id=B23458.14626642488154 (code B ref 23458); Sat, 07 May 2016 23:38:02 +0000 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) 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-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.