[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed f33147d 043/216: Add syntax object adjusted from
From: |
Stefan Monnier |
Subject: |
[elpa] externals/objed f33147d 043/216: Add syntax object adjusted from laishulu/evil-textobj-syntax |
Date: |
Tue, 8 Jan 2019 12:29:08 -0500 (EST) |
branch: externals/objed
commit f33147d030e71deb17632861cdb864673dab8cf2
Author: Clemera <address@hidden>
Commit: Clemera <address@hidden>
Add syntax object adjusted from laishulu/evil-textobj-syntax
---
objed-objects.el | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
objed.el | 2 ++
2 files changed, 60 insertions(+)
diff --git a/objed-objects.el b/objed-objects.el
index 9599937..166fbe7 100644
--- a/objed-objects.el
+++ b/objed-objects.el
@@ -1902,6 +1902,64 @@ non-nil the indentation block can contain empty lines."
:try-prev
(search-backward ">" nil t))
+
+(defun objed--what-face (pos)
+ (let ((face (or (get-char-property (pos) 'read-face-name)
+ (get-char-property (pos) 'face))))
+ (unless (keywordp (car-safe face)) (list face))))
+
+;; from `evil-textobj-syntax'
+(defun objed--get-syntax-range (&optional inclusive arg)
+ (let ((point-face (-what-face))
+ (backward-point (point)) ; last char when stop, including white space
+ (backward-none-space-point (point)) ; last none white space char
+ (forward-point (point)) ; last char when stop, including white space
+ (forward-none-space-point (point)) ; last none white space char
+ (start (point))
+ (end (point)))
+
+ ;; check chars backward,
+ ;; stop when char is not white space and has different face
+ (save-excursion
+ (let ((continue t))
+ (while (and continue (>= (- (point) 1) (point-min)))
+ (backward-char)
+ (let ((backward-point-face (-what-face)))
+ (if (= 32 (char-syntax (char-after)))
+ (setq backward-point (point))
+ (if (equal point-face backward-point-face)
+ (progn (setq backward-point (point))
+ (setq backward-none-space-point (point)))
+ (setq continue nil)))))))
+
+ ;; check chars forward,
+ ;; stop when char is not white space and has different face
+ (save-excursion
+ (let ((continue t))
+ (while (and continue (< (+ (point) 1) (point-max)))
+ (forward-char)
+ (let ((forward-point-face (-what-face)))
+ (if (= 32 (char-syntax (char-after)))
+ (setq forward-point (point))
+ (if (equal point-face forward-point-face)
+ (progn (setq forward-point (point))
+ (setq forward-none-space-point (point)))
+ (setq continue nil)))))))
+ ;; for inner object,
+ (objed-make-object
+ :obounds (progn (setq start backward-none-space-point)
+ (setq end forward-none-space-point)
+ (cons start (+ end 1))))))
+
+
+(objed-define-object nil syntax
+ :get-obj (objed--get-syntax-range)
+ :try-next
+ (re-search-forward "\\<" nil t)
+ :try-prev
+ (re-search-backward "\\>" nil t))
+
+
(declare-function org-mark-element "ext:org")
(with-eval-after-load 'org
(objed-define-object nil section
diff --git a/objed.el b/objed.el
index 9cd5c73..8ba1de9 100644
--- a/objed.el
+++ b/objed.el
@@ -826,10 +826,12 @@ To define new operations see `objed-define-op'.")
;; meg
(define-key map "m" 'objed-iblock-object)
+
(define-key map "b" 'objed-bracket-object)
(define-key map "d" 'objed-defun-object)
(define-key map "s" 'objed-string-object)
(define-key map ";" 'objed-comment-object)
+ (define-key map "y" 'objed-syntax-object)
(define-key map "t" 'objed-tag-object)
(define-key map "f" 'objed-file-object)
- [elpa] externals/objed f7ef787 036/216: Add move/indent descriptions, (continued)
- [elpa] externals/objed f7ef787 036/216: Add move/indent descriptions, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 781adf8 044/216: Improve syntax object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 9c9797b 039/216: Add melpa badge, Stefan Monnier, 2019/01/08
- [elpa] externals/objed ae9f965 041/216: Fixes #9, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 630d2de 028/216: Improve/add indentation commands, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 61bb3eb 031/216: Fixup bindings and docs, Stefan Monnier, 2019/01/08
- [elpa] externals/objed ca32294 038/216: Ensure value for cursor color, #5, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 430d858 037/216: Add more command to move objects around and change bindings for them, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 64dc38b 035/216: More on indent/move commands, Stefan Monnier, 2019/01/08
- [elpa] externals/objed d5dd1d0 045/216: Fix function name, Stefan Monnier, 2019/01/08
- [elpa] externals/objed f33147d 043/216: Add syntax object adjusted from laishulu/evil-textobj-syntax,
Stefan Monnier <=
- [elpa] externals/objed 8c3ba86 040/216: Add note about changing bindings, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 95503ca 046/216: Fix syntax object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 7ad08e2 052/216: Set C-h to work as usual, Stefan Monnier, 2019/01/08
- [elpa] externals/objed dc8c569 033/216: Improve surround op, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 1f09072 064/216: Improve file object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 96c6b8f 065/216: Add DEL key for in buffer replacement, fixes #6, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 41be963 054/216: Adjust textblock and block object order, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 843d843 059/216: Remove textblock from context objects, Stefan Monnier, 2019/01/08
- [elpa] externals/objed de241e3 048/216: Start to support mc, Stefan Monnier, 2019/01/08
- [elpa] externals/objed ebad1ac 061/216: Fix face object, Stefan Monnier, 2019/01/08