emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/systemd 0c871fc 042/131: Use four different candidate list


From: ELPA Syncer
Subject: [nongnu] elpa/systemd 0c871fc 042/131: Use four different candidate lists:
Date: Sun, 29 Aug 2021 11:35:11 -0400 (EDT)

branch: elpa/systemd
commit 0c871fc508deb2fe84dab948d320fea36b851645
Author: Mark Oteiza <mvoteiza@udel.edu>
Commit: Mark Oteiza <mvoteiza@udel.edu>

    Use four different candidate lists:
    
    Section vs directive, normal unit vs network configuration
---
 systemd-company.el | 37 +++++++++++++++++++++++++++++--------
 1 file changed, 29 insertions(+), 8 deletions(-)

diff --git a/systemd-company.el b/systemd-company.el
index 5bfa38a..906f134 100644
--- a/systemd-company.el
+++ b/systemd-company.el
@@ -27,6 +27,10 @@
 (declare-function company-begin-backend "company")
 (declare-function company-grab-symbol "company")
 
+(defconst systemd-company-unit-sections
+  '("Unit" "Install" "Service")
+  "Configuration sections for systemd 224.")
+
 (defconst systemd-company-unit-directives
   ;; TODO: keep a script of sorts for generating this list.  systemd
   ;; source has a python script in tools/ for parsing the
@@ -107,6 +111,12 @@
     "Where" "WorkingDirectory")
   "Configuration directives for systemd 224.")
 
+(defconst systemd-company-network-sections
+  '("Match" "Link" "NetDev" "VLAN" "MACVLAN" "MACVTAP" "IPVLAN" "VXLAN"
+    "Tunnel" "Peer" "Tun" "Tap" "Bond" "Network" "Address" "Route" "DHCP"
+    "Bridge" "BridgeFDB")
+  "Network configuration sections for systemd 224.")
+
 (defconst systemd-company-network-directives
   ;; /Network directives/,/Journal fields/p
   '("ARPAllTargets" "ARPIPTargets" "ARPIntervalSec" "ARPProxy" "ARPValidate"
@@ -133,16 +143,20 @@
     "WakeOnLan")
   "Network configuration directives for systemd 224.")
 
-(defconst systemd-company-directives
-  (append systemd-company-unit-directives systemd-company-network-directives)
-  "Configuration directives for systemd.
-Combination of `systemd-company-unit-directives' and
-`systemd-company-network-directives'.")
-
 (defun systemd-company--setup (enable)
   (when (fboundp 'systemd-company--setup-company)
     (systemd-company--setup-company enable)))
 
+(defun systemd-company-section-p ()
+  "Return t if current line begins with \"[\", otherwise nil"
+  (save-excursion
+    (beginning-of-line)
+    (looking-at "\\[")))
+
+(defun systemd-company-network-p ()
+  "Return non-nil if `buffer-name' has a network-type extension, otherwise nil"
+  (string-match "\\.\\(link\\|netdev\\|network\\)\\'" (buffer-name)))
+
 (with-eval-after-load "company"
   (defun systemd-company-backend (command &optional arg &rest ignored)
     (interactive (list 'interactive))
@@ -151,8 +165,15 @@ Combination of `systemd-company-unit-directives' and
       (prefix (and (eq major-mode 'systemd-mode)
                    (company-grab-symbol)))
       (candidates
-       (cl-remove-if-not (lambda (c) (string-prefix-p arg c))
-                         systemd-company-directives))))
+       (cl-remove-if-not
+        (lambda (c) (string-prefix-p arg c))
+        (if (systemd-company-network-p)
+            (if (systemd-company-section-p)
+                systemd-company-network-sections
+              systemd-company-network-directives)
+          (if (systemd-company-section-p)
+              systemd-company-unit-sections
+            systemd-company-unit-directives))))))
   (defun systemd-company--setup-company (enable)
     (when enable
       (add-to-list (make-local-variable 'company-backends) 
'systemd-company-backend))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]