Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to stop auto-complete from overwriting a file that is similarly named

I am a new user to Emacs and have gotten a .emacs file from someone in my field that introduced me to this programming platform. However, I have been having some issues while trying to save or create new files that are named similar to those that already exist. If I attempt to create a new file that has a name that is relatively similar to one that exists, even if it is in a different directory, the existing file will be opened. When attempting to save a file with a shorter or similar name to an already existing file, Emacs attempts to overwrite the file instead of creating a new one.

For example, I am attempting to save the file growth_loglike.tpl but I already have the file growth_loglike_ADMB2_End.tpl in the directory. When I go to save and write in growth_loglike.tpl it shows [growth_loglike_ADMB2_End.tpl] in green to the right. When I hit enter it asks me if I want to overwrite growth_loglike_ADMB2_End.tpl. I think this is an issue with the auto-complete plugin. Is there a way to temporarily turn off the auto-complete? Looking at the auto-complete.el file my guess is that I need to change this variable but I'm not sure to what (or if that is even correct). Any help with this would be extremely helpful.

(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)

Below is the .emacs file that I am using.

    ;; 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)
like image 773
user3653085 Avatar asked May 19 '14 14:05

user3653085


People also ask

Does Notepad ++ have autocomplete?

Notepad++ offers automatic completion of various sorts of text after you have entered an initial substring (or prefix), which can save you having to type all of a long word (and potentially save you mistyping it).

What is autocomplete feature?

Autocomplete is a feature within Google Search that makes it faster to complete searches that you start to type. Our automated systems generate predictions that help people save time by allowing them to quickly complete the search they already intended to do.


1 Answers

This is the default behaviour of ido-mode. There are two things you can do about it:

  • Once you've typed the filename you want, hit C-j instead of RET. This makes ido-mode use the filename exactly as you typed it.
  • You can temporarily switch back to the "normal" minibuffer behaviour by hitting C-f. Then you can tab-complete the old filename, and edit it as needed.
like image 53
legoscia Avatar answered Sep 28 '22 05:09

legoscia