2014-05-19 20 views
8

Jestem nowym użytkownikiem Emacsa i otrzymałem plik .emacs od kogoś z mojej dziedziny, który zapoznał mnie z tą platformą programistyczną. Jednak podczas próby zapisania lub utworzenia nowych plików o nazwach podobnych do tych, które już istnieją, wystąpiły pewne problemy. Jeśli spróbuję utworzyć nowy plik, który ma nazwę stosunkowo podobną do istniejącej, nawet jeśli znajduje się w innym katalogu, istniejący plik zostanie otwarty. Podczas próby zapisania pliku o krótszej lub podobnej nazwie do już istniejącego pliku, Emacs próbuje nadpisać plik, zamiast tworzyć nowy. Na przykład próbuję zapisać plik growth_loglike.tpl, ale już mam plik growth_loglike_ADMB2_End.tpl w katalogu. Kiedy idę, aby zapisać i zapisać w growth_loglike.tpl, pokaże się [growth_loglike_ADMB2_End.tpl] na zielono po prawej stronie. Kiedy klikam Enter, pojawia się pytanie, czy chcę nadpisać numer growth_loglike_ADMB2_End.tpl. Myślę, że to jest problem z wtyczką auto-complete. Czy istnieje sposób tymczasowego wyłączenia urządzenia auto-complete? Patrząc na plik auto-complete.el, domyślam się, że muszę zmienić tę zmienną, ale nie jestem pewien, do czego (lub jeśli jest to nawet poprawne). Każda pomoc w tej sprawie byłaby niezwykle pomocna.Jak zatrzymać autouzupełnianie przed nadpisaniem pliku o podobnej nazwie

(defcustom ac-use-overriding-local-map nil 
"Non-nil means `overriding-local-map' will be used to hack for overriding key events on auto-copletion." 
    :type 'boolean 
    :group 'auto-complete) 

Poniżej znajduje się plik .emacs, którego używam.

;; This emacs configuration file will activate common packages 

and 
;; functionality used in the QFC Reproducable Reseach Workshop. 
;; change this path to point to emacs directory in workshop on your computer: 
;; (don't forget to include a trailing slash!) 
(defvar workshop-root "C:/Users/vince151/Documents/workshop/") 

(defvar emacs-root (concat (file-name-as-directory workshop-root) "emacs/")) 

;;============================================================================= 
;;============================================================================= 
;; 1. Misc Plug-ins 
;; here are some paths to look for additional scripts and functions: 
(add-to-list 'load-path (concat emacs-root "plugins/")) 


;;============================================================================= 
;; 2. YASnippet 
(add-to-list 'load-path (concat emacs-root "plugins/yasnippet")) 
(require 'yasnippet) ;; not yasnippet-bundle 
(setq yas-snippet-dirs (concat emacs-root "plugins/yasnippet/snippets")) 
(yas-global-mode 1) 

;; timestamp used in some yasnippets 
(defun now() 
    "Insert string for the current time formatted like '2:34 PM'." 
    (interactive)     ; permit invocation in minibuffer 
    (insert (format-time-string "%D %-I:%M %p"))) 

;;============================================================================= 
;; 3. Swap Slashes 
;; swap slashes and backslashes in current line -- useful for converting paths to be Windows-readable 
;;http://www.xsteve.at/prg/emacs/.emacs.txt 
(defun xsteve-exchange-slash-and-backslash() 
    "Exchanges/with \ and in the current line or in the region when a region-mark is active." 
    (interactive) 
    (save-match-data 
    (save-excursion 
     (let ((replace-count 0) 
      (eol-pos (if mark-active (region-end) (progn (end-of-line) (point)))) 
      (bol-pos (if mark-active (region-beginning) (progn (beginning-of-line) (point))))) 
     (goto-char bol-pos) 
     (while (re-search-forward "/\\|\\\\" eol-pos t) 
      (setq replace-count (+ replace-count 1)) 
      (cond ((string-equal (match-string 0) "/") (replace-match "\\\\" nil nil)) 
       ((string-equal (match-string 0) "\\") (replace-match "/" nil nil))) 
      (message (format "%d changes made." replace-count))))))) 

(global-set-key (kbd "M-\\") 'xsteve-exchange-slash-and-backslash) 


;;============================================================================== 
;; 4. Parenthesis highlighting 

(require 'highlight-parentheses) 
(setq hl-paren-colors '("DodgerBlue1" "IndianRed" "cyan" "ForestGreen" "magenta" "SlateGrey")) 
(defun hpm-on() 
(highlight-parentheses-mode t)) 
(add-hook 'admb-mode-hook 'hpm-on) 
(add-hook 'ess-mode-hook 'hpm-on) 
(add-hook 'inferior-ess-mode-hook 'hpm-on) 
(add-hook 'latex-mode-hook 'hpm-on) 
(add-hook 'LaTeX-mode-hook 'hpm-on) 

;;============================================================================= 
;; 5. ESS 
;; path to current version of R: (This shouldn't be needed if PATH is correct) 
;;(setq-default 
;; inferior-R-program-name 
;; "C:/R/R-2.15.0/bin/i386/Rterm.exe") 

(load (concat emacs-root "ESS/ess-13.09/lisp/ess-site")) 
(setq ess-fancy-comments nil) 
;; make pdflatex the default sweave compiler (removes texi2pdf) 
(setq ess-swv-pdflatex-commands '("pdflatex" "xelatex" "make")) 


;;============================================================================= 
;; 6. ADMB-ide 
;; don't forget to edit setADMBpaths.bat to point to your admb installation 
(setq admb-init (concat emacs-root "setADMBpaths & ")) 
;; these commands were cut from admb.el 
(load (concat emacs-root "plugins/admb")) 
;; Edit .emacs so that `admb-mode' is autoloaded and assigned to *.tpl files: 
(autoload 'admb-mode "admb" "Edit ADMB code." t) 
(add-to-list 'auto-mode-alist '("\\.tpl$" . admb-mode)) 
;; If you're running Emacs in MS Windows, add a line so *.tpl files are not treated as binary: 
(setq file-name-buffer-file-type-alist nil) 
;; You may want to assign a mode that recognizes #comments in *.dat files (perl-mode, conf-space-mode, or R-mode): 
(add-to-list 'auto-mode-alist '("\\.dat$" . perl-mode)) 
;;(add-to-list 'auto-mode-alist '("\\.dat$" . admb-mode)) 
;;(add-to-list 'auto-mode-alist '("\\.dat$" . easy-admb-hook)) 

;;added Monday, March 29, 2010 so that we can run models from within dat files 
(add-hook 'perl-mode-hook 
    (lambda() 
    (define-key perl-mode-map [f9] 'admb-run))) 

;;these commands were taken from Arni Magnusen's emacs file distributed with ADMB-IDE 
(defun easy-admb-hook() 
    (local-set-key [f1] 'admb-help    ) ; prefix 
    (local-set-key [f2] 'admb-mode    ) ; prefix 
    ;;(global-set-key [f3] 'conf-space-mode   ) ; kmacro-start-macro-or-insert-counter 
    (local-set-key [f4] 'admb-toggle-window  ) ; kmacro-end-or-call-macro 
    (local-set-key [f7] 'admb-tpl2cpp  ) 
    (local-set-key [f8] 'admb-build   ) 
    (local-set-key [f9] 'admb-run   ) 
    (local-set-key [S-f9] 'admb-run-args  ) 
    (local-set-key [f10] 'admb-rep   ) ; menu-bar-open 
    (local-set-key [S-f10] 'admb-cor   ) 
    (local-set-key [?\C-.] 'admb-toggle-section)) 
(add-hook 'admb-mode-hook 'easy-admb-hook) 
;;---------- 
;; C++ 
;;---------- 
(defun easy-gdb-hook() 
    (message nil) 
    (setq indent-line-function 'gud-gdb-complete-command) 
    ;;(setq gdb-show-main t) 
    (local-set-key [f5]   'gdb-restore-windows) 
    (local-set-key [M-up]  'gdb-io-buffer-off ) 
    (local-set-key [M-down]  'gdb-io-buffer-on ) 
    (local-set-key [?\C-c ?\C-q] 'comint-quit-subjob) 
    (defun gdb-io-buffer-off() "Enable separate IO buffer." (interactive)(gdb-use-separate-io-buffer nil)) 
    (defun gdb-io-buffer-on() "Disable separate IO buffer." (interactive)(gdb-use-separate-io-buffer t))) 
(add-hook 'gdb-mode-hook 'easy-gdb-hook) 

;;================= 
;; enable YASnippet 
(add-hook 'admb-mode-hook 'yas/minor-mode-on) 
(add-hook 'admb-mode-hook 
      (let ((original-command (lookup-key admb-mode-map [tab]))) 
      `(lambda() 
       (setq yas/fallback-behavior '(apply ,original-command)) 
       (local-set-key [tab] 'yas/expand)))) 

;;============================================================================== 
;; 7. Git 
;; path to git executable: (This shouldn't be needed if PATH is correct) 
;; (setq-default 
;; magit-git-executable 
;; "C:/gnu/git/bin/git.exe") 

;;(require 'git) 
(add-to-list 'load-path (concat emacs-root "plugins/git/magit")) 
(load (concat emacs-root "plugins/git/magit/magit.el")) 
(require 'magit) 
;; use Ctrl-C G to start Git: 
(global-set-key "\C-c\C-g" 'magit-status) 

;; from: http://readystate4.com/2011/02/22/emacs-changing-magits-default-diff-colors/ 
;; change magit diff colors 
(eval-after-load 'magit 
    '(progn 
    (set-face-foreground 'magit-diff-add "green3") 
    (set-face-foreground 'magit-diff-del "red3") 
    (when (not window-system) 
     (set-face-background 'magit-item-highlight "black")))) 

;;============================================================================== 
;; 8. autocomplete 
(require 'auto-complete) 
(add-to-list 'ac-dictionary-directories (concat emacs-root "plugins/ac-dict")) 
(require 'auto-complete-config) 
(ac-config-default) 

;;======================================== 
;; 9. Bibtex database: 
(setq reftex-default-bibliography 
     '("C:/Users/vince151/Documents/workshop/utils/references.bib")) 

(setq reftex-default-bibliography 
     (concat workshop-root "utils/references.bib")) 

(defvar reftex-file 
    (concat 
    (file-name-as-directory workshop-root) "utils/references.bib")) 
(setq reftex-default-bibliography reftex-file) 


;; Make TeX and RefTex aware of Snw and Rnw files 
(setq reftex-file-extensions 
     '(("snw" "rnw" "Snw" "Rnw" "nw" "tex" ".tex" ".ltx") ("bib" ".bib"))) 
(setq TeX-file-extensions 
     '("snw" "rnw" "Snw" "Rnw" "nw" "tex" "sty" "cls" "ltx" "texi" "texinfo")) 

(add-hook 'latex-mode-hook 'turn-on-reftex) 

;;======================================== 
;; 10. Some functions to run bibtex and latex 

(defun ac-run-bibtex() 
    "Run BibTex on the current file." 
    (interactive) 
    (save-excursion 
    (let* ((latex-filename (file-name-sans-extension (buffer-file-name))) 
      (tex-buf (get-buffer-create " *ESS-bibtex-output*"))) 
     (message "Running BibTex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "bibtex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running BibTeX")))) 

(defun ac-run-pdflatex() 
    "Run pdflatex on the current file." 
    (interactive) 
    (save-excursion 
     (let* ((namestem (file-name-sans-extension (buffer-file-name))) 
      (latex-filename (concat namestem ".tex")) 
      (tex-buf (get-buffer-create " *pdflatex-output*"))) 
     (message "Running pdflatex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running pdflatex")))) 

;; terms associated with base name were added to create index files using makeindex 
;; this function impliments the following sequence of calls: 
;; pdflatex -> bibtex -> pdflatex -> makeindex -> pdflatex 
(defun ac-run-lbll() 
    "Run LaTeX-BibTex-Latex-Latex on the current file." 
    (interactive) 
    (save-excursion 
     (let* ((namestem (file-name-sans-extension (buffer-file-name))) 
      (latex-filename (concat namestem ".tex")) 
      (basename (file-name-nondirectory namestem)) 
      (tex-buf (get-buffer-create " *lbll-output*"))) 
     (message "Running LaTeX-BibTex-Latex-Latex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (call-process "bibtex" nil tex-buf 1 namestem) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (call-process "makeindex" nil tex-buf 1 basename) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running LaTeX-BibTex-Latex-Latex")))) 


(add-hook 'latex-mode-hook 
(lambda() 
    (define-key latex-mode-map [f9] 'ac-run-pdflatex) 
) 
) 


;;======================================== 
;; 10. Other useful functions below this point 

;;ispell - super cool spell checker for emacs 
(setq-default ispell-program-name (concat emacs-root "aspell/bin/aspell.exe")) 
;; get itspell to skip sweave chunks: 
(add-to-list 'ispell-skip-region-alist '("^<<.*>>=" . "^@")) 

;;============================================================================= 
;; use string rectangle for indentng blocks/regions of code 
(global-set-key (kbd "C->") 'string-insert-rectangle) 

;;============================================================================= 
;;ido (from: http://www.emacswiki.org/emacs/InteractivelyDoThings) 
(require 'ido) 
(ido-mode t) 
(setq ido-enable-flex-matching t) ;; enable fuzzy matching 

;;============================================================================= 
;; use ibuffer anytime we would have use buffer-list 
(defalias 'list-buffers 'ibuffer) 

; get rid of prompt that forces you to type full "yes" or "no". 
; y or n is enough 
(defalias 'yes-or-no-p 'y-or-n-p) 

;;============================================================================== 
;; from http://www.joegrossberg.com/archives/000182.html 
;; enable recent file list - bound to C-x C-r 
(require 'recentf) 
(recentf-mode 1) 
(setq recentf-max-menu-items 25) 
(global-set-key "\C-x\ \C-r" 'recentf-open-files) 

;;============================================================================== 
;; from http://www.stokebloke.com/wordpress/2008/04/17/emacs-refresh-f5-key/ 
;; use f3 to refresh file in current buffer 
;;(defun refresh-file() 
;; (interactive) 
;; (revert-buffer t t t) 
;; ) 
;;(global-set-key [f3] 'refresh-file) 
;; 
;;============================================================================== 
;; copy path of current buffer to kill ring 
;; from:http://stackoverflow.com/questions/3669511/ 
(defun copy-full-path-to-kill-ring() 
    "copy buffer's full path to kill ring" 
    (interactive) 
    (when buffer-file-name 
    (kill-new (file-truename buffer-file-name)))) 
(global-set-key "\C-cz" 'copy-full-path-to-kill-ring) 

;;============================================================================== 
;; keep emacs from cluttering working directories with tilde files by 
;; placing them here:(concat emacs-root "tildes") instead of 
;; wherever we're working. 
(defvar user-temporary-file-directory 
    (concat emacs-root "tildes/")) 
(make-directory user-temporary-file-directory t) 
(setq backup-by-copying t) 
(setq backup-directory-alist 
     `(("." . ,user-temporary-file-directory) 
     (,tramp-file-name-regexp nil))) 
(setq auto-save-list-file-prefix 
     (concat user-temporary-file-directory ".auto-saves-")) 
(setq auto-save-file-name-transforms 
     `((".*" ,user-temporary-file-directory t))) 

;;;============================================================================ 


; try to improve slow performance on windows. 
;;Got this from a website that said this would help. 
(setq w32-get-true-file-attributes nil) 
+1

możliwe duplikat [Nie wybierając co Emacs ido sugeruje?] (Http://stackoverflow.com/questions/21007014/not-selecting-what-emacs-ido-is-suggesting) – Chris

+0

Również możliwe duplikat [Tryb Ido jest zbyt inteligentny, czy mogę go NIE wypełnić nazwy pliku?] (http://stackoverflow.com/questions/812524/ido-mode-is-too-smart-can-i-get-it- to-not-complete-a-filename). – legoscia

Odpowiedz

14

Jest to domyślne zachowanie trybu ido. Są dwie rzeczy, które możesz zrobić:

  • Po wpisaniu nazwy pliku, który chcesz, uderzył C-j zamiast RET. To sprawia, że ​​ido-mode używa nazwy pliku dokładnie tak, jak go wpisałeś.
  • Możesz tymczasowo przełączyć się na "normalne" zachowanie się minibufora uderzając w C-f. Następnie możesz uzupełnić tabulator o starą nazwę pliku i edytować go w razie potrzeby.
+1

Inną opcją, którą uważam za wygodną, ​​jest '(setq ido-auto-merge-delay-time-1)' (lub 2, lub 0.5, w zależności od tego jak szybko piszesz i jak szybko chcesz inteligentnego autouzupełniania) – juanleon

+1

Chcę tylko podziękować ! Jakoś nie wiedziałem o tym C-j przez rok i zawsze dotykałem plików w konsoli i googled nic. – ipoteka