From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Newsgroups: gmane.emacs.bugs Subject: bug#20107: [PATCH 2/3] css-mode: Add support for completion in `css-mode' Date: Sat, 14 Mar 2015 12:21:33 +0100 Message-ID: <1426332093.18090.1@smtp.gmail.com> References: <1426331941.18090.0@smtp.gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="=-iCo0C84BdLopVStHNIfB" X-Trace: ger.gmane.org 1426332149 29054 80.91.229.3 (14 Mar 2015 11:22:29 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 14 Mar 2015 11:22:29 +0000 (UTC) To: 20107@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Mar 14 12:22:18 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 1YWk8z-0006PZ-S9 for geb-bug-gnu-emacs@m.gmane.org; Sat, 14 Mar 2015 12:22:14 +0100 Original-Received: from localhost ([::1]:40404 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWk8y-0000hU-Tp for geb-bug-gnu-emacs@m.gmane.org; Sat, 14 Mar 2015 07:22:12 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43601) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWk8u-0000hE-FA for bug-gnu-emacs@gnu.org; Sat, 14 Mar 2015 07:22:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YWk8o-0008DS-FC for bug-gnu-emacs@gnu.org; Sat, 14 Mar 2015 07:22:08 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:47133) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YWk8o-0008DK-AQ for bug-gnu-emacs@gnu.org; Sat, 14 Mar 2015 07:22:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YWk8o-0003CT-0w for bug-gnu-emacs@gnu.org; Sat, 14 Mar 2015 07:22:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: <1426331941.18090.0@smtp.gmail.com> Resent-From: Simen =?UTF-8?Q?Heggest=C3=B8yl?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 14 Mar 2015 11:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20107 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 20107-submit@debbugs.gnu.org id=B20107.142633210012222 (code B ref 20107); Sat, 14 Mar 2015 11:22:01 +0000 Original-Received: (at 20107) by debbugs.gnu.org; 14 Mar 2015 11:21:40 +0000 Original-Received: from localhost ([127.0.0.1]:45698 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YWk8R-0003B4-82 for submit@debbugs.gnu.org; Sat, 14 Mar 2015 07:21:39 -0400 Original-Received: from mail-wg0-f54.google.com ([74.125.82.54]:35090) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YWk8O-0003Au-6P for 20107@debbugs.gnu.org; Sat, 14 Mar 2015 07:21:37 -0400 Original-Received: by wgdm6 with SMTP id m6so6330830wgd.2 for <20107@debbugs.gnu.org>; Sat, 14 Mar 2015 04:21:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:subject:to:message-id:mime-version:content-type; bh=7/Jw+wPh2qhLiWJBejrroz9QsGxB6Jefl4s4sbGDBAE=; b=MhGTEZ/RLNzgLxPMWl4EhKQ4DadGNPqD3noZBGmHi42Koq5ss2QI0zcMC4MDVucCbk J2qS2OE+1S3eLyy0MRG5ZEFbi5Iz6NHw+dM3WXtpynBtFzdeubRU0vTWSsI76Inml9cx 82Ti3VTQrsHbw/H+S9vqKp1YCR1IvEa4yh0FfczoGmfTzu91cGNEoqLnKSu3pFAhYtVy xTTK8YOHdwUZZI1kiCq1HbXOQtqN0Fp1G1m8VXbkqgbvm1tO+2nQIPKrHhcVOJmU9fU8 I9a+zy+LlHqRGlr6kwF8e/eLpnpEbCRTOqWjl7HKwOB2wFBqO0f+i3UTym7mTAmzz3SX PXpA== X-Received: by 10.180.75.140 with SMTP id c12mr75908310wiw.14.1426332095646; Sat, 14 Mar 2015 04:21:35 -0700 (PDT) Original-Received: from [192.168.1.114] (cm-84.215.200.46.getinternet.no. [84.215.200.46]) by mx.google.com with ESMTPSA id vv9sm6606787wjc.35.2015.03.14.04.21.34 for <20107@debbugs.gnu.org> (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 14 Mar 2015 04:21:35 -0700 (PDT) X-Mailer: geary/0.8.2 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:100470 Archived-At: --=-iCo0C84BdLopVStHNIfB Content-Type: text/plain; charset=utf-8; format=flowed Hi. The following patch adds support for completion at point to `css-mode'. From e312007cab0bfc72b59bab16ca56d8c5f6e29fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Heggest=C3=B8yl?= Date: Sat, 14 Mar 2015 11:05:55 +0100 Subject: [PATCH 2/3] Add support for completion in `css-mode' * textmodes/css-mode.el (css--complete-property): New function for completing CSS properties. (css--complete-pseudo-element-or-class): New function for completing CSS pseudo-elements and pseudo-classes. (css--complete-at-rule): New function for completing CSS at-rules. (css-completion-at-point): New function providing completion for `css-mode'. (css-mode): Add support for completion. --- lisp/ChangeLog | 8 ++++++++ lisp/textmodes/css-mode.el | 45 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 70122c7..36a1f87 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -5,6 +5,14 @@ (css-pseudo-ids): Remove. (css-pseudo-class-ids): New variable. (css-pseudo-element-ids): New variable. + (css--complete-property): New function for completing CSS + properties. + (css--complete-pseudo-element-or-class): New function for + completing CSS pseudo-elements and pseudo-classes. + (css--complete-at-rule): New function for completing CSS at-rules. + (css-completion-at-point): New function providing completion for + `css-mode'. + (css-mode): Add support for completion. 2015-03-13 Kevin Ryde diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index dc11d44..d467343 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -28,7 +28,7 @@ ;; - electric ; and } ;; - filling code with auto-fill-mode -;; - completion +;; - attribute value completion ;; - fix font-lock errors with multi-line selectors ;;; Code: @@ -345,6 +345,45 @@ (`(:before . ,(or "{" "(")) (if (smie-rule-hanging-p) (smie-rule-parent 0))))) +;;; Completion + +(defun css--complete-property () + "Complete property at point." + (save-excursion + (let ((pos (point))) + (skip-chars-backward "-[:alnum:]") + (let ((start (point))) + (skip-chars-backward " \t\r\n") + (when (memq (char-before) '(?\{ ?\;)) + (list start pos css-property-ids)))))) + +(defun css--complete-pseudo-element-or-class () + "Complete pseudo-element or pseudo-class at point." + (save-excursion + (let ((pos (point))) + (skip-chars-backward "-[:alnum:]") + (when (eq (char-before) ?\:) + (list (point) pos + (if (eq (char-before (- (point) 1)) ?\:) + css-pseudo-element-ids + css-pseudo-class-ids)))))) + +(defun css--complete-at-rule () + "Complete at-rule (statement beginning with `@') at point." + (save-excursion + (let ((pos (point))) + (skip-chars-backward "-[:alnum:]") + (when (eq (char-before) ?\@) + (list (point) pos css-at-ids))))) + +(defun css-completion-at-point () + "Complete current symbol at point. +Currently supports completion of CSS properties, pseudo-elements, +pesudo-classes, and at-rules." + (or (css--complete-property) + (css--complete-pseudo-element-or-class) + (css--complete-at-rule))) + ;;;###autoload (define-derived-mode css-mode fundamental-mode "CSS" "Major mode to edit Cascading Style Sheets." @@ -360,7 +399,9 @@ :forward-token #'css-smie--forward-token :backward-token #'css-smie--backward-token) (setq-local electric-indent-chars - (append css-electric-keys electric-indent-chars))) + (append css-electric-keys electric-indent-chars)) + (add-hook 'completion-at-point-functions + #'css-completion-at-point nil 'local)) (defvar comment-continue) -- 2.1.4 --=-iCo0C84BdLopVStHNIfB Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Hi.

The following patch adds support for comp= letion at point to
`css-mode'.


From e312007cab0bfc72b59bab16ca56d8c5f6e29fa8 Mon Sep 17 00:00:00 200= 1
From: =3D?UTF-8?q?Simen=3D20Heggest=3DC3=3DB8yl?=3D <simenhe= g@gmail.com>
Date: Sat, 14 Mar 2015 11:05:55 +0100
S= ubject: [PATCH 2/3] Add support for completion in `css-mode'

=
* textmodes/css-mode.el (css--complete-property): New function f= or
completing CSS properties.
(css--complete-pseudo-ele= ment-or-class): New function for
completing CSS pseudo-elements a= nd pseudo-classes.
(css--complete-at-rule): New function for comp= leting CSS at-rules.
(css-completion-at-point): New function prov= iding completion for
`css-mode'.
(css-mode): Add suppor= t for completion.
---
 lisp/ChangeLog    = ;         |  8 ++++++++
 lisp/textm= odes/css-mode.el | 45 +++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 70122= c7..36a1f87 100644
--- a/lisp/ChangeLog
+++ b/lisp/Chan= geLog
@@ -5,6 +5,14 @@
  (css-pseudo-ids): Remove.
=   (css= -pseudo-class-ids): New variable.
  (css-pseudo-element-ids): New varia= ble.
+ <= /span>(css--complete-property): New function for completing CSS
+= properties= .
+ (css--complete-pseudo-element-or-class): New function for
+ completing CS= S pseudo-elements and pseudo-classes.
+ (css--complete-at-rule): New functio= n for completing CSS at-rules.
+ (css-completion-at-point): New function pro= viding completion for
+ `css-mode'.
+ (css-mode): Add support for completion.=
 
 2015-03-13  Kevin Ryde  <use= r42_kevin@yahoo.com.au>
 
diff --git a/lisp/tex= tmodes/css-mode.el b/lisp/textmodes/css-mode.el
index dc11d44..d4= 67343 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lis= p/textmodes/css-mode.el
@@ -28,7 +28,7 @@
 
<= div> ;; - electric ; and }
 ;; - filling code with auto= -fill-mode
-;; - completion
+;; - attribute value compl= etion
 ;; - fix font-lock errors with multi-line selectors
 
 ;;; Code:
@@ -345,6 +345,45 @@
     (`(:before . ,(or "{" "("))
  &n= bsp;   (if (smie-rule-hanging-p) (smie-rule-parent 0)))))
&n= bsp;
+;;; Completion
+
+(defun css--complete-= property ()
+  "Complete property at point."
+ &nb= sp;(save-excursion
+    (let ((pos (point)))
= +      (skip-chars-backward "-[:alnum:]")
+  =    (let ((start (point)))
+        = ;(skip-chars-backward " \t\r\n")
+        (wh= en (memq (char-before) '(?\{ ?\;))
+         =  (list start pos css-property-ids))))))
+
+(defun = css--complete-pseudo-element-or-class ()
+  "Complete pseudo= -element or pseudo-class at point."
+  (save-excursion
=
+    (let ((pos (point)))
+      (s= kip-chars-backward "-[:alnum:]")
+      (when (eq = (char-before) ?\:)
+        (list (point) pos=
+              (if (eq (char-= before (- (point) 1)) ?\:)
+           &= nbsp;      css-pseudo-element-ids
+     =            css-pseudo-class-ids))))))
+
+(defun css--complete-at-rule ()
+  "Complete= at-rule (statement beginning with `@') at point."
+  (save-= excursion
+    (let ((pos (point)))
+   =    (skip-chars-backward "-[:alnum:]")
+     &= nbsp;(when (eq (char-before) ?\@)
+        (l= ist (point) pos css-at-ids)))))
+
+(defun css-completio= n-at-point ()
+  "Complete current symbol at point.
+Currently supports completion of CSS properties, pseudo-elements,
<= div>+pesudo-classes, and at-rules."
+  (or (css--complete-pr= operty)
+      (css--complete-pseudo-element-or-cl= ass)
+      (css--complete-at-rule)))
+<= /div>
 ;;;###autoload
 (define-derived-mode css-mod= e fundamental-mode "CSS"
   "Major mode to edit Cascadi= ng Style Sheets."
@@ -360,7 +399,9 @@
    &nb= sp;          :forward-token #'css-smie--forward-to= ken
               :backw= ard-token #'css-smie--backward-token)
   (setq-local el= ectric-indent-chars
-             &= nbsp;(append css-electric-keys electric-indent-chars)))
+   =            (append css-electric-keys electric= -indent-chars))
+  (add-hook 'completion-at-point-functions<= /div>
+            #'css-completion-at-po= int nil 'local))
 
 (defvar comment-continue)=
 
-- 
2.1.4
= --=-iCo0C84BdLopVStHNIfB--