comparison contrib/mercurial.el @ 2983:48baf9fb1921

mercurial.el: get rid of unportable, unperformant use of replace-regexp.
author Bryan O'Sullivan <bos@serpentine.com>
date Tue, 22 Aug 2006 08:53:37 -0700
parents 0ffca0cb9f4b
children e1762867a734
comparison
equal deleted inserted replaced
2982:799811087044 2983:48baf9fb1921
1 ;;; mercurial.el --- Emacs support for the Mercurial distributed SCM 1 ;;; mercurial.el --- Emacs support for the Mercurial distributed SCM
2 2
3 ;; Copyright (C) 2005 Bryan O'Sullivan 3 ;; Copyright (C) 2005, 2006 Bryan O'Sullivan
4 4
5 ;; Author: Bryan O'Sullivan <bos@serpentine.com> 5 ;; Author: Bryan O'Sullivan <bos@serpentine.com>
6 6
7 ;; mercurial.el is free software; you can redistribute it and/or 7 ;; mercurial.el is free software; you can redistribute it and/or
8 ;; modify it under the terms of version 2 of the GNU General Public 8 ;; modify it under the terms of version 2 of the GNU General Public
722 (if (not hg-root-dir) 722 (if (not hg-root-dir)
723 (error "error: %s: directory is not part of a Mercurial repository." 723 (error "error: %s: directory is not part of a Mercurial repository."
724 default-directory) 724 default-directory)
725 (cd hg-root-dir))))) 725 (cd hg-root-dir)))))
726 726
727 (defun hg-fix-paths ()
728 "Fix paths reported by some Mercurial commands."
729 (save-excursion
730 (goto-char (point-min))
731 (while (re-search-forward " \\.\\.." nil t)
732 (replace-match " " nil nil))))
733
727 (defun hg-add (path) 734 (defun hg-add (path)
728 "Add PATH to the Mercurial repository on the next commit. 735 "Add PATH to the Mercurial repository on the next commit.
729 With a prefix argument, prompt for the path to add." 736 With a prefix argument, prompt for the path to add."
730 (interactive (list (hg-read-file-name " to add"))) 737 (interactive (list (hg-read-file-name " to add")))
731 (let ((buf (current-buffer)) 738 (let ((buf (current-buffer))
732 (update (equal buffer-file-name path))) 739 (update (equal buffer-file-name path)))
733 (hg-view-output (hg-output-buffer-name) 740 (hg-view-output (hg-output-buffer-name)
734 (apply 'call-process (hg-binary) nil t nil (list "add" path)) 741 (apply 'call-process (hg-binary) nil t nil (list "add" path))
735 ;; "hg add" shows pathes relative NOT TO ROOT BUT TO REPOSITORY 742 (hg-fix-paths)
736 (replace-regexp " \\.\\.." " " nil 0 (buffer-size))
737 (goto-char 0) 743 (goto-char 0)
738 (cd (hg-root path))) 744 (cd (hg-root path)))
739 (when update 745 (when update
740 (unless vc-make-backup-files 746 (unless vc-make-backup-files
741 (set (make-local-variable 'backup-inhibited) t)) 747 (set (make-local-variable 'backup-inhibited) t))
971 (let ((buf (current-buffer)) 977 (let ((buf (current-buffer))
972 (update (equal buffer-file-name path))) 978 (update (equal buffer-file-name path)))
973 (hg-view-output (hg-output-buffer-name) 979 (hg-view-output (hg-output-buffer-name)
974 (apply 'call-process (hg-binary) nil t nil (list "forget" path)) 980 (apply 'call-process (hg-binary) nil t nil (list "forget" path))
975 ;; "hg forget" shows pathes relative NOT TO ROOT BUT TO REPOSITORY 981 ;; "hg forget" shows pathes relative NOT TO ROOT BUT TO REPOSITORY
976 (replace-regexp " \\.\\.." " " nil 0 (buffer-size)) 982 (hg-fix-paths)
977 (goto-char 0) 983 (goto-char 0)
978 (cd (hg-root path))) 984 (cd (hg-root path)))
979 (when update 985 (when update
980 (with-current-buffer buf 986 (with-current-buffer buf
981 (when (local-variable-p 'backup-inhibited) 987 (when (local-variable-p 'backup-inhibited)