From eef8ab4666dabdc53ac78632c2f7ee32835d5c0d Mon Sep 17 00:00:00 2001 From: kj Date: Sat, 12 Jun 2021 14:57:34 -0400 Subject: [PATCH] Agregado atajo para buscar y reemplazar. --- .../mc-cycle-cursors.el | 119 --- .../mc-cycle-cursors.elc | Bin 3243 -> 0 bytes .../mc-edit-lines.el | 110 --- .../mc-edit-lines.elc | Bin 2749 -> 0 bytes .../mc-hide-unmatched-lines-mode.el | 107 --- .../mc-hide-unmatched-lines-mode.elc | Bin 4364 -> 0 bytes .../mc-mark-more.el | 709 --------------- .../mc-mark-more.elc | Bin 22722 -> 0 bytes .../mc-mark-pop.el | 22 - .../mc-mark-pop.elc | Bin 773 -> 0 bytes .../mc-separate-operations.el | 150 --- .../mc-separate-operations.elc | Bin 4826 -> 0 bytes .../multiple-cursors-autoloads.el | 362 -------- .../multiple-cursors-core.el | 852 ------------------ .../multiple-cursors-core.elc | Bin 30115 -> 0 bytes .../multiple-cursors-pkg.el | 6 - .../multiple-cursors.el | 203 ----- .../multiple-cursors.elc | Bin 790 -> 0 bytes .../rectangular-region-mode.el | 125 --- .../rectangular-region-mode.elc | Bin 4877 -> 0 bytes init.el | 3 +- 21 files changed, 2 insertions(+), 2766 deletions(-) delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-cycle-cursors.el delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-cycle-cursors.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-edit-lines.el delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-edit-lines.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-hide-unmatched-lines-mode.el delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-hide-unmatched-lines-mode.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-mark-more.el delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-mark-more.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-mark-pop.el delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-mark-pop.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-separate-operations.el delete mode 100644 elpa/multiple-cursors-20191210.1759/mc-separate-operations.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/multiple-cursors-autoloads.el delete mode 100644 elpa/multiple-cursors-20191210.1759/multiple-cursors-core.el delete mode 100644 elpa/multiple-cursors-20191210.1759/multiple-cursors-core.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/multiple-cursors-pkg.el delete mode 100644 elpa/multiple-cursors-20191210.1759/multiple-cursors.el delete mode 100644 elpa/multiple-cursors-20191210.1759/multiple-cursors.elc delete mode 100644 elpa/multiple-cursors-20191210.1759/rectangular-region-mode.el delete mode 100644 elpa/multiple-cursors-20191210.1759/rectangular-region-mode.elc diff --git a/elpa/multiple-cursors-20191210.1759/mc-cycle-cursors.el b/elpa/multiple-cursors-20191210.1759/mc-cycle-cursors.el deleted file mode 100644 index 85af352..0000000 --- a/elpa/multiple-cursors-20191210.1759/mc-cycle-cursors.el +++ /dev/null @@ -1,119 +0,0 @@ -;;; mc-cycle-cursors.el - -;; Copyright (C) 2012-2016 Magnar Sveen - -;; Author: Magnar Sveen -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; This scrolls the buffer to center each cursor in turn. -;; Scroll down with C-v, scroll up with M-v -;; This is nice when you have cursors that's outside of your view. - -;;; Code: - -(require 'multiple-cursors-core) - -(defun mc/next-fake-cursor-after-point () - (let ((pos (point)) - (next-pos (1+ (point-max))) - next) - (mc/for-each-fake-cursor - (let ((cursor-pos (overlay-get cursor 'point))) - (when (and (< pos cursor-pos) - (< cursor-pos next-pos)) - (setq next-pos cursor-pos) - (setq next cursor)))) - next)) - -(defun mc/prev-fake-cursor-before-point () - (let ((pos (point)) - (prev-pos (1- (point-min))) - prev) - (mc/for-each-fake-cursor - (let ((cursor-pos (overlay-get cursor 'point))) - (when (and (> pos cursor-pos) - (> cursor-pos prev-pos)) - (setq prev-pos cursor-pos) - (setq prev cursor)))) - prev)) - -(defcustom mc/cycle-looping-behaviour 'continue - "What to do if asked to cycle beyond the last cursor or before the first cursor." - :type '(radio (const :tag "Loop around to beginning/end of document." continue) - (const :tag "Warn and then loop around." warn) - (const :tag "Signal an error." error) - (const :tag "Don't loop." stop)) - :group 'multiple-cursors) - -(defun mc/handle-loop-condition (error-message) - (cl-ecase mc/cycle-looping-behaviour - (error (error error-message)) - (warn (message error-message)) - (continue 'continue) - (stop 'stop))) - -(defun mc/first-fake-cursor-after (point) - "Very similar to mc/furthest-cursor-before-point, but ignores (mark) and (point)." - (let* ((cursors (mc/all-fake-cursors)) - (cursors-after-point (cl-remove-if (lambda (cursor) - (< (mc/cursor-beg cursor) point)) - cursors)) - (cursors-in-order (cl-sort cursors-after-point '< :key 'mc/cursor-beg))) - (car cursors-in-order))) - -(defun mc/last-fake-cursor-before (point) - "Very similar to mc/furthest-cursor-before-point, but ignores (mark) and (point)." - (let* ((cursors (mc/all-fake-cursors)) - (cursors-before-point (cl-remove-if (lambda (cursor) - (> (mc/cursor-end cursor) point)) - cursors)) - (cursors-in-order (cl-sort cursors-before-point '> :key 'mc/cursor-end))) - (car cursors-in-order))) - -(cl-defun mc/cycle (next-cursor fallback-cursor loop-message) - (when (null next-cursor) - (when (eql 'stop (mc/handle-loop-condition loop-message)) - (return-from mc/cycle nil)) - (setf next-cursor fallback-cursor)) - (mc/create-fake-cursor-at-point) - (mc/pop-state-from-overlay next-cursor) - (recenter)) - -(defun mc/cycle-forward () - (interactive) - (mc/cycle (mc/next-fake-cursor-after-point) - (mc/first-fake-cursor-after (point-min)) - "We're already at the last cursor.")) - -(defun mc/cycle-backward () - (interactive) - (mc/cycle (mc/prev-fake-cursor-before-point) - (mc/last-fake-cursor-before (point-max)) - "We're already at the last cursor")) - -(define-key mc/keymap (kbd "C-v") 'mc/cycle-forward) -(define-key mc/keymap (kbd "M-v") 'mc/cycle-backward) - -(provide 'mc-cycle-cursors) - - -;; Local Variables: -;; coding: utf-8 -;; End: - -;;; mc-cycle-cursors.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/mc-cycle-cursors.elc b/elpa/multiple-cursors-20191210.1759/mc-cycle-cursors.elc deleted file mode 100644 index 02898f3dfa022844228f9a239974993007d3f01c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3243 zcmcguQEwAR5YA&_UaA&R;DzA=imh_SzH=N%s)~y8fW#Y!Jm5%O->vOc?skveb*TI6 z`_10j&6y-nfojRV^Um(<>^Jj$vnQ|Ky!?4*XQy*=azZanS*b$i;g8bvsuY={3u&D) znv!up4VF*JFGv&xnaZnD{VhDquHOm9cMIic1~0U9(ow$BqEs2>CUf2@J$FxFwa$~s zbD7g-m*Mk%^87O&xq%ODJY`0Efyqlhi=Sac$G^XQ`T8|w3t>g(5#p1uz0f&1Lz&Pt zl~fqf+N3#(BPnd5q$R(=#3Zfv1q9#p;Q+q%)9G}&R(@P6E9szI7G70_jI*V6#=1B& zR`xpGT+T$Hgu{&Nsg{5FcqY!*vtls=9C2lo_O$;&tAe6G^LLYUklwv_ACD2fhxm?Z z5>1lfVE30vGB}Fp1AC(2t}>4J%Zp1rDuf0p~^0w&GGm)0F{*&mnX$j zIRj2x2*|ex`AZ0}D+>NLaef5?@7D;dU%m=~f4AXH|04qXFP;tQbRj%>18$L;k#OhW z6aHqa4D6fAl>rz00xS@qTayN3VPSZJrDkGn>Obfp$IhEF&Sh2zAb26H5>q(iIty;& z!k7vy2F43g7Lc^o zSWF7ftyzB71D36il9k z$&)ho2I;LGe&2h@Tv?k&wdoF<4%;SBj#oWk)A;h5quS7A!%<^MCn?B{pW!}64u`M} z6SjfsH{`PwG0Bfb4OYOFnuBce5^$m@D`J@mCut_Qe;m_e$oyj$QGNb;?WRluwyZ5@ zGy%fdFSqi}X6*s9%fLPiVUIgtVfP9d%1#&wHUDx{&CHQaJ7u<7y1DZnV(T|#%|CaJpD??=W@k6U7j$e znwG=yQPTUr@Mg_v!QH6Ncg4FU^xp+=R`44Dhd{Le|7{!aFkuaNG8hdQ@OCBE@(dh8 zr)@HeeqKyPcHY!_P@zkzfsQ&D-DYxcnm2?YXu*#)3o=h zMRC&r$;u4UFKw+2S3nn|dqLxK@Fm=B01D1Iz=0vH@*#dx*1O9p$J^a_O@jS8frw7! z0lK9qaGHEY+;Q72wI3nWaAsDtE3+MQYOjqszc%KZZ#D?}I+lGg=iop7(EJot8OO{9^4cOqN}uwS%#uJ(Was{N&7HNN6GN$*=QW@ ZclD)W15ahmg+dTz7T1=B)Ihk``3J^H|Lgz& diff --git a/elpa/multiple-cursors-20191210.1759/mc-edit-lines.el b/elpa/multiple-cursors-20191210.1759/mc-edit-lines.el deleted file mode 100644 index 55772af..0000000 --- a/elpa/multiple-cursors-20191210.1759/mc-edit-lines.el +++ /dev/null @@ -1,110 +0,0 @@ -;;; mc-edit-lines.el - -;; Copyright (C) 2012-2016 Magnar Sveen - -;; Author: Magnar Sveen -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; This file contains functions to add multiple cursors to consecutive lines -;; given an active region. - -;; Please see multiple-cursors.el for more commentary. - -;;; Code: - -(require 'multiple-cursors-core) - -(defcustom mc/edit-lines-empty-lines nil - "What should be done by `mc/edit-lines' when a line is not long enough." - :type '(radio (const :tag "Pad the line with spaces." pad) - (const :tag "Ignore the line." ignore) - (const :tag "Signal an error." error) - (const :tag "Nothing. Cursor is at end of line." nil)) - :group 'multiple-cursors) - -;;;###autoload -(defun mc/edit-lines (&optional arg) - "Add one cursor to each line of the active region. -Starts from mark and moves in straight down or up towards the -line point is on. - -What is done with lines which are not long enough is governed by -`mc/edit-lines-empty-lines'. The prefix argument ARG can be used -to override this. If ARG is a symbol (when called from Lisp), -that symbol is used instead of `mc/edit-lines-empty-lines'. -Otherwise, if ARG negative, short lines will be ignored. Any -other non-nil value will cause short lines to be padded." - (interactive "P") - (when (not (and mark-active (/= (point) (mark)))) - (error "Mark a set of lines first")) - (mc/remove-fake-cursors) - (let* ((col (current-column)) - (point-line (mc/line-number-at-pos)) - (mark-line (progn (exchange-point-and-mark) (mc/line-number-at-pos))) - (direction (if (< point-line mark-line) :up :down)) - (style (cond - ;; called from lisp - ((and arg (symbolp arg)) - arg) - ;; negative argument - ((< (prefix-numeric-value arg) 0) - 'ignore) - (arg 'pad) - (t mc/edit-lines-empty-lines)))) - (deactivate-mark) - (when (and (eq direction :up) (bolp)) - (previous-logical-line 1 nil) - (move-to-column col)) - ;; Add the cursors - (while (not (eq (mc/line-number-at-pos) point-line)) - ;; Pad the line - (when (eq style 'pad) - (while (< (current-column) col) - (insert " "))) - ;; Error - (when (and (eq style 'error) - (not (equal col (current-column)))) - (error "Short line encountered in `mc/edit-lines'")) - ;; create the cursor - (unless (and (eq style 'ignore) - (not (equal col (current-column)))) - (mc/create-fake-cursor-at-point)) - ;; proceed to next - (if (eq direction :up) - (previous-logical-line 1 nil) - (next-logical-line 1 nil)) - (move-to-column col)) - (multiple-cursors-mode))) - -;;;###autoload -(defun mc/edit-ends-of-lines () - "Add one cursor to the end of each line in the active region." - (interactive) - (mc/edit-lines) - (mc/execute-command-for-all-cursors 'end-of-line)) - -;;;###autoload -(defun mc/edit-beginnings-of-lines () - "Add one cursor to the beginning of each line in the active region." - (interactive) - (mc/edit-lines) - (mc/execute-command-for-all-cursors 'beginning-of-line)) - -(provide 'mc-edit-lines) - -;;; mc-edit-lines.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/mc-edit-lines.elc b/elpa/multiple-cursors-20191210.1759/mc-edit-lines.elc deleted file mode 100644 index f8855ff83a7a3227553eb7df47ebf3948dd1146d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2749 zcmcImU2hvj6!jZ)tCmLu6u5OzV@p}%-Hq*h2#F9?D5yY1iuzDT>Uei-kGeZ!W@eq3 zhyHfXowbuVZF!)=(b_vR_j~R+H^)z(oqpbGwW8zWV>&g}LY1-z3#I94C2~hgX`M2f z(qS(PCzs04Nt7j-g;$mOTX-D1UK9>r%$1`ltWfQwqhh5+rE)4v?z~lc=Js%EohMNg zvY=}($zd-&e8)y%U_%>ExzS!gxc1Zd06RK9IX^u+qkJx`$UQ>b3+{z3$QjCorirA| zh%G1UR2)fROC>G&IRw+J@rx3C)Q1E3*iRHioyp3}I5&l)_BiYJ@g$GOX~Hilo(#`E zo&laAp3yktvm|-)$vEwg+VslGziMSARdwmrqJ**9I%6G-VmGgyH&tB7ycAZ(OJS9m z;J&K-ds!$Smr6?)%WC0Q%{ysTQv2mxcye=7mj#!$Fj~@NMX$HicIk31H3?!PgiheQ zD~+C!)TW-zdu=-MtA(VF6@@a?!M&mvj=Y#r`?)A^A-FZx4Nc}2B9{(I3sH2ph0kW1 zliA2aMunX_V&~WuCE=E(wZ=j${N9oJ&G zi+4(UK?mJv=f^>RKqm#XkU>*)@&?_O&zr1ZjUz_Ks-+|=XFyIbI`_hQpvIbtDq-Is z+=42zMDL^Jfg7P_bB~f=YBHAK-kVEd3&+NyP_Bhh+H=@!FA8^sMYyC;$#AK-9EC`5 z>v!*kHD_>WH843@MccP}yBT&-q!&nGVdYd^!Pcy+8D)k zP&=CjDXuNKRW&gsbwa!3AQSiv`9D)`(cOyxOmtf#1O+yUS~xG!BPim(#TWgKs@O~A zTLzFL z)X|$DnclZir;t-oD&c5%3ly~Ts`G@o(u7vDvo5ti1yr;9t=EiU`jZ!*wKiB@gFQ)z zQLnxLwp02N-&xoQ%df`z{!3Qdg<7(Yx3t4=gGUc|ci4Jxxc=p%XM8k#@EG5tp!E|r z(tdLk6n^22q}h1*=$o&xN*ixew*LbgD_Xkw!68T}1qr2tal4_Wba-zQHxxB1AgWQ) zddRktVBl>_-3#vDvbRwlG!dQ+Lj6$?!se)TPmR+oZERrKR3_^O55Zu6Et~D%$Y#)C z*{mtt_$KmkIvB9ayHUgUI31>}17`g|LJ%rgBBK}qF~2fK<28nJba4P*;K~5s=B)q& z1LhcJ{j}8V2fcCt7!NfdF-^0s5`iA3gC>o5*``Z-#UT|YP zxY$hBLvrU;7?Wt#{u-wJ1d9|s+ceGX@fxzYl6f5_eO2+@O$~0gEH}fNBimTNpmd#7 znjU0bzKtfUgAZgi!DP`IBaJ)kzvOmp;Q!3<+R1zJ+&>&`^6V_ES@IkKt;RS1qI9Ew E06ijF)Bpeg diff --git a/elpa/multiple-cursors-20191210.1759/mc-hide-unmatched-lines-mode.el b/elpa/multiple-cursors-20191210.1759/mc-hide-unmatched-lines-mode.el deleted file mode 100644 index 0167dbc..0000000 --- a/elpa/multiple-cursors-20191210.1759/mc-hide-unmatched-lines-mode.el +++ /dev/null @@ -1,107 +0,0 @@ -;;; mc-hide-unmatched-lines.el - -;; Copyright (C) 2014 Aleksey Fedotov - -;; Author: Aleksey Fedotov -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; This minor mode when enabled hides all lines where no cursors (and -;; also hum/lines-to-expand below and above) To make use of this mode -;; press "C-'" while multiple-cursor-mode is active. You can still -;; edit lines while you are in mc-hide-unmatched-lines mode. To leave -;; this mode press "" or "C-g" -;; - -;;; Code: - -(require 'multiple-cursors-core) -(require 'mc-mark-more) - -(defvar hum/hide-unmatched-lines-mode-map (make-sparse-keymap) - "Keymap for hide unmatched lines is mainly for rebinding C-g") - -(define-key hum/hide-unmatched-lines-mode-map (kbd "C-g") 'hum/keyboard-quit) -(define-key hum/hide-unmatched-lines-mode-map (kbd "") 'hum/keyboard-quit) - -(defun hum/keyboard-quit () - "Leave hide-unmatched-lines mode" - (interactive) - (mc-hide-unmatched-lines-mode 0)) - -;; used only in in multiple-cursors-mode-disabled-hook -(defun hum/disable-hum-mode () - (mc-hide-unmatched-lines-mode 0)) - -;;;###autoload -(define-minor-mode mc-hide-unmatched-lines-mode - "Minor mode when enabled hides all lines where no cursors (and -also hum/lines-to-expand below and above) To make use of this -mode press \"C-'\" while multiple-cursor-mode is active. You can -still edit lines while you are in mc-hide-unmatched-lines -mode. To leave this mode press or \"C-g\"" - nil " hu" - hum/hide-unmatched-lines-mode-map - (if mc-hide-unmatched-lines-mode - ;;just in case if mc mode will be disabled while hide-unmatched-lines is active - (progn - (hum/hide-unmatched-lines) - (add-hook 'multiple-cursors-mode-disabled-hook 'hum/disable-hum-mode t t)) - (progn - (hum/unhide-unmatched-lines) - (remove-hook 'multiple-cursors-mode-disabled-hook 'hum/disable-hum-mode)))) - -(defconst hum/invisible-overlay-name 'hum/invisible-overlay-name) - -(defcustom hum/lines-to-expand 2 - "How many lines below and above cursor to show" - :type '(integer) - :group 'multiple-cursors) - -(defcustom hum/placeholder "..." - "Placeholder which will be placed instead of hidden text" - :type '(string) - :group 'multiple-cursors) - -(defun hum/add-invisible-overlay (begin end) - (let ((overlay (make-overlay begin - end - (current-buffer) - t - nil - ))) - (overlay-put overlay hum/invisible-overlay-name t) - (overlay-put overlay 'invisible t) - (overlay-put overlay 'intangible t) - (overlay-put overlay 'evaporate t) - (overlay-put overlay 'after-string hum/placeholder))) - -(defun hum/hide-unmatched-lines () - (let ((begin (point-min))) - (mc/for-each-cursor-ordered - (save-excursion - (goto-char (mc/cursor-beg cursor)) - (if (< begin (line-beginning-position (- hum/lines-to-expand))) - (hum/add-invisible-overlay begin (line-end-position (- hum/lines-to-expand)))) - (setq begin (line-beginning-position (+ 2 hum/lines-to-expand))))) - (hum/add-invisible-overlay begin (point-max)))) - -(defun hum/unhide-unmatched-lines () - (remove-overlays nil nil hum/invisible-overlay-name t)) - -(provide 'mc-hide-unmatched-lines-mode) -(define-key mc/keymap (kbd "C-'") 'mc-hide-unmatched-lines-mode) diff --git a/elpa/multiple-cursors-20191210.1759/mc-hide-unmatched-lines-mode.elc b/elpa/multiple-cursors-20191210.1759/mc-hide-unmatched-lines-mode.elc deleted file mode 100644 index a4741c522af5c79071d71727ff0311e803186986..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4364 zcmbtXYi}dB74^4x6`(-V4^3MXy&lK01cX}6=wW-eX;T;h5_ES_ph?@nGO*MPB@H}7 zDnpLE>aXv)AXH)9G|)8>d8SGDXpJI2hm) zA5D{(2mDF!V{jJHRi%Ee^GZ=!7cO5FI8#^FR2FA>HWj6;ZbXS6*Oc@+$KOn1`n%ec zaz%4f(K3gGT9?wLOGKi`HGGZWmGE=1@mnf2%XNmR(WO}YsngBWd@XUZE?@F#u{|yP zX~@DP-`_3ejS_YxE33qfm)WE4@fXym(Z!_K+ch#iWW(?o9ygZynNc(2&HcDks0Slh z9z~x-UQLW=Mpl`Cs~o$`)s?=!rV;yNIHWg9u9bJit}(>M1e;}%OG~G$z{C5FuXJ8K zh?3V7u7B1&G(a#KSDa1GdxRUV;ScD3PfV6uIYUGt(mR#@UrD(7_?tKx(>tULE1S>h zZ7ROw=>6EnUcB+KXM-64O0(>&-}%uhWQaoYl_e+E`+bI;l0)7hpB8)w*8nLwU(~+? z&c5^Ph{iARU=TA#Jc!zB#H^mrRV50O%7RY!UBxyh7h`&xYvA0Qb-Pr$HOz^7(}-@DOo}_X8iEUFfy45(>eElAX7cJ-mxEwc2GF)T^6?FpC3FQ7KH~r{xX&sT z9@;(>_muf_NP)i)JOjlR(F2G-b7_mg?w3sYMk4^STJ${fNA&p%r0Mu;u+s2X2UGo5 z43gg*U~cl_2;XP_LQ2P<@$v~~;{k;fk7N8m&c{Q1M!e?>zkt(%_l?_qlkL8!Ie9i6 zCWEQwE6=bsiCN@1kCJJ#C&8`Bh^caTjfKGow+)7G4wz_oJWSf9Wc&wgg^=VdT=^gD z9}f7+pLi61>N%;`!#D{#v1Df8DGnmr8VN4(cec48xnl*SkQ5^=>#QNFl_an6Z)l}U%%IcaGr8I4iJiX7cb7wOXmv56Xo{xk%# z*J~)9tL4Z21?GEP5rNa>9dI_9&KbXe^8g9si{z*+l4DE&xPvpG8vOxM=%hg=2m7g* z2J^T?e_X9C^P+hJBGG_x?$fGv6n)32113n$5g9NmzPV3;TbOrv_|VyehN{ zPp>@+w(s$p;Buh3@7c!o%TEI9ar4JbV9T4li@7r(fOmOLN^1+ph)ksgDg`(sRAH~` zZY4`NkhdsaNT*O{c4}Kw5xKP6rMZphmD{WobvYjws_N0JMP+J$X{QDC(pH5`)zTCh z021~4edO6c?oFW}rc1izI)_%>Z|3)abxLMjMgiXpMcb(lE~0LDJ@l^WJox`!v&5Kq zkWQ=&jAXLH0nk>;aSf{>sKZ09@ndur3F|Q!9Ujd%Uwlt8 z)mKOV#`5rwOraB=Lyf;WYBgueeAK6`d;IHG=O6&EWc+Y+b`uBc-q(}a^kt(n4*6UX z{g21QMyoG4Kze@9fNHb$Jpq&vXcP&yrA^;6!e)hUnzBZ?-L5TV(=2HqAw&AZQ-# zzq_U} -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; This file contains functions to mark more parts of the buffer. -;; See ./features/mark-more.feature for examples. - -;; Please see multiple-cursors.el for more commentary. - -;;; Code: - -(require 'multiple-cursors-core) -(require 'thingatpt) - -(defun mc/cursor-end (cursor) - (if (overlay-get cursor 'mark-active) - (max (overlay-get cursor 'point) - (overlay-get cursor 'mark)) - (overlay-get cursor 'point))) - -(defun mc/cursor-beg (cursor) - (if (overlay-get cursor 'mark-active) - (min (overlay-get cursor 'point) - (overlay-get cursor 'mark)) - (overlay-get cursor 'point))) - -(defun mc/furthest-region-end () - (let ((end (max (mark) (point)))) - (mc/for-each-fake-cursor - (setq end (max end (mc/cursor-end cursor)))) - end)) - -(defun mc/first-region-start () - (let ((beg (min (mark) (point)))) - (mc/for-each-fake-cursor - (setq beg (min beg (mc/cursor-beg cursor)))) - beg)) - -(defun mc/furthest-cursor-before-point () - (let ((beg (if mark-active (min (mark) (point)) (point))) - furthest) - (mc/for-each-fake-cursor - (when (< (mc/cursor-beg cursor) beg) - (setq beg (mc/cursor-beg cursor)) - (setq furthest cursor))) - furthest)) - -(defun mc/furthest-cursor-after-point () - (let ((end (if mark-active (max (mark) (point)) (point))) - furthest) - (mc/for-each-fake-cursor - (when (> (mc/cursor-end cursor) end) - (setq end (mc/cursor-end cursor)) - (setq furthest cursor))) - furthest)) - -(defun mc/fake-cursor-at-point (&optional point) - "Return the fake cursor with its point right at POINT (defaults -to (point)), or nil." - (setq point (or point (point))) - (let ((cursors (mc/all-fake-cursors)) - (c nil)) - (catch 'found - (while (setq c (pop cursors)) - (when (eq (marker-position (overlay-get c 'point)) - point) - (throw 'found c)))))) - -(defun mc/region-strings () - (let ((strings (list (buffer-substring-no-properties (point) (mark))))) - (mc/for-each-fake-cursor - (add-to-list 'strings (buffer-substring-no-properties - (mc/cursor-beg cursor) - (mc/cursor-end cursor)))) - strings)) - -(defvar mc/enclose-search-term nil - "How should mc/mark-more-* search for more matches? - -Match everything: nil -Match only whole words: 'words -Match only whole symbols: 'symbols - -Use like case-fold-search, don't recommend setting it globally.") - -(defun mc/mark-more-like-this (skip-last direction) - (let ((case-fold-search nil) - (re (regexp-opt (mc/region-strings) mc/enclose-search-term)) - (point-out-of-order (cl-ecase direction - (forwards (< (point) (mark))) - (backwards (not (< (point) (mark)))))) - (furthest-cursor (cl-ecase direction - (forwards (mc/furthest-cursor-after-point)) - (backwards (mc/furthest-cursor-before-point)))) - (start-char (cl-ecase direction - (forwards (mc/furthest-region-end)) - (backwards (mc/first-region-start)))) - (search-function (cl-ecase direction - (forwards 'search-forward-regexp) - (backwards 'search-backward-regexp))) - (match-point-getter (cl-ecase direction - (forwards 'match-beginning) - (backwards 'match-end)))) - (if (and skip-last (not furthest-cursor)) - (error "No cursors to be skipped") - (mc/save-excursion - (goto-char start-char) - (when skip-last - (mc/remove-fake-cursor furthest-cursor)) - (if (funcall search-function re nil t) - (progn - (push-mark (funcall match-point-getter 0)) - (when point-out-of-order - (exchange-point-and-mark)) - (mc/create-fake-cursor-at-point)) - (user-error "no more matches found.")))))) - -;;;###autoload -(defun mc/mark-next-like-this (arg) - "Find and mark the next part of the buffer matching the currently active region -If no region is active add a cursor on the next line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-after-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (if (region-active-p) - (mc/mark-more-like-this (= arg 0) 'forwards) - (mc/mark-lines arg 'forwards))) - (mc/maybe-multiple-cursors-mode)) - -;;;###autoload -(defun mc/mark-next-like-this-word (arg) - "Find and mark the next part of the buffer matching the currently active region -If no region is active, mark the word at the point and find the next match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-after-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (if (region-active-p) - (mc/mark-more-like-this (= arg 0) 'forwards) - (mc--select-thing-at-point 'word) - (mc/mark-more-like-this (= arg 0) 'forwards))) - (mc/maybe-multiple-cursors-mode)) - -(defun mc/mark-next-like-this-symbol (arg) - "Find and mark the next part of the buffer matching the currently active region -If no region is active, mark the symbol at the point and find the next match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-after-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (if (region-active-p) - (mc/mark-more-like-this (= arg 0) 'forwards) - (mc--select-thing-at-point 'symbol) - (mc/mark-more-like-this (= arg 0) 'forwards))) - (mc/maybe-multiple-cursors-mode)) - - -;;;###autoload -(defun mc/mark-next-word-like-this (arg) - "Find and mark the next word of the buffer matching the currently active region -The matching region must be a whole word to be a match -If no region is active, mark the symbol at the point and find the next match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (let ((mc/enclose-search-term 'words)) - (mc/mark-next-like-this arg))) - -;;;###autoload -(defun mc/mark-next-symbol-like-this (arg) - "Find and mark the next symbol of the buffer matching the currently active region -The matching region must be a whole symbol to be a match -If no region is active, mark the symbol at the point and find the next match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (let ((mc/enclose-search-term 'symbols)) - (mc/mark-next-like-this arg))) - -;;;###autoload -(defun mc/mark-previous-like-this (arg) - "Find and mark the previous part of the buffer matching the currently active region -If no region is active add a cursor on the previous line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-before-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (if (region-active-p) - (mc/mark-more-like-this (= arg 0) 'backwards) - (mc/mark-lines arg 'backwards))) - (mc/maybe-multiple-cursors-mode)) - -;;;###autoload -(defun mc/mark-previous-like-this-word (arg) - "Find and mark the previous part of the buffer matching the currently active region -If no region is active, mark the word at the point and find the previous match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark previous." - (interactive "p") - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-after-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (if (region-active-p) - (mc/mark-more-like-this (= arg 0) 'backwards) - (mc--select-thing-at-point 'word) - (mc/mark-more-like-this (= arg 0) 'backwards))) - (mc/maybe-multiple-cursors-mode)) - -(defun mc/mark-previous-like-this-symbol (arg) - "Find and mark the previous part of the buffer matching the currently active region -If no region is active, mark the symbol at the point and find the previous match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark previous." - (interactive "p") - (if (< arg 0) - (let ((cursor (mc/furthest-cursor-after-point))) - (if cursor - (mc/remove-fake-cursor cursor) - (error "No cursors to be unmarked"))) - (if (region-active-p) - (mc/mark-more-like-this (= arg 0) 'backwards) - (mc--select-thing-at-point 'symbol) - (mc/mark-more-like-this (= arg 0) 'backwards))) - (mc/maybe-multiple-cursors-mode)) - - -;;;###autoload -(defun mc/mark-previous-word-like-this (arg) - "Find and mark the previous part of the buffer matching the currently active region -The matching region must be a whole word to be a match -If no region is active add a cursor on the previous line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (let ((mc/enclose-search-term 'words)) - (mc/mark-previous-like-this arg))) - -;;;###autoload -(defun mc/mark-previous-symbol-like-this (arg) - "Find and mark the previous part of the buffer matching the currently active region -The matching region must be a whole symbol to be a match -If no region is active add a cursor on the previous line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next." - (interactive "p") - (let ((mc/enclose-search-term 'symbols)) - (mc/mark-previous-like-this arg))) - -(defun mc/mark-lines (num-lines direction) - (dotimes (i (if (= num-lines 0) 1 num-lines)) - (mc/save-excursion - (let ((furthest-cursor (cl-ecase direction - (forwards (mc/furthest-cursor-after-point)) - (backwards (mc/furthest-cursor-before-point))))) - (when (overlayp furthest-cursor) - (goto-char (overlay-get furthest-cursor 'point)) - (when (= num-lines 0) - (mc/remove-fake-cursor furthest-cursor)))) - (cl-ecase direction - (forwards (next-logical-line 1 nil)) - (backwards (previous-logical-line 1 nil))) - (mc/create-fake-cursor-at-point)))) - -;;;###autoload -(defun mc/mark-next-lines (arg) - (interactive "p") - (mc/mark-lines arg 'forwards) - (mc/maybe-multiple-cursors-mode)) - -;;;###autoload -(defun mc/mark-previous-lines (arg) - (interactive "p") - (mc/mark-lines arg 'backwards) - (mc/maybe-multiple-cursors-mode)) - -;;;###autoload -(defun mc/unmark-next-like-this () - "Deselect next part of the buffer matching the currently active region." - (interactive) - (mc/mark-next-like-this -1)) - -;;;###autoload -(defun mc/unmark-previous-like-this () - "Deselect prev part of the buffer matching the currently active region." - (interactive) - (mc/mark-previous-like-this -1)) - -;;;###autoload -(defun mc/skip-to-next-like-this () - "Skip the current one and select the next part of the buffer matching the currently active region." - (interactive) - (mc/mark-next-like-this 0)) - -;;;###autoload -(defun mc/skip-to-previous-like-this () - "Skip the current one and select the prev part of the buffer matching the currently active region." - (interactive) - (mc/mark-previous-like-this 0)) - -;;;###autoload -(defun mc/mark-all-like-this () - "Find and mark all the parts of the buffer matching the currently active region" - (interactive) - (unless (region-active-p) - (error "Mark a region to match first.")) - (mc/remove-fake-cursors) - (let ((master (point)) - (case-fold-search nil) - (point-first (< (point) (mark))) - (re (regexp-opt (mc/region-strings) mc/enclose-search-term))) - (mc/save-excursion - (goto-char 0) - (while (search-forward-regexp re nil t) - (push-mark (match-beginning 0)) - (when point-first (exchange-point-and-mark)) - (unless (= master (point)) - (mc/create-fake-cursor-at-point)) - (when point-first (exchange-point-and-mark))))) - (if (> (mc/num-cursors) 1) - (multiple-cursors-mode 1) - (multiple-cursors-mode 0))) - -(defun mc--select-thing-at-point (thing) - (let ((bound (bounds-of-thing-at-point thing))) - (when bound - (set-mark (car bound)) - (goto-char (cdr bound)) - bound))) - -(defun mc--select-thing-at-point-or-bark (thing) - (unless (or (region-active-p) (mc--select-thing-at-point thing)) - (error "Mark a region or set cursor on a %s." thing))) - -;;;###autoload -(defun mc/mark-all-words-like-this () - (interactive) - (mc--select-thing-at-point-or-bark 'word) - (let ((mc/enclose-search-term 'words)) - (mc/mark-all-like-this))) - -;;;###autoload -(defun mc/mark-all-symbols-like-this () - (interactive) - (mc--select-thing-at-point-or-bark 'symbol) - (let ((mc/enclose-search-term 'symbols)) - (mc/mark-all-like-this))) - -;;;###autoload -(defun mc/mark-all-in-region (beg end &optional search) - "Find and mark all the parts in the region matching the given search" - (interactive "r") - (let ((search (or search (read-from-minibuffer "Mark all in region: "))) - (case-fold-search nil)) - (if (string= search "") - (message "Mark aborted") - (progn - (mc/remove-fake-cursors) - (goto-char beg) - (while (search-forward search end t) - (push-mark (match-beginning 0)) - (mc/create-fake-cursor-at-point)) - (let ((first (mc/furthest-cursor-before-point))) - (if (not first) - (error "Search failed for %S" search) - (mc/pop-state-from-overlay first))) - (if (> (mc/num-cursors) 1) - (multiple-cursors-mode 1) - (multiple-cursors-mode 0)))))) - -;;;###autoload -(defun mc/mark-all-in-region-regexp (beg end) - "Find and mark all the parts in the region matching the given regexp." - (interactive "r") - (let ((search (read-regexp "Mark regexp in region: ")) - (case-fold-search nil)) - (if (string= search "") - (message "Mark aborted") - (progn - (mc/remove-fake-cursors) - (goto-char beg) - (let ((lastmatch)) - (while (and (< (point) end) ; can happen because of (forward-char) - (search-forward-regexp search end t)) - (push-mark (match-beginning 0)) - (mc/create-fake-cursor-at-point) - (setq lastmatch (point)) - (when (= (point) (match-beginning 0)) - (forward-char))) - (unless lastmatch - (error "Search failed for %S" search))) - (goto-char (match-end 0)) - (if (< (mc/num-cursors) 3) - (multiple-cursors-mode 0) - (mc/pop-state-from-overlay (mc/furthest-cursor-before-point)) - (multiple-cursors-mode 1)))))) - -(when (not (fboundp 'set-temporary-overlay-map)) - ;; Backport this function from newer emacs versions - (defun set-temporary-overlay-map (map &optional keep-pred) - "Set a new keymap that will only exist for a short period of time. -The new keymap to use must be given in the MAP variable. When to -remove the keymap depends on user input and KEEP-PRED: - -- if KEEP-PRED is nil (the default), the keymap disappears as - soon as any key is pressed, whether or not the key is in MAP; - -- if KEEP-PRED is t, the keymap disappears as soon as a key *not* - in MAP is pressed; - -- otherwise, KEEP-PRED must be a 0-arguments predicate that will - decide if the keymap should be removed (if predicate returns - nil) or kept (otherwise). The predicate will be called after - each key sequence." - - (let* ((clearfunsym (make-symbol "clear-temporary-overlay-map")) - (overlaysym (make-symbol "t")) - (alist (list (cons overlaysym map))) - (clearfun - `(lambda () - (unless ,(cond ((null keep-pred) nil) - ((eq t keep-pred) - `(eq this-command - (lookup-key ',map - (this-command-keys-vector)))) - (t `(funcall ',keep-pred))) - (remove-hook 'pre-command-hook ',clearfunsym) - (setq emulation-mode-map-alists - (delq ',alist emulation-mode-map-alists)))))) - (set overlaysym overlaysym) - (fset clearfunsym clearfun) - (add-hook 'pre-command-hook clearfunsym) - - (push alist emulation-mode-map-alists)))) - -;;;###autoload -(defun mc/mark-more-like-this-extended () - "Like mark-more-like-this, but then lets you adjust with arrows key. -The adjustments work like this: - - Mark previous like this and set direction to 'up - Mark next like this and set direction to 'down - -If direction is 'up: - - Skip past the cursor furthest up - Remove the cursor furthest up - -If direction is 'down: - - Remove the cursor furthest down - Skip past the cursor furthest down - -The bindings for these commands can be changed. See `mc/mark-more-like-this-extended-keymap'." - (interactive) - (mc/mmlte--down) - (set-temporary-overlay-map mc/mark-more-like-this-extended-keymap t)) - -(defvar mc/mark-more-like-this-extended-direction nil - "When using mc/mark-more-like-this-extended are we working on the next or previous cursors?") - -(make-variable-buffer-local 'mc/mark-more-like-this-extended) - -(defun mc/mmlte--message () - (if (eq mc/mark-more-like-this-extended-direction 'up) - (message " to mark previous, to skip, to remove, to mark next") - (message " to mark next, to skip, to remove, to mark previous"))) - -(defun mc/mmlte--up () - (interactive) - (mc/mark-previous-like-this 1) - (setq mc/mark-more-like-this-extended-direction 'up) - (mc/mmlte--message)) - -(defun mc/mmlte--down () - (interactive) - (mc/mark-next-like-this 1) - (setq mc/mark-more-like-this-extended-direction 'down) - (mc/mmlte--message)) - -(defun mc/mmlte--left () - (interactive) - (if (eq mc/mark-more-like-this-extended-direction 'down) - (mc/unmark-next-like-this) - (mc/skip-to-previous-like-this)) - (mc/mmlte--message)) - -(defun mc/mmlte--right () - (interactive) - (if (eq mc/mark-more-like-this-extended-direction 'up) - (mc/unmark-previous-like-this) - (mc/skip-to-next-like-this)) - (mc/mmlte--message)) - -(defvar mc/mark-more-like-this-extended-keymap (make-sparse-keymap)) - -(define-key mc/mark-more-like-this-extended-keymap (kbd "") 'mc/mmlte--up) -(define-key mc/mark-more-like-this-extended-keymap (kbd "") 'mc/mmlte--down) -(define-key mc/mark-more-like-this-extended-keymap (kbd "") 'mc/mmlte--left) -(define-key mc/mark-more-like-this-extended-keymap (kbd "") 'mc/mmlte--right) - -(defvar mc--restrict-mark-all-to-symbols nil) - -;;;###autoload -(defun mc/mark-all-like-this-dwim (arg) - "Tries to guess what you want to mark all of. -Can be pressed multiple times to increase selection. - -With prefix, it behaves the same as original `mc/mark-all-like-this'" - (interactive "P") - (if arg - (mc/mark-all-like-this) - (if (and (not (use-region-p)) - (derived-mode-p 'sgml-mode) - (mc--on-tag-name-p)) - (mc/mark-sgml-tag-pair) - (let ((before (mc/num-cursors))) - (unless (eq last-command 'mc/mark-all-like-this-dwim) - (setq mc--restrict-mark-all-to-symbols nil)) - (unless (use-region-p) - (mc--mark-symbol-at-point) - (setq mc--restrict-mark-all-to-symbols t)) - (if mc--restrict-mark-all-to-symbols - (mc/mark-all-symbols-like-this-in-defun) - (mc/mark-all-like-this-in-defun)) - (when (<= (mc/num-cursors) before) - (if mc--restrict-mark-all-to-symbols - (mc/mark-all-symbols-like-this) - (mc/mark-all-like-this))) - (when (<= (mc/num-cursors) before) - (mc/mark-all-like-this)))))) - -;;;###autoload -(defun mc/mark-all-dwim (arg) - "Tries even harder to guess what you want to mark all of. - -If the region is active and spans multiple lines, it will behave -as if `mc/mark-all-in-region'. With the prefix ARG, it will call -`mc/edit-lines' instead. - -If the region is inactive or on a single line, it will behave like -`mc/mark-all-like-this-dwim'." - (interactive "P") - (if (and (use-region-p) - (not (> (mc/num-cursors) 1)) - (not (= (mc/line-number-at-pos (region-beginning)) - (mc/line-number-at-pos (region-end))))) - (if arg - (call-interactively 'mc/edit-lines) - (call-interactively 'mc/mark-all-in-region)) - (progn - (setq this-command 'mc/mark-all-like-this-dwim) - (mc/mark-all-like-this-dwim arg)))) - -(defun mc--in-defun () - (bounds-of-thing-at-point 'defun)) - -;;;###autoload -(defun mc/mark-all-like-this-in-defun () - "Mark all like this in defun." - (interactive) - (if (mc--in-defun) - (save-restriction - (widen) - (narrow-to-defun) - (mc/mark-all-like-this)) - (mc/mark-all-like-this))) - -;;;###autoload -(defun mc/mark-all-words-like-this-in-defun () - "Mark all words like this in defun." - (interactive) - (mc--select-thing-at-point-or-bark 'word) - (if (mc--in-defun) - (save-restriction - (widen) - (narrow-to-defun) - (mc/mark-all-words-like-this)) - (mc/mark-all-words-like-this))) - -;;;###autoload -(defun mc/mark-all-symbols-like-this-in-defun () - "Mark all symbols like this in defun." - (interactive) - (mc--select-thing-at-point-or-bark 'symbol) - (if (mc--in-defun) - (save-restriction - (widen) - (narrow-to-defun) - (mc/mark-all-symbols-like-this)) - (mc/mark-all-symbols-like-this))) - -(defun mc--mark-symbol-at-point () - "Select the symbol under cursor" - (interactive) - (when (not (use-region-p)) - (let ((b (bounds-of-thing-at-point 'symbol))) - (goto-char (car b)) - (set-mark (cdr b))))) - -(defun mc--get-nice-sgml-context () - (car - (last - (progn - (when (looking-at "<") (forward-char 1)) - (when (looking-back ">") (forward-char -1)) - (sgml-get-context))))) - -(defun mc--on-tag-name-p () - (let* ((context (save-excursion (mc--get-nice-sgml-context))) - (tag-name-len (length (aref context 4))) - (beg (aref context 2)) - (end (+ beg tag-name-len (if (eq 'open (aref context 1)) 1 3)))) - (and context - (>= (point) beg) - (<= (point) end)))) - -;;;###autoload -(defun mc/toggle-cursor-on-click (event) - "Add a cursor where you click, or remove a fake cursor that is -already there." - (interactive "e") - (mouse-minibuffer-check event) - ;; Use event-end in case called from mouse-drag-region. - ;; If EVENT is a click, event-end and event-start give same value. - (let ((position (event-end event))) - (if (not (windowp (posn-window position))) - (error "Position not in text area of window")) - (select-window (posn-window position)) - (let ((pt (posn-point position))) - (if (numberp pt) - ;; is there a fake cursor with the actual *point* right where we are? - (let ((existing (mc/fake-cursor-at-point pt))) - (if existing - (mc/remove-fake-cursor existing) - (save-excursion - (goto-char pt) - (mc/create-fake-cursor-at-point)))))) - (mc/maybe-multiple-cursors-mode))) - -;;;###autoload -(defalias 'mc/add-cursor-on-click 'mc/toggle-cursor-on-click) - -;;;###autoload -(defun mc/mark-sgml-tag-pair () - "Mark the tag we're in and its pair for renaming." - (interactive) - (when (not (mc--inside-tag-p)) - (error "Place point inside tag to rename.")) - (let ((context (mc--get-nice-sgml-context))) - (if (looking-at "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 iZtJS;PbkBP+Z~Pyno+nTM diff --git a/elpa/multiple-cursors-20191210.1759/mc-mark-pop.el b/elpa/multiple-cursors-20191210.1759/mc-mark-pop.el deleted file mode 100644 index 8a18381..0000000 --- a/elpa/multiple-cursors-20191210.1759/mc-mark-pop.el +++ /dev/null @@ -1,22 +0,0 @@ -;;; mc-mark-pop.el --- Pop cursors off of the mark stack - -(require 'multiple-cursors-core) - -;;;###autoload -(defun mc/mark-pop () - "Add a cursor at the current point, pop off mark ring and jump -to the popped mark." - (interactive) - ;; If the mark happens to be at the current point, just pop that one off. - (while (eql (mark) (point)) - (pop-mark)) - (mc/create-fake-cursor-at-point) - (exchange-point-and-mark) - (pop-mark) - (mc/maybe-multiple-cursors-mode)) - -;; A good key binding for this feature is perhaps "C-S-p" ('p' for pop). - -(provide 'mc-mark-pop) - -;;; mc-mark-pop.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/mc-mark-pop.elc b/elpa/multiple-cursors-20191210.1759/mc-mark-pop.elc deleted file mode 100644 index 82a1d9468a0482919a4eb1d4d9f48f9f4e12aef6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmbtRv2NQi5cRB~YsWs=1!@D9Dobvgz)J%oLx67W76<5sJjHAzQX#3d>DTutB>{?z zAwZDt?)cul<1{_Siw%XYgR_O9zq%X$RH;=CgjaL+y%XHk7F>M`@%#3QI};reJg z^OvHeLy?WiA4e0=2n&Y50s6sGXB4zkA$ntP!dkLEM3C03@vO2rEvnNO9NGzobrH(h zNK!n+CO?sg&CkB?FD{^thhCB$}e+V@?AT1B;5JfnusaS6gh9`_Q`Bc zQPjl;_>X+Dz2OPw;^FyOM-SJWzZg^JG+&{{a`7Gow%g4LV&Q6)Eqm|ojZULgBS|v2 G%KibMed-AS diff --git a/elpa/multiple-cursors-20191210.1759/mc-separate-operations.el b/elpa/multiple-cursors-20191210.1759/mc-separate-operations.el deleted file mode 100644 index f123cca..0000000 --- a/elpa/multiple-cursors-20191210.1759/mc-separate-operations.el +++ /dev/null @@ -1,150 +0,0 @@ -;;; mc-separate-operations.el - functions that work differently on each cursor - -;; Copyright (C) 2012-2016 Magnar Sveen - -;; Author: Magnar Sveen -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; This file contains functions that work differently on each cursor, -;; instead of treating all of them the same. - -;; Please see multiple-cursors.el for more commentary. - -;;; Code: - -(require 'multiple-cursors-core) - -(defcustom mc/insert-numbers-default 0 - "The default number at which to start counting for -`mc/insert-numbers'" - :type 'integer - :group 'multiple-cursors) - -(defvar mc--insert-numbers-number 0) - -;;;###autoload -(defun mc/insert-numbers (arg) - "Insert increasing numbers for each cursor, starting at -`mc/insert-numbers-default' or ARG." - (interactive "P") - (setq mc--insert-numbers-number (or (and arg (prefix-numeric-value arg)) - mc/insert-numbers-default)) - (mc/for-each-cursor-ordered - (mc/execute-command-for-fake-cursor 'mc--insert-number-and-increase cursor))) - -(defun mc--insert-number-and-increase () - (interactive) - (insert (number-to-string mc--insert-numbers-number)) - (setq mc--insert-numbers-number (1+ mc--insert-numbers-number))) - -(defun mc--ordered-region-strings () - (let (strings) - (save-excursion - (mc/for-each-cursor-ordered - (setq strings (cons (buffer-substring-no-properties - (mc/cursor-beg cursor) - (mc/cursor-end cursor)) strings)))) - (nreverse strings))) - -(defvar mc--insert-letters-number 0) - -;;;###autoload -(defun mc/insert-letters (arg) - "Insert increasing letters for each cursor, starting at 0 or ARG. - Where letter[0]=a letter[2]=c letter[26]=aa" - (interactive "P") - (setq mc--insert-letters-number (or (and arg (prefix-numeric-value arg)) - 0)) - (mc/for-each-cursor-ordered - (mc/execute-command-for-fake-cursor 'mc--insert-letter-and-increase cursor))) - -(defun mc--number-to-letters (number) - (let ((letter - (char-to-string - (+ (mod number 26) ?a))) - (number2 (/ number 26))) - (if (> number2 0) - (concat (mc--number-to-letters (- number2 1)) letter) - letter))) - -(defun mc--insert-letter-and-increase () - (interactive) - (insert (mc--number-to-letters mc--insert-letters-number)) - (setq mc--insert-letters-number (1+ mc--insert-letters-number))) - -(defvar mc--strings-to-replace nil) - -(defun mc--replace-region-strings-1 () - (interactive) - (delete-region (region-beginning) (region-end)) - (save-excursion (insert (car mc--strings-to-replace))) - (setq mc--strings-to-replace (cdr mc--strings-to-replace))) - -(defun mc--replace-region-strings () - (mc/for-each-cursor-ordered - (mc/execute-command-for-fake-cursor 'mc--replace-region-strings-1 cursor))) - -;;;###autoload -(defun mc/reverse-regions () - (interactive) - (if (not multiple-cursors-mode) - (progn - (mc/mark-next-lines 1) - (mc/reverse-regions) - (multiple-cursors-mode 0)) - (unless (use-region-p) - (mc/execute-command-for-all-cursors 'mark-sexp)) - (setq mc--strings-to-replace (nreverse (mc--ordered-region-strings))) - (mc--replace-region-strings))) - -;;;###autoload -(defun mc/sort-regions () - (interactive) - (unless (use-region-p) - (mc/execute-command-for-all-cursors 'mark-sexp)) - (setq mc--strings-to-replace (sort (mc--ordered-region-strings) 'string<)) - (mc--replace-region-strings)) - - -;;;###autoload -(defun mc/vertical-align (character) - "Aligns all cursors vertically with a given CHARACTER to the one with the -highest column number (the rightest). -Might not behave as intended if more than one cursors are on the same line." - (interactive "c") - (let ((rightest-column (current-column))) - (mc/execute-command-for-all-cursors - (lambda () "get the rightest cursor" - (interactive) - (setq rightest-column (max (current-column) rightest-column)) - )) - (mc/execute-command-for-all-cursors - (lambda () - (interactive) - (let ((missing-spaces (- rightest-column (current-column)))) - (save-excursion (insert (make-string missing-spaces character))) - (forward-char missing-spaces)))))) - -;;;###autoload -(defun mc/vertical-align-with-space () - "Aligns all cursors with whitespace like `mc/vertical-align' does" - (interactive) - (mc/vertical-align 32)) - -(provide 'mc-separate-operations) -;;; mc-separate-operations.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/mc-separate-operations.elc b/elpa/multiple-cursors-20191210.1759/mc-separate-operations.elc deleted file mode 100644 index 6f60bbf4d801f3371e53d3f5f94914b5c846bbd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4826 zcmdT|+iu%N5cOLn<)KMlnxri{mW$dBvbIRdvK=>oT_b1%v_OyqEznRvR@6#bgcp^h z9J}bp_ss56rgiZ{gP^SdikDr^&gIP68J;}<`TUEGjg8jH$qAij$yCQ`Xl`^$&l4FH zbfNM>XDRu;y}*oo(B*_=98)$eb)x^2C5DT=mKl6A(FKhlg=U2+Xn2*%L`O8tqN2=o zIxe1IG%re$!=W0|d=>9_&p%$0G0Y$%%}R>0w3L`UD@Wo8Pf~IA`uxQUiY79bQ3(~F znB`?Uq#~n8rZi9#XY$4(&Xj_b%ww%`Dkqre2X-ql@DJM-Rtg81R_qefL@DcMjY1HdlYlbgn3w#igFc5H`z;EH5Aw zPor5;W{DW8D3-Yr7c$p!fOsX*zD^63mm-}d19%iuMiL^ZL+v*cMb)hxCRx&liH;^z zW>l0i=OE3}5;3MxmWS!PC4t**dRksh6{23MG2H)joM*G?lAe7!+HLJ%Ip_wpgjmqa zDbU$%ZJi$b^ulNjp;4}6!RtE%SPz66Dq06Tv3l|hS+9$6cQ!Y7T_hp?mbk2U&6f9U>nXeuyU+_gq-m~3`jUgIavdS=@k~*Ml!)b(7^{*O zVh;j*Bl*4pjgY07W(XJu0#Xt=jo5JOQP>XSJY(~Lb%23rgDo;xwDVYYT_|E6?W;=_ z%?#9&1bHhEt@_Hm;LXSjp5?-<`V{n$>VTcIp}>%NCjyNzvIke9GSA`@YfiJNzzy4& zBMIC%Yhx7^Om48VPd(b%`j+bUYv#KCR6!M}Icd1cA8 z!X=%9t|&98$$Z%-pI8=-Weu`?sB$$Fxf+9l-5W)1b^ifYos$Lw@gQtJ#OVfcI3W5p zAcADPZgbP{&SStkIIJM)Xq;9-j1{e1{!xhXEu!voMj5`tJ#@!^yZHk<^4?8&RZ15d1(R z1}d+fM(Ptgik3vuJ+Z!+>1FebuU~xGykK1NR|T-FqA` z96d*WkANt%P2qei{e|fw|IJfv!8xlSxRT}Ih5rZ7Sp)wSp7V}--WsB_+bMHWE&BGM z-2iNgnt=0u&$nZMN*PCJb68HYs8)5p`WwMp$_|JD( zH1*vz8B&rBQHRp;A%M*sx}+Ir?K+}f;oKTkViUWas29MuX8A?7uF~5v6x))kX)Ghf zl)j{@8(Uy>;nfx8g!1Vx-c^|08>dF^-NqRcV||BNv8LN8z;-%Kxe#&>4B;*6Ufb(d z>s8mvD22ZuY(K#1MuqA&m`-hj@t6i0*O|U5m;dWYyV@zj`{bp`BEm z)GejeJ{OjY-h^Y=7oBc%*`pXc;JoaG?Yr#2xu;h9_myZ1vsBp`xM@xF zc%snVM_D{eQpe`B!}D?sl^EOIYyHBPrmr8UiM&vR{)&6T)O713&^)RX)0?yKN+ZP&(r)=~GOjmU& zbr8BzUpM-7`dtvjP-}BVTz7;stZi!hib@;$_lL~ttX4Bj!?q>&=B%o}7bH`n3+{PE zF~y!zTz?QjcA$x~Z~!6AL(Zz$&Zg^i0{A52)@JLp*IR`G6MD4y2pr3Y&)+M02e;hx z^EN*4sA92XygA3VR#wb)f5cxk`16M4l|{J}_%(fdJ}MN~2%(6-&>$VO<)8rcd)(7; LU2nfe?Y8~~K@}A8 diff --git a/elpa/multiple-cursors-20191210.1759/multiple-cursors-autoloads.el b/elpa/multiple-cursors-20191210.1759/multiple-cursors-autoloads.el deleted file mode 100644 index 1ddb851..0000000 --- a/elpa/multiple-cursors-20191210.1759/multiple-cursors-autoloads.el +++ /dev/null @@ -1,362 +0,0 @@ -;;; multiple-cursors-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "mc-cycle-cursors" "mc-cycle-cursors.el" (0 -;;;;;; 0 0 0)) -;;; Generated autoloads from mc-cycle-cursors.el - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-cycle-cursors" '("mc/"))) - -;;;*** - -;;;### (autoloads nil "mc-edit-lines" "mc-edit-lines.el" (0 0 0 0)) -;;; Generated autoloads from mc-edit-lines.el - -(autoload 'mc/edit-lines "mc-edit-lines" "\ -Add one cursor to each line of the active region. -Starts from mark and moves in straight down or up towards the -line point is on. - -What is done with lines which are not long enough is governed by -`mc/edit-lines-empty-lines'. The prefix argument ARG can be used -to override this. If ARG is a symbol (when called from Lisp), -that symbol is used instead of `mc/edit-lines-empty-lines'. -Otherwise, if ARG negative, short lines will be ignored. Any -other non-nil value will cause short lines to be padded. - -\(fn &optional ARG)" t nil) - -(autoload 'mc/edit-ends-of-lines "mc-edit-lines" "\ -Add one cursor to the end of each line in the active region. - -\(fn)" t nil) - -(autoload 'mc/edit-beginnings-of-lines "mc-edit-lines" "\ -Add one cursor to the beginning of each line in the active region. - -\(fn)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-edit-lines" '("mc/edit-lines-empty-lines"))) - -;;;*** - -;;;### (autoloads nil "mc-hide-unmatched-lines-mode" "mc-hide-unmatched-lines-mode.el" -;;;;;; (0 0 0 0)) -;;; Generated autoloads from mc-hide-unmatched-lines-mode.el - -(autoload 'mc-hide-unmatched-lines-mode "mc-hide-unmatched-lines-mode" "\ -Minor mode when enabled hides all lines where no cursors (and -also hum/lines-to-expand below and above) To make use of this -mode press \"C-'\" while multiple-cursor-mode is active. You can -still edit lines while you are in mc-hide-unmatched-lines -mode. To leave this mode press or \"C-g\" - -\(fn &optional ARG)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-hide-unmatched-lines-mode" '("hum/"))) - -;;;*** - -;;;### (autoloads nil "mc-mark-more" "mc-mark-more.el" (0 0 0 0)) -;;; Generated autoloads from mc-mark-more.el - -(autoload 'mc/mark-next-like-this "mc-mark-more" "\ -Find and mark the next part of the buffer matching the currently active region -If no region is active add a cursor on the next line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-next-like-this-word "mc-mark-more" "\ -Find and mark the next part of the buffer matching the currently active region -If no region is active, mark the word at the point and find the next match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-next-word-like-this "mc-mark-more" "\ -Find and mark the next word of the buffer matching the currently active region -The matching region must be a whole word to be a match -If no region is active, mark the symbol at the point and find the next match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-next-symbol-like-this "mc-mark-more" "\ -Find and mark the next symbol of the buffer matching the currently active region -The matching region must be a whole symbol to be a match -If no region is active, mark the symbol at the point and find the next match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-previous-like-this "mc-mark-more" "\ -Find and mark the previous part of the buffer matching the currently active region -If no region is active add a cursor on the previous line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-previous-like-this-word "mc-mark-more" "\ -Find and mark the previous part of the buffer matching the currently active region -If no region is active, mark the word at the point and find the previous match -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark previous. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-previous-word-like-this "mc-mark-more" "\ -Find and mark the previous part of the buffer matching the currently active region -The matching region must be a whole word to be a match -If no region is active add a cursor on the previous line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-previous-symbol-like-this "mc-mark-more" "\ -Find and mark the previous part of the buffer matching the currently active region -The matching region must be a whole symbol to be a match -If no region is active add a cursor on the previous line -With negative ARG, delete the last one instead. -With zero ARG, skip the last one and mark next. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-next-lines "mc-mark-more" "\ - - -\(fn ARG)" t nil) - -(autoload 'mc/mark-previous-lines "mc-mark-more" "\ - - -\(fn ARG)" t nil) - -(autoload 'mc/unmark-next-like-this "mc-mark-more" "\ -Deselect next part of the buffer matching the currently active region. - -\(fn)" t nil) - -(autoload 'mc/unmark-previous-like-this "mc-mark-more" "\ -Deselect prev part of the buffer matching the currently active region. - -\(fn)" t nil) - -(autoload 'mc/skip-to-next-like-this "mc-mark-more" "\ -Skip the current one and select the next part of the buffer matching the currently active region. - -\(fn)" t nil) - -(autoload 'mc/skip-to-previous-like-this "mc-mark-more" "\ -Skip the current one and select the prev part of the buffer matching the currently active region. - -\(fn)" t nil) - -(autoload 'mc/mark-all-like-this "mc-mark-more" "\ -Find and mark all the parts of the buffer matching the currently active region - -\(fn)" t nil) - -(autoload 'mc/mark-all-words-like-this "mc-mark-more" "\ - - -\(fn)" t nil) - -(autoload 'mc/mark-all-symbols-like-this "mc-mark-more" "\ - - -\(fn)" t nil) - -(autoload 'mc/mark-all-in-region "mc-mark-more" "\ -Find and mark all the parts in the region matching the given search - -\(fn BEG END &optional SEARCH)" t nil) - -(autoload 'mc/mark-all-in-region-regexp "mc-mark-more" "\ -Find and mark all the parts in the region matching the given regexp. - -\(fn BEG END)" t nil) - -(autoload 'mc/mark-more-like-this-extended "mc-mark-more" "\ -Like mark-more-like-this, but then lets you adjust with arrows key. -The adjustments work like this: - - Mark previous like this and set direction to 'up - Mark next like this and set direction to 'down - -If direction is 'up: - - Skip past the cursor furthest up - Remove the cursor furthest up - -If direction is 'down: - - Remove the cursor furthest down - Skip past the cursor furthest down - -The bindings for these commands can be changed. See `mc/mark-more-like-this-extended-keymap'. - -\(fn)" t nil) - -(autoload 'mc/mark-all-like-this-dwim "mc-mark-more" "\ -Tries to guess what you want to mark all of. -Can be pressed multiple times to increase selection. - -With prefix, it behaves the same as original `mc/mark-all-like-this' - -\(fn ARG)" t nil) - -(autoload 'mc/mark-all-dwim "mc-mark-more" "\ -Tries even harder to guess what you want to mark all of. - -If the region is active and spans multiple lines, it will behave -as if `mc/mark-all-in-region'. With the prefix ARG, it will call -`mc/edit-lines' instead. - -If the region is inactive or on a single line, it will behave like -`mc/mark-all-like-this-dwim'. - -\(fn ARG)" t nil) - -(autoload 'mc/mark-all-like-this-in-defun "mc-mark-more" "\ -Mark all like this in defun. - -\(fn)" t nil) - -(autoload 'mc/mark-all-words-like-this-in-defun "mc-mark-more" "\ -Mark all words like this in defun. - -\(fn)" t nil) - -(autoload 'mc/mark-all-symbols-like-this-in-defun "mc-mark-more" "\ -Mark all symbols like this in defun. - -\(fn)" t nil) - -(autoload 'mc/toggle-cursor-on-click "mc-mark-more" "\ -Add a cursor where you click, or remove a fake cursor that is -already there. - -\(fn EVENT)" t nil) - -(defalias 'mc/add-cursor-on-click 'mc/toggle-cursor-on-click) - -(autoload 'mc/mark-sgml-tag-pair "mc-mark-more" "\ -Mark the tag we're in and its pair for renaming. - -\(fn)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-mark-more" '("mc/" "mc--"))) - -;;;*** - -;;;### (autoloads nil "mc-mark-pop" "mc-mark-pop.el" (0 0 0 0)) -;;; Generated autoloads from mc-mark-pop.el - -(autoload 'mc/mark-pop "mc-mark-pop" "\ -Add a cursor at the current point, pop off mark ring and jump -to the popped mark. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads nil "mc-separate-operations" "mc-separate-operations.el" -;;;;;; (0 0 0 0)) -;;; Generated autoloads from mc-separate-operations.el - -(autoload 'mc/insert-numbers "mc-separate-operations" "\ -Insert increasing numbers for each cursor, starting at -`mc/insert-numbers-default' or ARG. - -\(fn ARG)" t nil) - -(autoload 'mc/insert-letters "mc-separate-operations" "\ -Insert increasing letters for each cursor, starting at 0 or ARG. - Where letter[0]=a letter[2]=c letter[26]=aa - -\(fn ARG)" t nil) - -(autoload 'mc/reverse-regions "mc-separate-operations" "\ - - -\(fn)" t nil) - -(autoload 'mc/sort-regions "mc-separate-operations" "\ - - -\(fn)" t nil) - -(autoload 'mc/vertical-align "mc-separate-operations" "\ -Aligns all cursors vertically with a given CHARACTER to the one with the -highest column number (the rightest). -Might not behave as intended if more than one cursors are on the same line. - -\(fn CHARACTER)" t nil) - -(autoload 'mc/vertical-align-with-space "mc-separate-operations" "\ -Aligns all cursors with whitespace like `mc/vertical-align' does - -\(fn)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-separate-operations" '("mc/insert-numbers-default" "mc--"))) - -;;;*** - -;;;### (autoloads nil "multiple-cursors-core" "multiple-cursors-core.el" -;;;;;; (0 0 0 0)) -;;; Generated autoloads from multiple-cursors-core.el - -(autoload 'multiple-cursors-mode "multiple-cursors-core" "\ -Mode while multiple cursors are active. - -\(fn &optional ARG)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "multiple-cursors-core" '("multiple-cursors-mode" "unsupported-cmd" "deactivate-cursor-after-undo" "activate-cursor-for-undo"))) - -;;;*** - -;;;### (autoloads nil "rectangular-region-mode" "rectangular-region-mode.el" -;;;;;; (0 0 0 0)) -;;; Generated autoloads from rectangular-region-mode.el - -(autoload 'set-rectangular-region-anchor "rectangular-region-mode" "\ -Anchors the rectangular region at point. - -Think of this one as `set-mark' except you're marking a rectangular region. It is -an exceedingly quick way of adding multiple cursors to multiple lines. - -\(fn)" t nil) - -(autoload 'rectangular-region-mode "rectangular-region-mode" "\ -A mode for creating a rectangular region to edit - -\(fn &optional ARG)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rectangular-region-mode" '("rectangular-region-mode" "rrm/"))) - -;;;*** - -;;;### (autoloads nil nil ("multiple-cursors-pkg.el" "multiple-cursors.el") -;;;;;; (0 0 0 0)) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; multiple-cursors-autoloads.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/multiple-cursors-core.el b/elpa/multiple-cursors-20191210.1759/multiple-cursors-core.el deleted file mode 100644 index 5d8cb8a..0000000 --- a/elpa/multiple-cursors-20191210.1759/multiple-cursors-core.el +++ /dev/null @@ -1,852 +0,0 @@ -;;; multiple-cursors-core.el --- An experiment in multiple cursors for emacs. - -;; Copyright (C) 2012-2016 Magnar Sveen - -;; Author: Magnar Sveen -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; This file contains the core functionality of multiple-cursors. -;; Please see multiple-cursors.el for more commentary. - -;;; Code: - -(require 'cl-lib) -(require 'rect) - -(defvar mc--read-char) - -(defface mc/cursor-face - '((t (:inverse-video t))) - "The face used for fake cursors" - :group 'multiple-cursors) - -(defface mc/cursor-bar-face - `((t (:height 1 :background ,(face-attribute 'cursor :background)))) - "The face used for fake cursors if the cursor-type is bar" - :group 'multiple-cursors) - -(defface mc/region-face - '((t :inherit region)) - "The face used for fake regions" - :group 'multiple-cursors) - -(defmacro mc/add-fake-cursor-to-undo-list (&rest forms) - "Make sure point is in the right place when undoing" - (let ((uc (make-symbol "undo-cleaner"))) - `(let ((,uc (cons 'apply (cons 'deactivate-cursor-after-undo (list id))))) - (setq buffer-undo-list (cons ,uc buffer-undo-list)) - ,@forms - (if (eq ,uc (car buffer-undo-list)) ;; if nothing has been added to the undo-list - (setq buffer-undo-list (cdr buffer-undo-list)) ;; then pop the cleaner right off again - (setq buffer-undo-list ;; otherwise add a function to activate this cursor - (cons (cons 'apply (cons 'activate-cursor-for-undo (list id))) buffer-undo-list)))))) - -(defun mc/all-fake-cursors (&optional start end) - (cl-remove-if-not 'mc/fake-cursor-p - (overlays-in (or start (point-min)) - (or end (point-max))))) - -(defmacro mc/for-each-fake-cursor (&rest forms) - "Runs the body for each fake cursor, bound to the name cursor" - `(mapc #'(lambda (cursor) ,@forms) - (mc/all-fake-cursors))) - -(defmacro mc/save-excursion (&rest forms) - "Saves and restores all the state that multiple-cursors cares about." - (let ((cs (make-symbol "current-state"))) - `(let ((,cs (mc/store-current-state-in-overlay - (make-overlay (point) (point) nil nil t)))) - (overlay-put ,cs 'type 'original-cursor) - (save-excursion ,@forms) - (mc/pop-state-from-overlay ,cs)))) - -(defun mc--compare-by-overlay-start (o1 o2) - (< (overlay-start o1) (overlay-start o2))) - -(defmacro mc/for-each-cursor-ordered (&rest forms) - "Runs the body for each cursor, fake and real, bound to the name cursor" - (let ((rci (make-symbol "real-cursor-id"))) - `(let ((,rci (overlay-get (mc/create-fake-cursor-at-point) 'mc-id))) - (mapc #'(lambda (cursor) - (when (mc/fake-cursor-p cursor) - ,@forms)) - (sort (overlays-in (point-min) (point-max)) 'mc--compare-by-overlay-start)) - (mc/pop-state-from-overlay (mc/cursor-with-id ,rci))))) - -(defmacro mc/save-window-scroll (&rest forms) - "Saves and restores the window scroll position" - (let ((p (make-symbol "p")) - (s (make-symbol "start")) - (h (make-symbol "hscroll"))) - `(let ((,p (set-marker (make-marker) (point))) - (,s (set-marker (make-marker) (window-start))) - (,h (window-hscroll))) - ,@forms - (goto-char ,p) - (set-window-start nil ,s t) - (set-window-hscroll nil ,h) - (set-marker ,p nil) - (set-marker ,s nil)))) - -(defun mc/cursor-is-bar () - "Return non-nil if the cursor is a bar." - (or (eq cursor-type 'bar) - (and (listp cursor-type) - (eq (car cursor-type) 'bar)))) - -(defun mc/line-number-at-pos (&optional pos absolute) - "Faster implementation of `line-number-at-pos'." - (if pos - (save-excursion - (if absolute - (save-restriction - (widen) - (goto-char pos) - (string-to-number (format-mode-line "%l"))) - (goto-char pos) - (string-to-number (format-mode-line "%l")))) - (string-to-number (format-mode-line "%l")))) - -(defun mc/make-cursor-overlay-at-eol (pos) - "Create overlay to look like cursor at end of line." - (let ((overlay (make-overlay pos pos nil nil nil))) - (if (mc/cursor-is-bar) - (overlay-put overlay 'before-string (propertize "|" 'face 'mc/cursor-bar-face)) - (overlay-put overlay 'after-string (propertize " " 'face 'mc/cursor-face))) - overlay)) - -(defun mc/make-cursor-overlay-inline (pos) - "Create overlay to look like cursor inside text." - (let ((overlay (make-overlay pos (1+ pos) nil nil nil))) - (if (mc/cursor-is-bar) - (overlay-put overlay 'before-string (propertize "|" 'face 'mc/cursor-bar-face)) - (overlay-put overlay 'face 'mc/cursor-face)) - overlay)) - -(defun mc/make-cursor-overlay-at-point () - "Create overlay to look like cursor. -Special case for end of line, because overlay over a newline -highlights the entire width of the window." - (if (eolp) - (mc/make-cursor-overlay-at-eol (point)) - (mc/make-cursor-overlay-inline (point)))) - -(defun mc/make-region-overlay-between-point-and-mark () - "Create overlay to look like active region." - (let ((overlay (make-overlay (mark) (point) nil nil t))) - (overlay-put overlay 'face 'mc/region-face) - (overlay-put overlay 'type 'additional-region) - overlay)) - -(defvar mc/cursor-specific-vars '(transient-mark-mode - kill-ring - kill-ring-yank-pointer - mark-ring - mark-active - yank-undo-function - autopair-action - autopair-wrap-action - temporary-goal-column - er/history - dabbrev--abbrev-char-regexp - dabbrev--check-other-buffers - dabbrev--friend-buffer-list - dabbrev--last-abbrev-location - dabbrev--last-abbreviation - dabbrev--last-buffer - dabbrev--last-buffer-found - dabbrev--last-direction - dabbrev--last-expansion - dabbrev--last-expansion-location - dabbrev--last-table) - "A list of vars that need to be tracked on a per-cursor basis.") - -(defun mc/store-current-state-in-overlay (o) - "Store relevant info about point and mark in the given overlay." - (overlay-put o 'point (set-marker (make-marker) (point))) - (overlay-put o 'mark (set-marker (make-marker) - (let ((mark-even-if-inactive t)) - (mark)))) - (dolist (var mc/cursor-specific-vars) - (when (boundp var) (overlay-put o var (symbol-value var)))) - o) - -(defun mc/restore-state-from-overlay (o) - "Restore point and mark from stored info in the given overlay." - (goto-char (overlay-get o 'point)) - (set-marker (mark-marker) (overlay-get o 'mark)) - (dolist (var mc/cursor-specific-vars) - (when (boundp var) (set var (overlay-get o var))))) - -(defun mc/remove-fake-cursor (o) - "Delete overlay with state, including dependent overlays and markers." - (set-marker (overlay-get o 'point) nil) - (set-marker (overlay-get o 'mark) nil) - (mc/delete-region-overlay o) - (delete-overlay o)) - -(defun mc/pop-state-from-overlay (o) - "Restore the state stored in given overlay and then remove the overlay." - (mc/restore-state-from-overlay o) - (mc/remove-fake-cursor o)) - -(defun mc/delete-region-overlay (o) - "Remove the dependent region overlay for a given cursor overlay." - (ignore-errors - (delete-overlay (overlay-get o 'region-overlay)))) - -(defvar mc--current-cursor-id 0 - "Var to store increasing id of fake cursors, used to keep track of them for undo.") - -(defun mc/create-cursor-id () - "Returns a unique cursor id" - (cl-incf mc--current-cursor-id)) - -(defvar mc--max-cursors-original nil - "This variable maintains the original maximum number of cursors. -When `mc/create-fake-cursor-at-point' is called and -`mc/max-cursors' is overridden, this value serves as a backup so -that `mc/max-cursors' can take on a new value. When -`mc/remove-fake-cursors' is called, the values are reset.") - -(defcustom mc/max-cursors nil - "Safety ceiling for the number of active cursors. -If your emacs slows down or freezes when using too many cursors, -customize this value appropriately. - -Cursors will be added until this value is reached, at which point -you can either temporarily override the value or abort the -operation entirely. - -If this value is nil, there is no ceiling." - :type '(integer) - :group 'multiple-cursors) - -(defun mc/create-fake-cursor-at-point (&optional id) - "Add a fake cursor and possibly a fake active region overlay based on point and mark. -Saves the current state in the overlay to be restored later." - (unless mc--max-cursors-original - (setq mc--max-cursors-original mc/max-cursors)) - (when mc/max-cursors - (unless (< (mc/num-cursors) mc/max-cursors) - (if (yes-or-no-p (format "%d active cursors. Continue? " (mc/num-cursors))) - (setq mc/max-cursors (read-number "Enter a new, temporary maximum: ")) - (mc/remove-fake-cursors) - (error "Aborted: too many cursors")))) - (let ((overlay (mc/make-cursor-overlay-at-point))) - (overlay-put overlay 'mc-id (or id (mc/create-cursor-id))) - (overlay-put overlay 'type 'fake-cursor) - (overlay-put overlay 'priority 100) - (mc/store-current-state-in-overlay overlay) - (when (use-region-p) - (overlay-put overlay 'region-overlay - (mc/make-region-overlay-between-point-and-mark))) - overlay)) - -(defun mc/execute-command (cmd) - "Run command, simulating the parts of the command loop that makes sense for fake cursors." - (setq this-command cmd) - (run-hooks 'pre-command-hook) - (unless (eq this-command 'ignore) - (call-interactively cmd)) - (run-hooks 'post-command-hook) - (when deactivate-mark (deactivate-mark))) - -(defvar mc--executing-command-for-fake-cursor nil) - -(defun mc/execute-command-for-fake-cursor (cmd cursor) - (let ((mc--executing-command-for-fake-cursor t) - (id (overlay-get cursor 'mc-id)) - (annoying-arrows-mode nil) - (smooth-scroll-margin 0)) - (mc/add-fake-cursor-to-undo-list - (mc/pop-state-from-overlay cursor) - (ignore-errors - (mc/execute-command cmd) - (mc/create-fake-cursor-at-point id))))) - -(defun mc/execute-command-for-all-fake-cursors (cmd) - "Calls CMD interactively for each cursor. -It works by moving point to the fake cursor, setting -up the proper environment, and then removing the cursor. -After executing the command, it sets up a new fake -cursor with updated info." - (mc/save-excursion - (mc/save-window-scroll - (mc/for-each-fake-cursor - (save-excursion - (mc/execute-command-for-fake-cursor cmd cursor))))) - (mc--reset-read-prompts)) - -(defun mc/execute-command-for-all-cursors (cmd) - "Calls CMD interactively for the real cursor and all fakes." - (call-interactively cmd) - (mc/execute-command-for-all-fake-cursors cmd)) - -;; Intercept some reading commands so you won't have to -;; answer them for every single cursor - -(defvar mc--read-char nil) -(defvar multiple-cursors-mode nil) -(defadvice read-char (around mc-support activate) - (if (not multiple-cursors-mode) - ad-do-it - (unless mc--read-char - (setq mc--read-char ad-do-it)) - (setq ad-return-value mc--read-char))) - -(defvar mc--read-quoted-char nil) -(defadvice read-quoted-char (around mc-support activate) - (if (not multiple-cursors-mode) - ad-do-it - (unless mc--read-quoted-char - (setq mc--read-quoted-char ad-do-it)) - (setq ad-return-value mc--read-quoted-char))) - -(defun mc--reset-read-prompts () - (setq mc--read-char nil) - (setq mc--read-quoted-char nil)) - -(mc--reset-read-prompts) - -(defun mc/fake-cursor-p (o) - "Predicate to check if an overlay is a fake cursor" - (eq (overlay-get o 'type) 'fake-cursor)) - -(defun mc/cursor-with-id (id) - "Find the first cursor with the given id, or nil" - (cl-find-if #'(lambda (o) (and (mc/fake-cursor-p o) - (= id (overlay-get o 'mc-id)))) - (overlays-in (point-min) (point-max)))) - -(defvar mc--stored-state-for-undo nil - "Variable to keep the state of the real cursor while undoing a fake one") - -(defun activate-cursor-for-undo (id) - "Called when undoing to temporarily activate the fake cursor which action is being undone." - (let ((cursor (mc/cursor-with-id id))) - (when cursor - (setq mc--stored-state-for-undo (mc/store-current-state-in-overlay - (make-overlay (point) (point) nil nil t))) - (mc/pop-state-from-overlay cursor)))) - -(defun deactivate-cursor-after-undo (id) - "Called when undoing to reinstate the real cursor after undoing a fake one." - (when mc--stored-state-for-undo - (mc/create-fake-cursor-at-point id) - (mc/pop-state-from-overlay mc--stored-state-for-undo) - (setq mc--stored-state-for-undo nil))) - -(defcustom mc/always-run-for-all nil - "Disables whitelisting and always executes commands for every fake cursor." - :type '(boolean) - :group 'multiple-cursors) - -(defcustom mc/always-repeat-command nil - "Disables confirmation for `mc/repeat-command' command." - :type '(boolean) - :group 'multiple-cursors) - -(defun mc/prompt-for-inclusion-in-whitelist (original-command) - "Asks the user, then adds the command either to the once-list or the all-list." - (let ((all-p (y-or-n-p (format "Do %S for all cursors?" original-command)))) - (if all-p - (add-to-list 'mc/cmds-to-run-for-all original-command) - (add-to-list 'mc/cmds-to-run-once original-command)) - (mc/save-lists) - all-p)) - -(defun mc/num-cursors () - "The number of cursors (real and fake) in the buffer." - (1+ (cl-count-if 'mc/fake-cursor-p - (overlays-in (point-min) (point-max))))) - -(defvar mc--this-command nil - "Used to store the original command being run.") -(make-variable-buffer-local 'mc--this-command) - -(defun mc/make-a-note-of-the-command-being-run () - "Used with pre-command-hook to store the original command being run. -Since that cannot be reliably determined in the post-command-hook. - -Specifically, this-original-command isn't always right, because it could have -been remapped. And certain modes (cua comes to mind) will change their -remapping based on state. So a command that changes the state will afterwards -not be recognized through the command-remapping lookup." - (unless mc--executing-command-for-fake-cursor - (let ((cmd (or (command-remapping this-original-command) - this-original-command))) - (setq mc--this-command (and (not (eq cmd 'god-mode-self-insert)) - cmd))))) - -(defun mc/execute-this-command-for-all-cursors () - "Wrap around `mc/execute-this-command-for-all-cursors-1' to protect hook." - (condition-case error - (mc/execute-this-command-for-all-cursors-1) - (error - (message "[mc] problem in `mc/execute-this-command-for-all-cursors': %s" - (error-message-string error))))) - -;; execute-kbd-macro should never be run for fake cursors. The real cursor will -;; execute the keyboard macro, resulting in new commands in the command loop, -;; and the fake cursors can pick up on those instead. -(defadvice execute-kbd-macro (around skip-fake-cursors activate) - (unless mc--executing-command-for-fake-cursor - ad-do-it)) - -(defun mc/execute-this-command-for-all-cursors-1 () - "Used with post-command-hook to execute supported commands for all cursors. - -It uses two lists of commands to know what to do: the run-once -list and the run-for-all list. If a command is in neither of these lists, -it will prompt for the proper action and then save that preference. - -Some commands are so unsupported that they are even prevented for -the original cursor, to inform about the lack of support." - (unless mc--executing-command-for-fake-cursor - - (if (eq 1 (mc/num-cursors)) ;; no fake cursors? disable mc-mode - (multiple-cursors-mode 0) - (when this-original-command - (let ((original-command (or mc--this-command - (command-remapping this-original-command) - this-original-command))) - - ;; skip keyboard macros, since they will generate actual commands that are - ;; also run in the command loop - we'll handle those later instead. - (when (functionp original-command) - - ;; if it's a lambda, we can't know if it's supported or not - ;; - so go ahead and assume it's ok, because we're just optimistic like that - (if (or (not (symbolp original-command)) - ;; lambda registered by smartrep - (string-prefix-p "(" (symbol-name original-command))) - (mc/execute-command-for-all-fake-cursors original-command) - - ;; smartrep `intern's commands into own obarray to help - ;; `describe-bindings'. So, let's re-`intern' here to - ;; make the command comparable by `eq'. - (setq original-command (intern (symbol-name original-command))) - - ;; otherwise it's a symbol, and we can be more thorough - (if (get original-command 'mc--unsupported) - (message "%S is not supported with multiple cursors%s" - original-command - (get original-command 'mc--unsupported)) - - ;; lazy-load the user's list file - (mc/load-lists) - - (when (and original-command - (not (memq original-command mc--default-cmds-to-run-once)) - (not (memq original-command mc/cmds-to-run-once)) - (or mc/always-run-for-all - (memq original-command mc--default-cmds-to-run-for-all) - (memq original-command mc/cmds-to-run-for-all) - (mc/prompt-for-inclusion-in-whitelist original-command))) - (mc/execute-command-for-all-fake-cursors original-command)))))))))) - -(defun mc/remove-fake-cursors () - "Remove all fake cursors. -Do not use to conclude editing with multiple cursors. For that -you should disable multiple-cursors-mode." - (mc/for-each-fake-cursor - (mc/remove-fake-cursor cursor)) - (when mc--max-cursors-original - (setq mc/max-cursors mc--max-cursors-original)) - (setq mc--max-cursors-original nil)) - -(defun mc/keyboard-quit () - "Deactivate mark if there are any active, otherwise exit multiple-cursors-mode." - (interactive) - (if (not (use-region-p)) - (multiple-cursors-mode 0) - (deactivate-mark))) - -(defun mc/repeat-command () - "Run last command from `command-history' for every fake cursor." - (interactive) - (when (or mc/always-repeat-command - (y-or-n-p (format "[mc] repeat complex command: %s? " (caar command-history)))) - (mc/execute-command-for-all-fake-cursors - (lambda () (interactive) - (cl-letf (((symbol-function 'read-from-minibuffer) - (lambda (p &optional i k r h d m) (read i)))) - (repeat-complex-command 0)))))) - -(defvar mc/keymap nil - "Keymap while multiple cursors are active. -Main goal of the keymap is to rebind C-g and to conclude -multiple cursors editing.") -(unless mc/keymap - (setq mc/keymap (make-sparse-keymap)) - (define-key mc/keymap (kbd "C-g") 'mc/keyboard-quit) - (define-key mc/keymap (kbd "") 'multiple-cursors-mode) - (define-key mc/keymap (kbd "C-:") 'mc/repeat-command) - (when (fboundp 'phi-search) - (define-key mc/keymap (kbd "C-s") 'phi-search)) - (when (fboundp 'phi-search-backward) - (define-key mc/keymap (kbd "C-r") 'phi-search-backward))) - -(defun mc--all-equal (list) - "Are all the items in LIST equal?" - (let ((first (car list)) - (all-equal t)) - (while (and all-equal list) - (setq all-equal (equal first (car list))) - (setq list (cdr list))) - all-equal)) - -(defun mc--kill-ring-entries () - "Return the latest kill-ring entry for each cursor. -The entries are returned in the order they are found in the buffer." - (let (entries) - (mc/for-each-cursor-ordered - (setq entries (cons (car (overlay-get cursor 'kill-ring)) entries))) - (reverse entries))) - -(defun mc--maybe-set-killed-rectangle () - "Add the latest kill-ring entry for each cursor to killed-rectangle. -So you can paste it in later with `yank-rectangle'." - (let ((entries (let (mc/max-cursors) (mc--kill-ring-entries)))) - (unless (mc--all-equal entries) - (setq killed-rectangle entries)))) - -(defvar mc/unsupported-minor-modes '(company-mode auto-complete-mode flyspell-mode jedi-mode) - "List of minor-modes that does not play well with multiple-cursors. -They are temporarily disabled when multiple-cursors are active.") - -(defvar mc/temporarily-disabled-minor-modes nil - "The list of temporarily disabled minor-modes.") -(make-variable-buffer-local 'mc/temporarily-disabled-minor-modes) - -(defun mc/temporarily-disable-minor-mode (mode) - "If MODE is available and turned on, remember that and turn it off." - (when (and (boundp mode) (eval mode)) - (add-to-list 'mc/temporarily-disabled-minor-modes mode) - (funcall mode -1))) - -(defun mc/temporarily-disable-unsupported-minor-modes () - (mapc 'mc/temporarily-disable-minor-mode mc/unsupported-minor-modes)) - -(defun mc/enable-minor-mode (mode) - (funcall mode 1)) - -(defun mc/enable-temporarily-disabled-minor-modes () - (mapc 'mc/enable-minor-mode mc/temporarily-disabled-minor-modes) - (setq mc/temporarily-disabled-minor-modes nil)) - -(defcustom mc/mode-line - `(" mc:" (:eval (format ,(propertize "%d" 'face 'font-lock-warning-face) - (mc/num-cursors)))) - "What to display in the mode line while multiple-cursors-mode is active." - :group 'multiple-cursors) -(put 'mc/mode-line 'risky-local-variable t) - -;;;###autoload -(define-minor-mode multiple-cursors-mode - "Mode while multiple cursors are active." - nil mc/mode-line mc/keymap - (if multiple-cursors-mode - (progn - (mc/temporarily-disable-unsupported-minor-modes) - (add-hook 'pre-command-hook 'mc/make-a-note-of-the-command-being-run nil t) - (add-hook 'post-command-hook 'mc/execute-this-command-for-all-cursors t t) - (run-hooks 'multiple-cursors-mode-enabled-hook)) - (remove-hook 'post-command-hook 'mc/execute-this-command-for-all-cursors t) - (remove-hook 'pre-command-hook 'mc/make-a-note-of-the-command-being-run t) - (setq mc--this-command nil) - (mc--maybe-set-killed-rectangle) - (mc/remove-fake-cursors) - (mc/enable-temporarily-disabled-minor-modes) - (run-hooks 'multiple-cursors-mode-disabled-hook))) - -(add-hook 'after-revert-hook #'(lambda () (multiple-cursors-mode 0))) - -(defun mc/maybe-multiple-cursors-mode () - "Enable multiple-cursors-mode if there is more than one currently active cursor." - (if (> (mc/num-cursors) 1) - (multiple-cursors-mode 1) - (multiple-cursors-mode 0))) - -(defmacro unsupported-cmd (cmd msg) - "Adds command to list of unsupported commands and prevents it -from being executed if in multiple-cursors-mode." - `(progn - (put (quote ,cmd) 'mc--unsupported ,msg) - (defadvice ,cmd (around unsupported-advice activate) - "command isn't supported with multiple cursors" - (unless (and multiple-cursors-mode (called-interactively-p 'any)) - ad-do-it)))) - -;; Commands that does not work with multiple-cursors -(unsupported-cmd isearch-forward ". Feel free to add a compatible version.") -(unsupported-cmd isearch-backward ". Feel free to add a compatible version.") - -;; Make sure pastes from other programs are added to all kill-rings when yanking -(defadvice current-kill (before interprogram-paste-for-all-cursors - (n &optional do-not-move) activate) - (let ((interprogram-paste (and (= n 0) - interprogram-paste-function - (funcall interprogram-paste-function)))) - (when interprogram-paste - ;; Add interprogram-paste to normal kill ring, just - ;; like current-kill usually does for itself. - ;; We have to do the work for it though, since the funcall only returns - ;; something once. It is not a pure function. - (let ((interprogram-cut-function nil)) - (if (listp interprogram-paste) - (mapc 'kill-new (nreverse interprogram-paste)) - (kill-new interprogram-paste)) - ;; And then add interprogram-paste to the kill-rings - ;; of all the other cursors too. - (mc/for-each-fake-cursor - (let ((kill-ring (overlay-get cursor 'kill-ring)) - (kill-ring-yank-pointer (overlay-get cursor 'kill-ring-yank-pointer))) - (if (listp interprogram-paste) - (mapc 'kill-new (nreverse interprogram-paste)) - (kill-new interprogram-paste)) - (overlay-put cursor 'kill-ring kill-ring) - (overlay-put cursor 'kill-ring-yank-pointer kill-ring-yank-pointer))))))) - -(defcustom mc/list-file (locate-user-emacs-file ".mc-lists.el") - "The position of the file that keeps track of your preferences -for running commands with multiple cursors." - :type 'file - :group 'multiple-cursors) - -(defvar mc--list-file-loaded nil - "Whether the list file has already been loaded.") - -(defun mc/load-lists () - "Loads preferences for running commands with multiple cursors from `mc/list-file'" - (unless mc--list-file-loaded - (load mc/list-file 'noerror 'nomessage) - (setq mc--list-file-loaded t))) - -(defun mc/dump-list (list-symbol) - "Insert (setq 'LIST-SYMBOL LIST-VALUE) to current buffer." - (cl-symbol-macrolet ((value (symbol-value list-symbol))) - (insert "(setq " (symbol-name list-symbol) "\n" - " '(") - (newline-and-indent) - (set list-symbol - (sort value (lambda (x y) (string-lessp (symbol-name x) - (symbol-name y))))) - (mapc #'(lambda (cmd) (insert (format "%S" cmd)) (newline-and-indent)) - value) - (insert "))") - (newline))) - -(defun mc/save-lists () - "Saves preferences for running commands with multiple cursors to `mc/list-file'" - (with-temp-file mc/list-file - (emacs-lisp-mode) - (insert ";; This file is automatically generated by the multiple-cursors extension.") - (newline) - (insert ";; It keeps track of your preferences for running commands with multiple cursors.") - (newline) - (newline) - (mc/dump-list 'mc/cmds-to-run-for-all) - (newline) - (mc/dump-list 'mc/cmds-to-run-once))) - -(defvar mc/cmds-to-run-once nil - "Commands to run only once in multiple-cursors-mode.") - -(defvar mc--default-cmds-to-run-once nil - "Default set of commands to run only once in multiple-cursors-mode.") - -(setq mc--default-cmds-to-run-once '(mc/edit-lines - mc/edit-ends-of-lines - mc/edit-beginnings-of-lines - mc/mark-next-like-this - mc/mark-next-like-this-word - mc/mark-next-like-this-symbol - mc/mark-next-word-like-this - mc/mark-next-symbol-like-this - mc/mark-previous-like-this - mc/mark-previous-like-this-word - mc/mark-previous-like-this-symbol - mc/mark-previous-word-like-this - mc/mark-previous-symbol-like-this - mc/mark-all-like-this - mc/mark-all-words-like-this - mc/mark-all-symbols-like-this - mc/mark-more-like-this-extended - mc/mark-all-like-this-in-defun - mc/mark-all-words-like-this-in-defun - mc/mark-all-symbols-like-this-in-defun - mc/mark-all-like-this-dwim - mc/mark-all-dwim - mc/mark-sgml-tag-pair - mc/insert-numbers - mc/insert-letters - mc/sort-regions - mc/reverse-regions - mc/cycle-forward - mc/cycle-backward - mc/add-cursor-on-click - mc/mark-pop - mc/add-cursors-to-all-matches - mc/mmlte--left - mc/mmlte--right - mc/mmlte--up - mc/mmlte--down - mc/unmark-next-like-this - mc/unmark-previous-like-this - mc/skip-to-next-like-this - mc/skip-to-previous-like-this - rrm/switch-to-multiple-cursors - mc-hide-unmatched-lines-mode - mc/repeat-command - hum/keyboard-quit - hum/unhide-invisible-overlays - save-buffer - ido-exit-minibuffer - ivy-done - exit-minibuffer - minibuffer-complete-and-exit - execute-extended-command - eval-expression - undo - redo - undo-tree-undo - undo-tree-redo - universal-argument - universal-argument-more - universal-argument-other-key - negative-argument - digit-argument - top-level - recenter-top-bottom - describe-mode - describe-key-1 - describe-function - describe-bindings - describe-prefix-bindings - view-echo-area-messages - other-window - kill-buffer-and-window - split-window-right - split-window-below - delete-other-windows - toggle-window-split - mwheel-scroll - scroll-up-command - scroll-down-command - mouse-set-point - mouse-drag-region - quit-window - toggle-read-only - windmove-left - windmove-right - windmove-up - windmove-down - repeat-complex-command)) - -(defvar mc--default-cmds-to-run-for-all nil - "Default set of commands that should be mirrored by all cursors") - -(setq mc--default-cmds-to-run-for-all '(mc/keyboard-quit - self-insert-command - quoted-insert - previous-line - next-line - newline - newline-and-indent - open-line - delete-blank-lines - transpose-chars - transpose-lines - transpose-paragraphs - transpose-regions - join-line - right-char - right-word - forward-char - forward-word - left-char - left-word - backward-char - backward-word - forward-paragraph - backward-paragraph - upcase-word - downcase-word - capitalize-word - forward-list - backward-list - hippie-expand - hippie-expand-lines - yank - yank-pop - append-next-kill - kill-word - kill-line - kill-whole-line - backward-kill-word - backward-delete-char-untabify - delete-char delete-forward-char - delete-backward-char - py-electric-backspace - c-electric-backspace - org-delete-backward-char - cperl-electric-backspace - python-indent-dedent-line-backspace - paredit-backward-delete - autopair-backspace - just-one-space - zap-to-char - end-of-line - set-mark-command - exchange-point-and-mark - cua-set-mark - cua-replace-region - cua-delete-region - move-end-of-line - beginning-of-line - move-beginning-of-line - kill-ring-save - back-to-indentation - subword-forward - subword-backward - subword-mark - subword-kill - subword-backward-kill - subword-transpose - subword-capitalize - subword-upcase - subword-downcase - er/expand-region - er/contract-region - smart-forward - smart-backward - smart-up - smart-down)) - -(defvar mc/cmds-to-run-for-all nil - "Commands to run for all cursors in multiple-cursors-mode") - -(provide 'multiple-cursors-core) - -;; Local Variables: -;; coding: utf-8 -;; End: - -;;; multiple-cursors-core.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/multiple-cursors-core.elc b/elpa/multiple-cursors-20191210.1759/multiple-cursors-core.elc deleted file mode 100644 index 2efd5f3e96783a0b85a8edeb41ea76141b63f0bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30115 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 diff --git a/elpa/multiple-cursors-20191210.1759/multiple-cursors-pkg.el b/elpa/multiple-cursors-20191210.1759/multiple-cursors-pkg.el deleted file mode 100644 index 35bdbe4..0000000 --- a/elpa/multiple-cursors-20191210.1759/multiple-cursors-pkg.el +++ /dev/null @@ -1,6 +0,0 @@ -(define-package "multiple-cursors" "20191210.1759" "Multiple cursors for Emacs." - '((cl-lib "0.5")) - :commit "b880554d04b8f61165afba7d4de19ac9e39bb7ab") -;; Local Variables: -;; no-byte-compile: t -;; End: diff --git a/elpa/multiple-cursors-20191210.1759/multiple-cursors.el b/elpa/multiple-cursors-20191210.1759/multiple-cursors.el deleted file mode 100644 index e78bab3..0000000 --- a/elpa/multiple-cursors-20191210.1759/multiple-cursors.el +++ /dev/null @@ -1,203 +0,0 @@ -;;; multiple-cursors.el --- Multiple cursors for emacs. - -;; Copyright (C) 2012-2016 Magnar Sveen - -;; Author: Magnar Sveen -;; Version: 1.4.0 -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; Multiple cursors for Emacs. This is some pretty crazy functionality, so yes, -;; there are kinks. Don't be afraid though, I've been using it since 2011 with -;; great success and much merriment. - -;; ## Basic usage - -;; Start out with: - -;; (require 'multiple-cursors) - -;; Then you have to set up your keybindings - multiple-cursors doesn't presume to -;; know how you'd like them laid out. Here are some examples: - -;; When you have an active region that spans multiple lines, the following will -;; add a cursor to each line: - -;; (global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines) - -;; When you want to add multiple cursors not based on continuous lines, but based on -;; keywords in the buffer, use: - -;; (global-set-key (kbd "C->") 'mc/mark-next-like-this) -;; (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) -;; (global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) - -;; First mark the word, then add more cursors. - -;; To get out of multiple-cursors-mode, press `` or `C-g`. The latter will -;; first disable multiple regions before disabling multiple cursors. If you want to -;; insert a newline in multiple-cursors-mode, use `C-j`. - -;; ## Video - -;; You can [watch an intro to multiple-cursors at Emacs Rocks](http://emacsrocks.com/e13.html). - -;; ## Command overview - -;; ### Mark one more occurrence - -;; - `mc/mark-next-like-this`: Adds a cursor and region at the next part of the buffer forwards that matches the current region. -;; - `mc/mark-next-like-this-word`: Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the word at the point. -;; - `mc/mark-next-like-this-symbol`: Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the symbol at the point. -;; - `mc/mark-next-word-like-this`: Like `mc/mark-next-like-this` but only for whole words. -;; - `mc/mark-next-symbol-like-this`: Like `mc/mark-next-like-this` but only for whole symbols. -;; - `mc/mark-previous-like-this`: Adds a cursor and region at the next part of the buffer backwards that matches the current region. -;; - `mc/mark-previous-word-like-this`: Like `mc/mark-previous-like-this` but only for whole words. -;; - `mc/mark-previous-symbol-like-this`: Like `mc/mark-previous-like-this` but only for whole symbols. -;; - `mc/mark-more-like-this-extended`: Use arrow keys to quickly mark/skip next/previous occurrences. -;; - `mc/add-cursor-on-click`: Bind to a mouse event to add cursors by clicking. See tips-section. - -;; ### Mark many occurrences - -;; - `mc/mark-all-like-this`: Marks all parts of the buffer that matches the current region. -;; - `mc/mark-all-words-like-this`: Like `mc/mark-all-like-this` but only for whole words. -;; - `mc/mark-all-symbols-like-this`: Like `mc/mark-all-like-this` but only for whole symbols. -;; - `mc/mark-all-in-region`: Prompts for a string to match in the region, adding cursors to all of them. -;; - `mc/mark-all-like-this-in-defun`: Marks all parts of the current defun that matches the current region. -;; - `mc/mark-all-words-like-this-in-defun`: Like `mc/mark-all-like-this-in-defun` but only for whole words. -;; - `mc/mark-all-symbols-like-this-in-defun`: Like `mc/mark-all-like-this-in-defun` but only for whole symbols. -;; - `mc/mark-all-like-this-dwim`: Tries to be smart about marking everything you want. Can be pressed multiple times. - -;; ### Special - -;; - `set-rectangular-region-anchor`: Think of this one as `set-mark` except you're marking a rectangular region. -;; - `mc/mark-sgml-tag-pair`: Mark the current opening and closing tag. -;; - `mc/insert-numbers`: Insert increasing numbers for each cursor, top to bottom. -;; - `mc/insert-letters`: Insert increasing letters for each cursor, top to bottom. -;; - `mc/sort-regions`: Sort the marked regions alphabetically. -;; - `mc/reverse-regions`: Reverse the order of the marked regions. - -;; ## Tips and tricks - -;; - To get out of multiple-cursors-mode, press `` or `C-g`. The latter will -;; first disable multiple regions before disabling multiple cursors. If you want to -;; insert a newline in multiple-cursors-mode, use `C-j`. -;; -;; - Sometimes you end up with cursors outside of your view. You can -;; scroll the screen to center on each cursor with `C-v` and `M-v`. -;; -;; - Try pressing `mc/mark-next-like-this` with no region selected. It will just add a cursor -;; on the next line. -;; -;; - Try pressing `mc/mark-next-like-this-word` or -;; `mc/mark-next-like-this-symbol` with no region selected. It will -;; mark the symbol and add a cursor at the next occurrence -;; -;; - Try pressing `mc/mark-all-like-this-dwim` on a tagname in html-mode. -;; -;; - Notice that the number of cursors active can be seen in the modeline. -;; -;; - If you get out of multiple-cursors-mode and yank - it will yank only -;; from the kill-ring of main cursor. To yank from the kill-rings of -;; every cursor use yank-rectangle, normally found at C-x r y. -;; -;; - You can use `mc/reverse-regions` with nothing selected and just one cursor. -;; It will then flip the sexp at point and the one below it. -;; -;; - If you would like to keep the global bindings clean, and get custom keybindings -;; when the region is active, you can try [region-bindings-mode](https://github.com/fgallina/region-bindings-mode). -;; -;; BTW, I highly recommend adding `mc/mark-next-like-this` to a key binding that's -;; right next to the key for `er/expand-region`. - -;; ### Binding mouse events - -;; To override a mouse event, you will likely have to also unbind the -;; `down-mouse` part of the event. Like this: -;; -;; (global-unset-key (kbd "M-")) -;; (global-set-key (kbd "M-") 'mc/add-cursor-on-click) -;; -;; Or you can do like me and find an unused, but less convenient, binding: -;; -;; (global-set-key (kbd "C-S-") 'mc/add-cursor-on-click) - -;; ## Unknown commands - -;; Multiple-cursors uses two lists of commands to know what to do: the run-once list -;; and the run-for-all list. It comes with a set of defaults, but it would be beyond silly -;; to try and include all the known Emacs commands. - -;; So that's why multiple-cursors occasionally asks what to do about a command. It will -;; then remember your choice by saving it in `~/.emacs.d/.mc-lists.el`. You can change -;; the location with: - -;; (setq mc/list-file "/my/preferred/file") - -;; ## Known limitations - -;; * isearch-forward and isearch-backward aren't supported with multiple cursors. -;; You should feel free to add a simplified version that can work with it. -;; * Commands run with `M-x` won't be repeated for all cursors. -;; * All key bindings that refer to lambdas are always run for all cursors. If you -;; need to limit it, you will have to give it a name. -;; * Redo might screw with your cursors. Undo works very well. - -;; ## Contribute - -;; Yes, please do. There's a suite of tests, so remember to add tests for your -;; specific feature, or I might break it later. - -;; You'll find the repo at: - -;; https://github.com/magnars/multiple-cursors.el - -;; To fetch the test dependencies: - -;; $ cd /path/to/multiple-cursors -;; $ git submodule update --init - -;; Run the tests with: - -;; $ ./util/ecukes/ecukes --graphical - -;; ## Contributors - -;; * [Takafumi Arakaki](https://github.com/tkf) made .mc-lists.el diff friendly -;; * [Marco Baringer](https://github.com/segv) contributed looping to mc/cycle and adding cursors without region for mark-more. -;; * [Ivan Andrus](https://github.com/gvol) added showing number of cursors in mode-line -;; * [Fuco](https://github.com/Fuco1) added the first version of `mc/mark-all-like-this-dwim` - -;; Thanks! - -;;; Code: - -(defgroup multiple-cursors nil - "Multiple cursors for emacs." - :group 'editing) - -(require 'mc-edit-lines) -(require 'mc-cycle-cursors) -(require 'mc-mark-more) -(require 'mc-mark-pop) -(require 'rectangular-region-mode) -(require 'mc-separate-operations) -(require 'mc-hide-unmatched-lines-mode) - -(provide 'multiple-cursors) - -;;; multiple-cursors.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/multiple-cursors.elc b/elpa/multiple-cursors-20191210.1759/multiple-cursors.elc deleted file mode 100644 index 953b4acf0c046f7cda91d3f974e568fa585f4f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 790 zcmbtSO;6)65bZgCV6Q`^l|aH(lR)|CX;pDR+C43|g@duDjfL$o{$SPp^-Pk&264pF zQ}o`Ouh_G``MLQvo6V~AdJP+L!C2G-F&=K5R0&=%CPN;Y)uJ7ozb1Detpy6%IP*_t zw$q{-%)8Dc*m4yp2@~kOm(D2Aq*9K?@6su|F=dciqlWh`_0^)e`cy*`*YK1oF6x z$-D~?@wu3Y;FRbkVU6eaW~TOPQkMlM -;; Keywords: editing cursors - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; (global-set-key (kbd "H-SPC") 'set-rectangular-region-anchor) - -;; Think of this one as `set-mark` except you're marking a rectangular region. It is -;; an exceedingly quick way of adding multiple cursors to multiple lines. - -;;; Code: - -(require 'multiple-cursors-core) - -(defvar rrm/anchor (make-marker) - "The position in the buffer that anchors the rectangular region.") - -(defvar rectangular-region-mode-map (make-sparse-keymap) - "Keymap for rectangular region is mainly for rebinding C-g") - -(define-key rectangular-region-mode-map (kbd "C-g") 'rrm/keyboard-quit) -(define-key rectangular-region-mode-map (kbd "") 'rrm/switch-to-multiple-cursors) - -(defvar rectangular-region-mode nil) - -(defun rrm/keyboard-quit () - "Exit rectangular-region-mode." - (interactive) - (rectangular-region-mode 0) - (rrm/remove-rectangular-region-overlays) - (deactivate-mark)) - -;; Bind this to a key (for instance H-SPC) to start rectangular-region-mode -;;;###autoload -(defun set-rectangular-region-anchor () - "Anchors the rectangular region at point. - -Think of this one as `set-mark' except you're marking a rectangular region. It is -an exceedingly quick way of adding multiple cursors to multiple lines." - (interactive) - (set-marker rrm/anchor (point)) - (push-mark (point)) - (rectangular-region-mode 1)) - -(defun rrm/remove-rectangular-region-overlays () - "Remove all rectangular-region overlays." - (mc/remove-fake-cursors) - (mapc #'(lambda (o) - (when (eq (overlay-get o 'type) 'additional-region) - (delete-overlay o))) - (overlays-in (point-min) (point-max)))) - -(defun rrm/repaint () - "Start from the anchor and draw a rectangle between it and point." - (if (not rectangular-region-mode) - (remove-hook 'post-command-hook 'rrm/repaint t) - ;; else - (rrm/remove-rectangular-region-overlays) - (let* ((annoying-arrows-mode nil) - (point-column (current-column)) - (point-line (mc/line-number-at-pos)) - (anchor-column (save-excursion (goto-char rrm/anchor) (current-column))) - (anchor-line (save-excursion (goto-char rrm/anchor) (mc/line-number-at-pos))) - (left-column (if (< point-column anchor-column) point-column anchor-column)) - (right-column (if (> point-column anchor-column) point-column anchor-column)) - (navigation-step (if (< point-line anchor-line) 1 -1))) - (move-to-column anchor-column) - (set-mark (point)) - (move-to-column point-column) - (mc/save-excursion - (while (not (= anchor-line (mc/line-number-at-pos))) - (forward-line navigation-step) - (move-to-column anchor-column) - (when (= anchor-column (current-column)) - (set-mark (point)) - (move-to-column point-column) - (when (= point-column (current-column)) - (mc/create-fake-cursor-at-point)))))))) - -(defun rrm/switch-to-multiple-cursors (&rest forms) - "Switch from rectangular-region-mode to multiple-cursors-mode." - (interactive) - (rectangular-region-mode 0) - (multiple-cursors-mode 1)) - -(defadvice er/expand-region (before switch-from-rrm-to-mc activate) - (when rectangular-region-mode - (rrm/switch-to-multiple-cursors))) - -(defadvice kill-ring-save (before switch-from-rrm-to-mc activate) - (when rectangular-region-mode - (rrm/switch-to-multiple-cursors))) - -;;;###autoload -(define-minor-mode rectangular-region-mode - "A mode for creating a rectangular region to edit" - nil " rr" rectangular-region-mode-map - (if rectangular-region-mode - (progn - (add-hook 'after-change-functions 'rrm/switch-to-multiple-cursors t t) - (add-hook 'post-command-hook 'rrm/repaint t t)) - (remove-hook 'after-change-functions 'rrm/switch-to-multiple-cursors t) - (remove-hook 'post-command-hook 'rrm/repaint t) - (set-marker rrm/anchor nil))) - -(provide 'rectangular-region-mode) - -;;; rectangular-region-mode.el ends here diff --git a/elpa/multiple-cursors-20191210.1759/rectangular-region-mode.elc b/elpa/multiple-cursors-20191210.1759/rectangular-region-mode.elc deleted file mode 100644 index 1261c5b86cf912171ff540caff9fdf682b396279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4877 zcmcgwU2hx571dj92G&FSP$y2^YbvftAWL&UNLf*X)^H8fZQ+MFNl};rG~6AMTkXzl zXJ;j|zrN?r&Qhc$DggpihUDG(ymRk4_uSdDH~)D3+k=CH-r3n1z1C%w7cz4%xuQ3v zNNc*1rp~pZXgZ2r&vkBBB#MG`W%DxsudwK@M?Kg1{VK0%fmNufWlh;yi84PElm8{ zZ7)ud!xNHiW zSA`7H#?;!>L8^@$_KyBMozV9yNtLd1_C0&i;(gvM7VV+nUX`ve#kCumTA`LrAq*M0 z#EjAJdxK0auDHRJFWSL0D8;1=N?|Ug8PeeBD;iOfghSqPa!P-f>rzy-(7ej0D-yz9 zB0|O5518jFL%ivAu-w}0W?s-*5|ldQJuAO^T?tdm;L`2Y88MkmVZ>m*w(teUQ-2nZ z!w2{i;Ws{-Md7$>N$@a1%lM>EAGYkgwI9x(E4LH%f7N$>z^-#GOco#jmS@|>sB_m< z1NG@DusZlOD(95Iw$7V(ACOdDuovTy-h9N;d+hRI5k)R)I_AjiT6FXQ>$ttd6c)0J}GwddAY7cwMByC*2o@6X^9O@t&bwK4kb{+z&QZxE96C5or}W+mV`*V@ z=`x=W8>>QQ#PtoBpigsYucbutBtX*)s5UnrfrC zm4dqz;yP~UuKlXZ>E;hcqL4&AQr2za*;PeOKV8PzXUcdZ20NB;BJLC~nxX{qlJ`jo z;`YNfE>YtD3?$;`b^~B}wx_eykX> zZNWqX?-UnQVAjz3j?~$ z3nXi%Xf3Yf|KBc1fGa}63BALGfE|!8Ad@#$&3CTY1tlS^C^@7Ob6jsmy&r1nnuWGnN-#_NLm3oRm4OjQ_&&13?={Z}@4$w+O35Q)YksZ*+_&Tp7pzI^a74KgUtm z6`er+V$d@V+a)E&yY7gqmN=d*oFPLfSDds;#xl*?<+5TSASW0N1~-$BtS!>yX>cWqMxt`(oZwVTEO6fqT37~)MuCsGfB(cS1-apV z{o7Vbrjlut+YSrg4InR}dpbeLR$}+{FBa_pz#p814&qQQwa8)}RFMBQ_4#7!o#ZdK zed?Um-$(T4wPX47x=($n@F&ah2=1h~%kX8>DR)z4(9Uz3dJ&70(*)PeB8Q?3m}g$4 zeK0t#$8CIutaU$e-)oNsH{QOr0)Wvw;3sK|V%7py3YL(>)4<7x6AQrA)nnoFRz{dq zV+ZSdN+(<~s{4bsNkaH61C-&@iu;VfwMPH1Tq+^>SU;6%tDpd7-w!_=c;-;t!ul{Rgqu?M<9mN9*oqG9Y+o-q)Hz5fBf4j}vh diff --git a/init.el b/init.el index 51b845d..03c7dc7 100644 --- a/init.el +++ b/init.el @@ -131,6 +131,7 @@ ;Atajos de teclas (global-set-key (kbd "C-a") 'mark-whole-buffer); Seleccionar todo con CTRL+A. +(global-set-key (kbd "C-h") 'replace-string); Buscar y reemplazar (global-set-key [f9] 'neotree-toggle) ;Abrir/Cerrar neotree. ;(global-set-key (kbd "C-") 'shell) ;Abrir terminal. ;Cursores múltiples @@ -138,7 +139,7 @@ (global-set-key (kbd "C-d") 'mc/edit-lines) ;Cursor en todas las lineas seleccionadas. (global-set-key (kbd "C->") 'mc/mark-next-like-this) ;Cursor en siguiente como el actual seleccionado. (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) ;Cursor en anteriores como el actual seleccionado. -(global-set-key (kbd "C-S-d") 'mc/mark-all-like-this) ;Cursor en todos como el actual selecionado. +(global-set-key (kbd "C-S-d") 'mc/mark-all-like-this) ;Cursor en todos como el actual seleccionado. (global-set-key (kbd "C-S-") 'mc/add-cursor-on-click) ;Añadir cursor con clics (Shift+CTRL+Clic). ;Mejorando el scroll