Refactor: rename verilog-align-ports-* to verilog-align-*
This commit is contained in:
16
README.md
16
README.md
@@ -1,20 +1,20 @@
|
|||||||
# verilog-align-ports
|
# verilog-align
|
||||||
|
|
||||||
Align SystemVerilog ANSI-style port declarations in a contiguous block around point.
|
Align SystemVerilog port declarations, instantiations, and signal declarations around point.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Aligns direction, type, range, name, and trailing `//` comments.
|
- Aligns direction, type, range, name, and trailing `//` comments.
|
||||||
- Works on the contiguous block of port declarations above and below point.
|
- Works on the contiguous block of port declarations above and below point.
|
||||||
- Stops at the first non-port line (including blank lines).
|
- Stops at the first non-port line (including blank lines).
|
||||||
- Aligns named port connections in module instantiations via `verilog-align-ports-instantiation`.
|
- Aligns named port connections in module instantiations via `verilog-align-instantiation`.
|
||||||
- Aligns signal declarations via `verilog-align-ports-declarations`.
|
- Aligns signal declarations via `verilog-align-declarations`.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```elisp
|
```elisp
|
||||||
(add-to-list 'load-path "/path/to/verilog-align-ports")
|
(add-to-list 'load-path "/path/to/verilog-align")
|
||||||
(require 'verilog-align-ports)
|
(require 'verilog-align)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
@@ -25,12 +25,12 @@ Align SystemVerilog ANSI-style port declarations in a contiguous block around po
|
|||||||
For module instantiations:
|
For module instantiations:
|
||||||
|
|
||||||
1. Place point on a named port connection line (e.g., `.clk_i (clk)` or `.full_o,`).
|
1. Place point on a named port connection line (e.g., `.clk_i (clk)` or `.full_o,`).
|
||||||
2. Run `M-x verilog-align-ports-instantiation`.
|
2. Run `M-x verilog-align-instantiation`.
|
||||||
|
|
||||||
For signal declarations:
|
For signal declarations:
|
||||||
|
|
||||||
1. Place point on a declaration line (e.g., `logic foo;` or `wire [3:0] bar;`).
|
1. Place point on a declaration line (e.g., `logic foo;` or `wire [3:0] bar;`).
|
||||||
2. Run `M-x verilog-align-ports-declarations`.
|
2. Run `M-x verilog-align-declarations`.
|
||||||
|
|
||||||
Example input:
|
Example input:
|
||||||
|
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ set -euo pipefail
|
|||||||
|
|
||||||
emacs -batch \
|
emacs -batch \
|
||||||
-l ert \
|
-l ert \
|
||||||
-l verilog-align-ports-test.el \
|
-l verilog-align-test.el \
|
||||||
-f ert-run-tests-batch-and-exit
|
-f ert-run-tests-batch-and-exit
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
;;; verilog-align-ports-test.el --- Tests for verilog-align-ports -*- lexical-binding: t; -*-
|
;;; verilog-align-test.el --- Tests for verilog-align -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;; ERT tests for verilog-align-ports.
|
;; ERT tests for verilog-align.
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'ert)
|
(require 'ert)
|
||||||
|
|
||||||
(defconst verilog-align-ports-test--dir
|
(defconst verilog-align-test--dir
|
||||||
(file-name-directory (or load-file-name buffer-file-name)))
|
(file-name-directory (or load-file-name buffer-file-name)))
|
||||||
|
|
||||||
(load-file (expand-file-name "verilog-align-ports.el"
|
(load-file (expand-file-name "verilog-align.el"
|
||||||
verilog-align-ports-test--dir))
|
verilog-align-test--dir))
|
||||||
|
|
||||||
(ert-deftest verilog-align-ports-aligns-block ()
|
(ert-deftest verilog-align-ports-aligns-block ()
|
||||||
(let* ((input (concat
|
(let* ((input (concat
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
(verilog-align-ports)
|
(verilog-align-ports)
|
||||||
(should (string= (buffer-string) expected)))))
|
(should (string= (buffer-string) expected)))))
|
||||||
|
|
||||||
(ert-deftest verilog-align-ports-instantiation-aligns-block ()
|
(ert-deftest verilog-align-instantiation-aligns-block ()
|
||||||
(let* ((input (concat
|
(let* ((input (concat
|
||||||
(mapconcat
|
(mapconcat
|
||||||
#'identity
|
#'identity
|
||||||
@@ -121,10 +121,10 @@
|
|||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(search-forward ".clk_i")
|
(search-forward ".clk_i")
|
||||||
(beginning-of-line)
|
(beginning-of-line)
|
||||||
(should (verilog-align-ports-instantiation))
|
(should (verilog-align-instantiation))
|
||||||
(should (string= (buffer-string) expected)))))
|
(should (string= (buffer-string) expected)))))
|
||||||
|
|
||||||
(ert-deftest verilog-align-ports-instantiation-returns-nil-outside ()
|
(ert-deftest verilog-align-instantiation-returns-nil-outside ()
|
||||||
(with-temp-buffer
|
(with-temp-buffer
|
||||||
(insert (concat
|
(insert (concat
|
||||||
(mapconcat
|
(mapconcat
|
||||||
@@ -138,9 +138,9 @@
|
|||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(search-forward "dut (")
|
(search-forward "dut (")
|
||||||
(beginning-of-line)
|
(beginning-of-line)
|
||||||
(should (not (verilog-align-ports-instantiation)))))
|
(should (not (verilog-align-instantiation)))))
|
||||||
|
|
||||||
(ert-deftest verilog-align-ports-declarations-aligns-block ()
|
(ert-deftest verilog-align-declarations-aligns-block ()
|
||||||
(let* ((input (concat
|
(let* ((input (concat
|
||||||
(mapconcat
|
(mapconcat
|
||||||
#'identity
|
#'identity
|
||||||
@@ -184,10 +184,10 @@
|
|||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(search-forward "logic full_o")
|
(search-forward "logic full_o")
|
||||||
(beginning-of-line)
|
(beginning-of-line)
|
||||||
(should (verilog-align-ports-declarations))
|
(should (verilog-align-declarations))
|
||||||
(should (string= (buffer-string) expected)))))
|
(should (string= (buffer-string) expected)))))
|
||||||
|
|
||||||
(ert-deftest verilog-align-ports-declarations-returns-nil-outside ()
|
(ert-deftest verilog-align-declarations-returns-nil-outside ()
|
||||||
(with-temp-buffer
|
(with-temp-buffer
|
||||||
(insert (concat
|
(insert (concat
|
||||||
(mapconcat
|
(mapconcat
|
||||||
@@ -200,8 +200,8 @@
|
|||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(search-forward "module foo")
|
(search-forward "module foo")
|
||||||
(beginning-of-line)
|
(beginning-of-line)
|
||||||
(should (not (verilog-align-ports-declarations)))))
|
(should (not (verilog-align-declarations)))))
|
||||||
|
|
||||||
(provide 'verilog-align-ports-test)
|
(provide 'verilog-align-test)
|
||||||
|
|
||||||
;;; verilog-align-ports-test.el ends here
|
;;; verilog-align-test.el ends here
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
;;; verilog-align-ports.el --- Align SystemVerilog port declarations -*- lexical-binding: t; -*-
|
;;; verilog-align.el --- Align SystemVerilog port declarations -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;; Align SystemVerilog ANSI-style port declarations in a contiguous block.
|
;; Align SystemVerilog port declarations, instantiations, and signal declarations.
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'cl-lib)
|
(require 'cl-lib)
|
||||||
(require 'subr-x)
|
(require 'subr-x)
|
||||||
|
|
||||||
(defun verilog-align-ports--line-port-p (pos)
|
(defun verilog-align--line-port-p (pos)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char pos)
|
(goto-char pos)
|
||||||
(let ((line (buffer-substring-no-properties
|
(let ((line (buffer-substring-no-properties
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
(line-end-position))))
|
(line-end-position))))
|
||||||
(string-match-p "^\\s-*\\(input\\|output\\|inout\\)\\b" line))))
|
(string-match-p "^\\s-*\\(input\\|output\\|inout\\)\\b" line))))
|
||||||
|
|
||||||
(defun verilog-align-ports--line-inst-port-p (pos)
|
(defun verilog-align--line-inst-port-p (pos)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char pos)
|
(goto-char pos)
|
||||||
(let ((line (buffer-substring-no-properties
|
(let ((line (buffer-substring-no-properties
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
"^\\s-*\\.\\(\\\\[^[:space:]]+\\|[A-Za-z_][A-Za-z0-9_$]*\\)\\b"
|
"^\\s-*\\.\\(\\\\[^[:space:]]+\\|[A-Za-z_][A-Za-z0-9_$]*\\)\\b"
|
||||||
line))))
|
line))))
|
||||||
|
|
||||||
(defun verilog-align-ports--line-decl-p (pos)
|
(defun verilog-align--line-decl-p (pos)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char pos)
|
(goto-char pos)
|
||||||
(let ((line (buffer-substring-no-properties
|
(let ((line (buffer-substring-no-properties
|
||||||
@@ -35,16 +35,16 @@
|
|||||||
(and (string-match-p
|
(and (string-match-p
|
||||||
"^\\s-*\\(logic\\|wire\\|reg\\)\\b"
|
"^\\s-*\\(logic\\|wire\\|reg\\)\\b"
|
||||||
line)
|
line)
|
||||||
(verilog-align-ports--parse-decl-line line)))))
|
(verilog-align--parse-decl-line line)))))
|
||||||
|
|
||||||
(defun verilog-align-ports--split-comment (line)
|
(defun verilog-align--split-comment (line)
|
||||||
(let ((pos (string-match "//" line)))
|
(let ((pos (string-match "//" line)))
|
||||||
(if pos
|
(if pos
|
||||||
(cons (substring line 0 pos) (substring line pos))
|
(cons (substring line 0 pos) (substring line pos))
|
||||||
(cons line nil))))
|
(cons line nil))))
|
||||||
|
|
||||||
(defun verilog-align-ports--parse-line (line)
|
(defun verilog-align--parse-line (line)
|
||||||
(let* ((split (verilog-align-ports--split-comment line))
|
(let* ((split (verilog-align--split-comment line))
|
||||||
(code (string-trim-right (car split)))
|
(code (string-trim-right (car split)))
|
||||||
(comment (cdr split)))
|
(comment (cdr split)))
|
||||||
(when (string-match
|
(when (string-match
|
||||||
@@ -86,67 +86,67 @@
|
|||||||
:comma comma
|
:comma comma
|
||||||
:comment comment)))))
|
:comment comment)))))
|
||||||
|
|
||||||
(defun verilog-align-ports--bounds ()
|
(defun verilog-align--bounds ()
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(and (verilog-align-ports--line-port-p (line-beginning-position))
|
(and (verilog-align--line-port-p (line-beginning-position))
|
||||||
(let ((start (line-beginning-position))
|
(let ((start (line-beginning-position))
|
||||||
(end nil))
|
(end nil))
|
||||||
(while (and (not (bobp))
|
(while (and (not (bobp))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(verilog-align-ports--line-port-p
|
(verilog-align--line-port-p
|
||||||
(line-beginning-position))))
|
(line-beginning-position))))
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(setq start (line-beginning-position)))
|
(setq start (line-beginning-position)))
|
||||||
(goto-char start)
|
(goto-char start)
|
||||||
(while (and (not (eobp))
|
(while (and (not (eobp))
|
||||||
(verilog-align-ports--line-port-p
|
(verilog-align--line-port-p
|
||||||
(line-beginning-position)))
|
(line-beginning-position)))
|
||||||
(forward-line 1))
|
(forward-line 1))
|
||||||
(setq end (line-beginning-position))
|
(setq end (line-beginning-position))
|
||||||
(cons start end)))))
|
(cons start end)))))
|
||||||
|
|
||||||
(defun verilog-align-ports--inst-bounds ()
|
(defun verilog-align--inst-bounds ()
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(and (verilog-align-ports--line-inst-port-p (line-beginning-position))
|
(and (verilog-align--line-inst-port-p (line-beginning-position))
|
||||||
(let ((start (line-beginning-position))
|
(let ((start (line-beginning-position))
|
||||||
(end nil))
|
(end nil))
|
||||||
(while (and (not (bobp))
|
(while (and (not (bobp))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(verilog-align-ports--line-inst-port-p
|
(verilog-align--line-inst-port-p
|
||||||
(line-beginning-position))))
|
(line-beginning-position))))
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(setq start (line-beginning-position)))
|
(setq start (line-beginning-position)))
|
||||||
(goto-char start)
|
(goto-char start)
|
||||||
(while (and (not (eobp))
|
(while (and (not (eobp))
|
||||||
(verilog-align-ports--line-inst-port-p
|
(verilog-align--line-inst-port-p
|
||||||
(line-beginning-position)))
|
(line-beginning-position)))
|
||||||
(forward-line 1))
|
(forward-line 1))
|
||||||
(setq end (line-beginning-position))
|
(setq end (line-beginning-position))
|
||||||
(cons start end)))))
|
(cons start end)))))
|
||||||
|
|
||||||
(defun verilog-align-ports--decl-bounds ()
|
(defun verilog-align--decl-bounds ()
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(and (verilog-align-ports--line-decl-p (line-beginning-position))
|
(and (verilog-align--line-decl-p (line-beginning-position))
|
||||||
(let ((start (line-beginning-position))
|
(let ((start (line-beginning-position))
|
||||||
(end nil))
|
(end nil))
|
||||||
(while (and (not (bobp))
|
(while (and (not (bobp))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(verilog-align-ports--line-decl-p
|
(verilog-align--line-decl-p
|
||||||
(line-beginning-position))))
|
(line-beginning-position))))
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(setq start (line-beginning-position)))
|
(setq start (line-beginning-position)))
|
||||||
(goto-char start)
|
(goto-char start)
|
||||||
(while (and (not (eobp))
|
(while (and (not (eobp))
|
||||||
(verilog-align-ports--line-decl-p
|
(verilog-align--line-decl-p
|
||||||
(line-beginning-position)))
|
(line-beginning-position)))
|
||||||
(forward-line 1))
|
(forward-line 1))
|
||||||
(setq end (line-beginning-position))
|
(setq end (line-beginning-position))
|
||||||
(cons start end)))))
|
(cons start end)))))
|
||||||
|
|
||||||
(defun verilog-align-ports--collect (start end)
|
(defun verilog-align--collect (start end)
|
||||||
(let (entries)
|
(let (entries)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char start)
|
(goto-char start)
|
||||||
@@ -154,13 +154,13 @@
|
|||||||
(let* ((line (buffer-substring-no-properties
|
(let* ((line (buffer-substring-no-properties
|
||||||
(line-beginning-position)
|
(line-beginning-position)
|
||||||
(line-end-position)))
|
(line-end-position)))
|
||||||
(entry (verilog-align-ports--parse-line line)))
|
(entry (verilog-align--parse-line line)))
|
||||||
(when entry
|
(when entry
|
||||||
(push entry entries)))
|
(push entry entries)))
|
||||||
(forward-line 1)))
|
(forward-line 1)))
|
||||||
(nreverse entries)))
|
(nreverse entries)))
|
||||||
|
|
||||||
(defun verilog-align-ports--find-paren-end (text start)
|
(defun verilog-align--find-paren-end (text start)
|
||||||
(let ((depth 0)
|
(let ((depth 0)
|
||||||
(idx start)
|
(idx start)
|
||||||
(len (length text))
|
(len (length text))
|
||||||
@@ -176,8 +176,8 @@
|
|||||||
(setq idx (1+ idx)))
|
(setq idx (1+ idx)))
|
||||||
end))
|
end))
|
||||||
|
|
||||||
(defun verilog-align-ports--parse-inst-line (line)
|
(defun verilog-align--parse-inst-line (line)
|
||||||
(let* ((split (verilog-align-ports--split-comment line))
|
(let* ((split (verilog-align--split-comment line))
|
||||||
(code (string-trim-right (car split)))
|
(code (string-trim-right (car split)))
|
||||||
(comment (cdr split)))
|
(comment (cdr split)))
|
||||||
(when (string-match
|
(when (string-match
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
(conn "")
|
(conn "")
|
||||||
(comma nil))
|
(comma nil))
|
||||||
(if (and pos (< pos (length rest)) (eq (aref rest pos) ?\())
|
(if (and pos (< pos (length rest)) (eq (aref rest pos) ?\())
|
||||||
(let* ((end (verilog-align-ports--find-paren-end rest pos)))
|
(let* ((end (verilog-align--find-paren-end rest pos)))
|
||||||
(if end
|
(if end
|
||||||
(progn
|
(progn
|
||||||
(setq has-conn t)
|
(setq has-conn t)
|
||||||
@@ -216,8 +216,8 @@
|
|||||||
:comma comma
|
:comma comma
|
||||||
:comment comment)))))
|
:comment comment)))))
|
||||||
|
|
||||||
(defun verilog-align-ports--parse-decl-line (line)
|
(defun verilog-align--parse-decl-line (line)
|
||||||
(let* ((split (verilog-align-ports--split-comment line))
|
(let* ((split (verilog-align--split-comment line))
|
||||||
(code (string-trim-right (car split)))
|
(code (string-trim-right (car split)))
|
||||||
(comment (cdr split)))
|
(comment (cdr split)))
|
||||||
(when (string-match
|
(when (string-match
|
||||||
@@ -260,7 +260,7 @@
|
|||||||
:tail tail
|
:tail tail
|
||||||
:comment comment))))))))
|
:comment comment))))))))
|
||||||
|
|
||||||
(defun verilog-align-ports--inst-collect (start end)
|
(defun verilog-align--inst-collect (start end)
|
||||||
(let (entries)
|
(let (entries)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char start)
|
(goto-char start)
|
||||||
@@ -268,13 +268,13 @@
|
|||||||
(let* ((line (buffer-substring-no-properties
|
(let* ((line (buffer-substring-no-properties
|
||||||
(line-beginning-position)
|
(line-beginning-position)
|
||||||
(line-end-position)))
|
(line-end-position)))
|
||||||
(entry (verilog-align-ports--parse-inst-line line)))
|
(entry (verilog-align--parse-inst-line line)))
|
||||||
(when entry
|
(when entry
|
||||||
(push entry entries)))
|
(push entry entries)))
|
||||||
(forward-line 1)))
|
(forward-line 1)))
|
||||||
(nreverse entries)))
|
(nreverse entries)))
|
||||||
|
|
||||||
(defun verilog-align-ports--decl-collect (start end)
|
(defun verilog-align--decl-collect (start end)
|
||||||
(let (entries)
|
(let (entries)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char start)
|
(goto-char start)
|
||||||
@@ -282,13 +282,13 @@
|
|||||||
(let* ((line (buffer-substring-no-properties
|
(let* ((line (buffer-substring-no-properties
|
||||||
(line-beginning-position)
|
(line-beginning-position)
|
||||||
(line-end-position)))
|
(line-end-position)))
|
||||||
(entry (verilog-align-ports--parse-decl-line line)))
|
(entry (verilog-align--parse-decl-line line)))
|
||||||
(when entry
|
(when entry
|
||||||
(push entry entries)))
|
(push entry entries)))
|
||||||
(forward-line 1)))
|
(forward-line 1)))
|
||||||
(nreverse entries)))
|
(nreverse entries)))
|
||||||
|
|
||||||
(defun verilog-align-ports--max-lengths (entries)
|
(defun verilog-align--max-lengths (entries)
|
||||||
(let ((max-dir 0)
|
(let ((max-dir 0)
|
||||||
(max-type 0)
|
(max-type 0)
|
||||||
(max-range 0)
|
(max-range 0)
|
||||||
@@ -305,12 +305,12 @@
|
|||||||
(setq has-comment t)))
|
(setq has-comment t)))
|
||||||
(list max-dir max-type max-range max-name has-comment)))
|
(list max-dir max-type max-range max-name has-comment)))
|
||||||
|
|
||||||
(defun verilog-align-ports--pad (max-len len)
|
(defun verilog-align--pad (max-len len)
|
||||||
(make-string (+ 1 (- max-len len)) ?\s))
|
(make-string (+ 1 (- max-len len)) ?\s))
|
||||||
|
|
||||||
(defun verilog-align-ports--format-lines (entries)
|
(defun verilog-align--format-lines (entries)
|
||||||
(let* ((base-indent (plist-get (car entries) :indent))
|
(let* ((base-indent (plist-get (car entries) :indent))
|
||||||
(maxes (verilog-align-ports--max-lengths entries))
|
(maxes (verilog-align--max-lengths entries))
|
||||||
(max-dir (nth 0 maxes))
|
(max-dir (nth 0 maxes))
|
||||||
(max-type (nth 1 maxes))
|
(max-type (nth 1 maxes))
|
||||||
(max-range (nth 2 maxes))
|
(max-range (nth 2 maxes))
|
||||||
@@ -326,13 +326,13 @@
|
|||||||
(name (concat (plist-get entry :name)
|
(name (concat (plist-get entry :name)
|
||||||
(or (plist-get entry :comma) "")))
|
(or (plist-get entry :comma) "")))
|
||||||
(comment (plist-get entry :comment))
|
(comment (plist-get entry :comment))
|
||||||
(dir-pad (verilog-align-ports--pad max-dir (length dir)))
|
(dir-pad (verilog-align--pad max-dir (length dir)))
|
||||||
(type-pad (when has-type
|
(type-pad (when has-type
|
||||||
(verilog-align-ports--pad max-type (length type))))
|
(verilog-align--pad max-type (length type))))
|
||||||
(range-pad (when has-range
|
(range-pad (when has-range
|
||||||
(verilog-align-ports--pad max-range (length range))))
|
(verilog-align--pad max-range (length range))))
|
||||||
(name-pad (when (and has-comment comment)
|
(name-pad (when (and has-comment comment)
|
||||||
(verilog-align-ports--pad max-name (length name)))))
|
(verilog-align--pad max-name (length name)))))
|
||||||
(concat base-indent
|
(concat base-indent
|
||||||
dir
|
dir
|
||||||
dir-pad
|
dir-pad
|
||||||
@@ -345,7 +345,7 @@
|
|||||||
(or comment ""))))
|
(or comment ""))))
|
||||||
entries)))
|
entries)))
|
||||||
|
|
||||||
(defun verilog-align-ports--inst-format-lines (entries)
|
(defun verilog-align--inst-format-lines (entries)
|
||||||
(let* ((base-indent (plist-get (car entries) :indent))
|
(let* ((base-indent (plist-get (car entries) :indent))
|
||||||
(max-name 0)
|
(max-name 0)
|
||||||
(has-comment nil)
|
(has-comment nil)
|
||||||
@@ -363,7 +363,7 @@
|
|||||||
(conn (plist-get entry :conn))
|
(conn (plist-get entry :conn))
|
||||||
(comma (plist-get entry :comma))
|
(comma (plist-get entry :comma))
|
||||||
(pad (when has-conn
|
(pad (when has-conn
|
||||||
(verilog-align-ports--pad max-name (length name-field))))
|
(verilog-align--pad max-name (length name-field))))
|
||||||
(left (concat base-indent
|
(left (concat base-indent
|
||||||
name-field
|
name-field
|
||||||
(when has-conn pad)
|
(when has-conn pad)
|
||||||
@@ -379,12 +379,12 @@
|
|||||||
(let ((comment (plist-get entry :comment)))
|
(let ((comment (plist-get entry :comment)))
|
||||||
(if (and has-comment comment)
|
(if (and has-comment comment)
|
||||||
(concat left
|
(concat left
|
||||||
(verilog-align-ports--pad max-left (length left))
|
(verilog-align--pad max-left (length left))
|
||||||
comment)
|
comment)
|
||||||
left)))
|
left)))
|
||||||
entries left-parts)))
|
entries left-parts)))
|
||||||
|
|
||||||
(defun verilog-align-ports--decl-format-lines (entries)
|
(defun verilog-align--decl-format-lines (entries)
|
||||||
(let* ((base-indent (plist-get (car entries) :indent))
|
(let* ((base-indent (plist-get (car entries) :indent))
|
||||||
(max-type 0)
|
(max-type 0)
|
||||||
(max-range 0)
|
(max-range 0)
|
||||||
@@ -402,9 +402,9 @@
|
|||||||
(range (plist-get entry :range))
|
(range (plist-get entry :range))
|
||||||
(name (plist-get entry :name))
|
(name (plist-get entry :name))
|
||||||
(tail (plist-get entry :tail))
|
(tail (plist-get entry :tail))
|
||||||
(type-pad (verilog-align-ports--pad max-type (length type)))
|
(type-pad (verilog-align--pad max-type (length type)))
|
||||||
(range-pad (when has-range
|
(range-pad (when has-range
|
||||||
(verilog-align-ports--pad max-range (length range))))
|
(verilog-align--pad max-range (length range))))
|
||||||
(left (concat base-indent
|
(left (concat base-indent
|
||||||
type
|
type
|
||||||
type-pad
|
type-pad
|
||||||
@@ -421,12 +421,12 @@
|
|||||||
(let ((comment (plist-get entry :comment)))
|
(let ((comment (plist-get entry :comment)))
|
||||||
(if (and has-comment comment)
|
(if (and has-comment comment)
|
||||||
(concat left
|
(concat left
|
||||||
(verilog-align-ports--pad max-left (length left))
|
(verilog-align--pad max-left (length left))
|
||||||
comment)
|
comment)
|
||||||
left)))
|
left)))
|
||||||
entries left-parts))))
|
entries left-parts))))
|
||||||
|
|
||||||
(defun verilog-align-ports--apply (start lines)
|
(defun verilog-align--apply (start lines)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char start)
|
(goto-char start)
|
||||||
(dolist (line lines)
|
(dolist (line lines)
|
||||||
@@ -438,44 +438,44 @@
|
|||||||
(defun verilog-align-ports ()
|
(defun verilog-align-ports ()
|
||||||
"Align SystemVerilog port declarations around point."
|
"Align SystemVerilog port declarations around point."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((bounds (verilog-align-ports--bounds)))
|
(let ((bounds (verilog-align--bounds)))
|
||||||
(and bounds
|
(and bounds
|
||||||
(let* ((start (car bounds))
|
(let* ((start (car bounds))
|
||||||
(end (cdr bounds))
|
(end (cdr bounds))
|
||||||
(entries (verilog-align-ports--collect start end)))
|
(entries (verilog-align--collect start end)))
|
||||||
(and entries
|
(and entries
|
||||||
(let ((lines (verilog-align-ports--format-lines entries)))
|
(let ((lines (verilog-align--format-lines entries)))
|
||||||
(verilog-align-ports--apply start lines)
|
(verilog-align--apply start lines)
|
||||||
t))))))
|
t))))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun verilog-align-ports-instantiation ()
|
(defun verilog-align-instantiation ()
|
||||||
"Align SystemVerilog named port connections around point."
|
"Align SystemVerilog named port connections around point."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((bounds (verilog-align-ports--inst-bounds)))
|
(let ((bounds (verilog-align--inst-bounds)))
|
||||||
(and bounds
|
(and bounds
|
||||||
(let* ((start (car bounds))
|
(let* ((start (car bounds))
|
||||||
(end (cdr bounds))
|
(end (cdr bounds))
|
||||||
(entries (verilog-align-ports--inst-collect start end)))
|
(entries (verilog-align--inst-collect start end)))
|
||||||
(and entries
|
(and entries
|
||||||
(let ((lines (verilog-align-ports--inst-format-lines entries)))
|
(let ((lines (verilog-align--inst-format-lines entries)))
|
||||||
(verilog-align-ports--apply start lines)
|
(verilog-align--apply start lines)
|
||||||
t))))))
|
t))))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun verilog-align-ports-declarations ()
|
(defun verilog-align-declarations ()
|
||||||
"Align SystemVerilog signal declarations around point."
|
"Align SystemVerilog signal declarations around point."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((bounds (verilog-align-ports--decl-bounds)))
|
(let ((bounds (verilog-align--decl-bounds)))
|
||||||
(and bounds
|
(and bounds
|
||||||
(let* ((start (car bounds))
|
(let* ((start (car bounds))
|
||||||
(end (cdr bounds))
|
(end (cdr bounds))
|
||||||
(entries (verilog-align-ports--decl-collect start end)))
|
(entries (verilog-align--decl-collect start end)))
|
||||||
(and entries
|
(and entries
|
||||||
(let ((lines (verilog-align-ports--decl-format-lines entries)))
|
(let ((lines (verilog-align--decl-format-lines entries)))
|
||||||
(verilog-align-ports--apply start lines)
|
(verilog-align--apply start lines)
|
||||||
t))))))
|
t))))))
|
||||||
|
|
||||||
(provide 'verilog-align-ports)
|
(provide 'verilog-align)
|
||||||
|
|
||||||
;;; verilog-align-ports.el ends here
|
;;; verilog-align.el ends here
|
||||||
Reference in New Issue
Block a user