⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psvn.el

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 EL
📖 第 1 页 / 共 5 页
字号:
          svn-status-info))(defun svn-parse-status-result ()  "Parse the *svn-process* buffer.The results are used to build the `svn-status-info' variable."  (setq svn-status-head-revision nil)  (save-excursion    (let ((old-ui-information (svn-status-ui-information-hash-table))          (svn-marks)          (svn-file-mark)          (svn-property-mark)          (svn-locked-mark)          (svn-with-history-mark)          (svn-switched-mark)          (svn-update-mark)          (local-rev)          (last-change-rev)          (author)          (path)          (dir)          (revision-width svn-status-default-revision-width)          (author-width svn-status-default-author-width)          (svn-marks-length (if (and svn-status-verbose svn-status-remote)                                8 5))          (dir-set '(".")))      (set-buffer "*svn-process*")      (setq svn-status-info nil)      (goto-char (point-min))      (while (< (point) (point-max))        (cond         ((= (svn-point-at-eol) (svn-point-at-bol)) ;skip blank lines          nil)         ((looking-at "Status against revision:[ ]+\\([0-9]+\\)")          ;; the above message appears for the main listing plus once for each svn:externals entry          (unless svn-status-head-revision            (setq svn-status-head-revision (match-string 1))))         ((looking-at "Performing status on external item at '\\(.*\\)'")          ;; The *next* line has info about the directory named in svn:externals          ;; [ie the directory in (match-string 1)]          ;; we should parse it, and merge the info with what we have already know          ;; but for now just ignore the line completely          (forward-line)          )         (t          (setq svn-marks (buffer-substring (point) (+ (point) svn-marks-length))                svn-file-mark (elt svn-marks 0)         ; 1st column - M,A,C,D,G,? etc                svn-property-mark (elt svn-marks 1)     ; 2nd column - M,C (properties)                svn-locked-mark (elt svn-marks 2)       ; 3rd column - L or blank                svn-with-history-mark (elt svn-marks 3) ; 4th column - + or blank                svn-switched-mark (elt svn-marks 4))     ; 5th column - S or blank          (if (and svn-status-verbose svn-status-remote)              (setq svn-update-mark (elt svn-marks 7))) ; 8th column - * or blank          (when (eq svn-property-mark ?\ )     (setq svn-property-mark nil))          (when (eq svn-locked-mark ?\ )       (setq svn-locked-mark nil))          (when (eq svn-with-history-mark ?\ ) (setq svn-with-history-mark nil))          (when (eq svn-switched-mark ?\ )     (setq svn-switched-mark nil))          (when (eq svn-update-mark ?\ )       (setq svn-update-mark nil))          (forward-char svn-marks-length)          (skip-chars-forward " ")          (cond           ((looking-at "\\([-?]\\|[0-9]+\\) +\\([-?]\\|[0-9]+\\) +\\([^ ]+\\) *\\(.+\\)$")            (setq local-rev (svn-parse-rev-num (match-string 1))                  last-change-rev (svn-parse-rev-num (match-string 2))                  author (match-string 3)                  path (match-string 4)))           ((looking-at "\\([-?]\\|[0-9]+\\) +\\([^ ]+\\)$")            (setq local-rev (svn-parse-rev-num (match-string 1))                  last-change-rev -1                  author "?"                  path (match-string 2)))           ((looking-at "\\(.*\\)")            (setq path (match-string 1)                  local-rev -1                  last-change-rev -1                  author (if (eq svn-file-mark 88) "" "?"))) ;clear author of svn:externals dirs           (t            (error "Unknown status line format")))          (unless path (setq path "."))          (setq dir (file-name-directory path))          (if (and (not svn-status-verbose) dir)              (let ((dirname (directory-file-name dir)))                (if (not (member dirname dir-set))                    (setq dir-set (cons dirname dir-set)))))          (setq svn-status-info (cons (list (or (gethash path old-ui-information)                                                (svn-status-make-ui-status))                                            svn-file-mark                                            svn-property-mark                                            path                                            local-rev                                            last-change-rev                                            author                                            svn-update-mark                                            svn-locked-mark                                            svn-with-history-mark                                            svn-switched-mark)                                      svn-status-info))          (setq revision-width (max revision-width                                    (length (number-to-string local-rev))                                    (length (number-to-string last-change-rev))))          (setq author-width (max author-width (length author)))))        (forward-line 1))      (unless svn-status-verbose        (setq svn-status-info (svn-status-make-dummy-dirs dir-set                                                          old-ui-information)))      (setq svn-status-default-column            (+ 6 revision-width revision-width author-width               (if svn-status-short-mod-flag-p 3 0)))      (setq svn-status-line-format (format " %%c%%c%%c %%%ds %%%ds %%-%ds"                                           revision-width                                           revision-width                                           author-width))      (setq svn-status-info (nreverse svn-status-info))      (when svn-status-sort-status-buffer        (setq svn-status-info (sort svn-status-info 'svn-status-sort-predicate))))));;(string-lessp "." "%") => nil;(svn-status-sort-predicate '(t t t ".") '(t t t "%")) => t(defun svn-status-sort-predicate (a b)  "Return t if A should appear before B in the `svn-status-buffer-name' buffer.A and B must be line-info's."  (string-lessp (concat (svn-status-line-info->full-path a) "/")                (concat (svn-status-line-info->full-path b) "/")))(defun svn-status-remove-temp-file-maybe ()  "Remove any (no longer required) temporary files created by psvn.el."  (when svn-status-temp-file-to-remove    (when (file-exists-p svn-status-temp-file-to-remove)      (delete-file svn-status-temp-file-to-remove))    (when (file-exists-p svn-status-temp-arg-file)      (delete-file svn-status-temp-arg-file))    (setq svn-status-temp-file-to-remove nil)))(defun svn-status-remove-control-M ()  "Remove ^M at end of line in the whole buffer."  (interactive)  (let ((buffer-read-only nil))    (save-match-data      (save-excursion        (goto-char (point-min))        (while (re-search-forward "\r$" (point-max) t)          (replace-match "" nil nil))))))(condition-case nil    ;;(easy-menu-add-item nil '("tools") ["SVN Status" svn-status t] "PCL-CVS")    (easy-menu-add-item nil '("tools") ["SVN Status" svn-status t])  (error (message "psvn: could not install menu")))(defvar svn-status-mode-map () "Keymap used in `svn-status-mode' buffers.")(put 'svn-status-mode-map 'risky-local-variable t) ;for Emacs 20.7(defvar svn-status-mode-mark-map ()  "Subkeymap used in `svn-status-mode' for mark commands.")(put 'svn-status-mode-mark-map      'risky-local-variable t) ;for Emacs 20.7(defvar svn-status-mode-property-map ()  "Subkeymap used in `svn-status-mode' for property commands.")(put 'svn-status-mode-property-map  'risky-local-variable t) ;for Emacs 20.7(defvar svn-status-mode-options-map ()  "Subkeymap used in `svn-status-mode' for option commands.")(put 'svn-status-mode-options-map   'risky-local-variable t) ;for Emacs 20.7(defvar svn-status-mode-trac-map ()  "Subkeymap used in `svn-status-mode' for trac issue tracker commands.")(put 'svn-status-mode-trac-map      'risky-local-variable t) ;for Emacs 20.7(defvar svn-status-mode-extension-map ()  "Subkeymap used in `svn-status-mode' for some seldom used commands.")(put 'svn-status-mode-extension-map 'risky-local-variable t) ;for Emacs 20.7(when (not svn-status-mode-map)  (setq svn-status-mode-map (make-sparse-keymap))  (suppress-keymap svn-status-mode-map)  ;; Don't use (kbd "<return>"); it's unreachable with GNU Emacs 21.3 on a TTY.  (define-key svn-status-mode-map (kbd "RET") 'svn-status-find-file-or-examine-directory)  (define-key svn-status-mode-map (kbd "<mouse-2>") 'svn-status-mouse-find-file-or-examine-directory)  (define-key svn-status-mode-map (kbd "^") 'svn-status-examine-parent)  (define-key svn-status-mode-map (kbd "s") 'svn-status-show-process-buffer)  (define-key svn-status-mode-map (kbd "f") 'svn-status-find-files)  (define-key svn-status-mode-map (kbd "o") 'svn-status-find-file-other-window)  (define-key svn-status-mode-map (kbd "v") 'svn-status-view-file-other-window)  (define-key svn-status-mode-map (kbd "e") 'svn-status-toggle-edit-cmd-flag)  (define-key svn-status-mode-map (kbd "g") 'svn-status-update)  (define-key svn-status-mode-map (kbd "M-s") 'svn-status-update) ;; PCL-CVS compatibility  (define-key svn-status-mode-map (kbd "q") 'svn-status-bury-buffer)  (define-key svn-status-mode-map (kbd "h") 'svn-status-use-history)  (define-key svn-status-mode-map (kbd "m") 'svn-status-set-user-mark)  (define-key svn-status-mode-map (kbd "u") 'svn-status-unset-user-mark)  ;; This matches a binding of `dired-unmark-all-files' in `dired-mode-map'  ;; of both GNU Emacs and XEmacs.  It seems unreachable with XEmacs on  ;; TTY, but if that's a problem then its Dired needs fixing too.  ;; Or you could just use "*!".  (define-key svn-status-mode-map "\M-\C-?" 'svn-status-unset-all-usermarks)  ;; The key that normally deletes characters backwards should here  ;; instead unmark files backwards.  In GNU Emacs, that would be (kbd  ;; "DEL") aka [?\177], but XEmacs treats those as [(delete)] and  ;; would bind a key that normally deletes forwards.  [(backspace)]  ;; is unreachable with GNU Emacs on a tty.  Try to recognize the  ;; dialect and act accordingly.  ;;  ;; XEmacs has a `delete-forward-p' function that checks the  ;; `delete-key-deletes-forward' option.  We don't use those, for two  ;; reasons: psvn.el may be loaded before user customizations, and  ;; XEmacs allows simultaneous connections to multiple devices with  ;; different keyboards.  (define-key svn-status-mode-map              (if (member (kbd "DEL") '([(delete)] [delete]))                  [(backspace)]         ; XEmacs                (kbd "DEL"))            ; GNU Emacs              'svn-status-unset-user-mark-backwards)  (define-key svn-status-mode-map (kbd "$") 'svn-status-toggle-elide)  (define-key svn-status-mode-map (kbd "w") 'svn-status-copy-filename-as-kill)  (define-key svn-status-mode-map (kbd ".") 'svn-status-goto-root-or-return)  (define-key svn-status-mode-map (kbd "I") 'svn-status-parse-info)  (define-key svn-status-mode-map (kbd "V") 'svn-status-svnversion)  (define-key svn-status-mode-map (kbd "?") 'svn-status-toggle-hide-unknown)  (define-key svn-status-mode-map (kbd "_") 'svn-status-toggle-hide-unmodified)  (define-key svn-status-mode-map (kbd "a") 'svn-status-add-file)  (define-key svn-status-mode-map (kbd "A") 'svn-status-add-file-recursively)  (define-key svn-status-mode-map (kbd "+") 'svn-status-make-directory)  (define-key svn-status-mode-map (kbd "R") 'svn-status-mv)  (define-key svn-status-mode-map (kbd "D") 'svn-status-rm)  (define-key svn-status-mode-map (kbd "c") 'svn-status-commit)  (define-key svn-status-mode-map (kbd "M-c") 'svn-status-cleanup)  (define-key svn-status-mode-map (kbd "U") 'svn-status-update-cmd)  (define-key svn-status-mode-map (kbd "M-u") 'svn-status-update-cmd)  (define-key svn-status-mode-map (kbd "r") 'svn-status-revert)  (define-key svn-status-mode-map (kbd "l") 'svn-status-show-svn-log)  (define-key svn-status-mode-map (kbd "i") 'svn-status-info)  (define-key svn-status-mode-map (kbd "b") 'svn-status-blame)  (define-key svn-status-mode-map (kbd "=") 'svn-status-show-svn-diff)  ;; [(control ?=)] is unreachable on TTY, but you can use "*u" instead.  ;; (Is the "u" mnemonic for something?)  (define-key svn-status-mode-map (kbd "C-=") 'svn-status-show-svn-diff-for-marked-files)  (define-key svn-status-mode-map (kbd "~") 'svn-status-get-specific-revision)  (define-key svn-status-mode-map (kbd "E") 'svn-status-ediff-with-revision)  (define-key svn-status-mode-map (kbd "C-n") 'svn-status-next-line)  (define-key svn-status-mode-map (kbd "C-p") 'svn-status-previous-line)  (define-key svn-status-mode-map (kbd "n") 'svn-status-next-line)  (define-key svn-status-mode-map (kbd "p") 'svn-status-previous-line)  (define-key svn-status-mode-map (kbd "<down>") 'svn-status-next-line)  (define-key svn-status-mode-map (kbd "<up>") 'svn-status-previous-line)  (define-key svn-status-mode-map (kbd "C-x C-j") 'svn-status-dired-jump)  (define-key svn-status-mode-map [down-mouse-3] 'svn-status-popup-menu)  (setq svn-status-mode-mark-map (make-sparse-keymap))  (define-key svn-status-mode-map (kbd "*") svn-status-mode-mark-map)  (define-key svn-status-mode-mark-map (kbd "!") 'svn-status-unset-all-usermarks)  (define-key svn-status-mode-mark-map (kbd "?") 'svn-status-mark-unknown)  (define-key svn-status-mode-mark-map (kbd "A") 'svn-status-mark-added)  (define-key svn-status-mode-mark-map (kbd "M") 'svn-status-mark-modified)  (define-key svn-status-mode-mark-map (kbd "D") 'svn-status-mark-deleted)  (define-key svn-status-mode-mark-map (kbd "*") 'svn-status-mark-changed)  (define-key svn-status-mode-mark-map (kbd "u") 'svn-status-show-svn-diff-for-marked-files))(when (not svn-status-mode-property-map)  (setq svn-status-mode-property-map (make-sparse-keymap))  (define-key svn-status-mode-property-map (kbd "l") 'svn-status-property-list)  (define-key svn-status-mode-property-map (kbd "s") 'svn-status-property-set)  (define-key svn-status-mode-property-map (kbd "d") 'svn-status-property-delete)  (define-key svn-status-mode-property-map (kbd "e") 'svn-status-property-edit-one-entry)  (define-key svn-status-mode-property-map (kbd "i") 'svn-status-property-ignore-file)  (define-key svn-status-mode-property-map (kbd "I") 'svn-status-property-ignore-file-extension)  ;; XEmacs 21.4.15 on TTY (vt420) converts `C-i' to `TAB',  ;; which [(control ?i)] won't match.  Handle it separately.  ;; On GNU Emacs, the following two forms bind the same key,  ;; reducing clutter in `where-is'.  (define-key svn-status-mode-property-map [(control ?i)] 'svn-status-property-edit-svn-ignore)  (define-key svn-status-mode-property-map (kbd "TAB") 'svn-status-property-edit-svn-ignore)  (define-key svn-status-mode-property-map (kbd "k") 'svn-status-property-set-keyword-list)  (define-key svn-status-mode-property-map (kbd "y") 'svn-status-property-set-eol-style)  (define-key svn-status-mode-property-map (kbd "x") 'svn-status-property-set-executable)  ;; TODO: Why is `svn-status-select-line' in `svn-status-mode-property-map'?  (define-key svn-status-mode-property-map (kbd "RET") 'svn-status-select-line)  (define-key svn-status-mode-map (kbd "P") svn-status-mode-property-map))(when (not svn-status-mode-extension-map)  (setq svn-status-mode-extension-map (make-sparse-keymap))  (define-key svn-status-mode-extension-map (kbd "v") 'svn-status-resolved)  (define-key svn-status-mode-extension-map (kbd "X") 'svn-status-resolve-conflicts)  (define-key svn-status-mode-extension-map (kbd "e") 'svn-status-export)  (define-key svn-status-mode-map (kbd "X") svn-status-mode-extension-map))(when (not svn-status-mode-options-map)  (setq svn-status-mode-options-map (make-sparse-keymap))  (define-key svn-status-mode-options-map (kbd "s") 'svn-status-save-state)  (define-key svn-status-mode-options-map (kbd "l") 'svn-status-load-state)  (define-key svn-status-mode-options-map (kbd "x") 'svn-status-toggle-sort-status-buffer)  (define-key svn-status-mode-options-map (kbd "f") 'svn-status-toggle-display-full-path)  (define-key svn-status-mode-options-map (kbd "t") 'svn-status-set-trac-project-root)  (define-key svn-status-mode-options-map (

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -