C / C + + her ne kadar Emacs, doğru PHP girinti değil?

1 Cevap php

Ben son yamaları ile Ubuntu 9.04 çalışan bir HP dizüstü GNU Emacs 22.2.1 çalıştırıyorum.

Son zamanlarda, bazı PHP kodları işlemek gerekiyor, bu yüzden ben temellerini kapsayacak benim. Emacs ne düşünme, Ubuntu'nun php-mode paketi eklendi. Evet, hemen hemen. Aşağıdaki kısa kod parçasında belirti gösterir:

<?php
# main()
/*
 *
 *
 */
{
    $fpath="/tmp";
    // This is a comment
    if (!file_exists($fpath)) {
        // This is another comment
        print "$fpath doesn't exist on the system!\n";
        exit(1);
    } elseif (!is_dir($fpath)) {
        print "$fpath is not a directory\n";
        exit(2);
    } else
          // I don't know why it doesn't use the } as the anchor position
          // in PHP, but in C and C++?
          print "Found $fpath on the system. Good...\n";
} # end of main()

Ben istediğiniz gibi iki yorum ve print deyimi hem 6 boşluk, yerine 4 ile mahsup dikkat edin. Ben sadece basit var emacs, ben en yaygın olarak kullanmak C / C + +, iki dil için aşağıdaki ile.:

[...]
(defconst my-c-style
  '((c-comment-only-line-offset . 0)
    (c-hanging-braces-alist     . ((substatement-open after)
                                   (brace-list-open)))
    (c-hanging-colons-alist     . ((member-init-intro before)
                                   (inher-intro)
                                   (case-label after)
                                   (label after)
                                   (access-label after)))
    (c-cleanup-list             . (scope-operator
                                   empty-defun-braces
                                   defun-close-semi))
    (c-offsets-alist            . ((arglist-close . c-lineup-arglist)
                                   (substatement-open . 0)
                                   (case-label        . 4)
                                   (block-open        . 0)
                                   (defun-block-intro . 0)
                                   (statement-block-intro . 4)
                                   (substatement . 4)
                                   (knr-argdecl-intro . -)))
    (c-echo-syntactic-information-p . t)
    )
  "My C Programming Style")

;; Customizations for all of c-mode, c++-mode, and objc-mode
(defun my-c-mode-common-hook ()
  ;; add my personal style and set it for the current buffer
  (c-add-style "PERSONAL" my-c-style t)
  ;; offset customizations not in my-c-style
  (c-set-offset 'defun-block-intro' +)
  ;; other customizations
  ;
  (setq-default indent-tabs-mode nil)

  ;; make sure that comments don't get moved when you do a //
  (c-set-offset 'comment-intro 0)
  ;; keybindings for all supported languages.  We can put these in
  ;; c-mode-base-map because c-mode-map, c++-mode-map, objc-mode-map,
  ;; java-mode-map, and idl-mode-map inherit from it.
  (define-key c-mode-base-map "\C-m" 'newline-and-indent)
  )

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
(require 'php-mode)
[...]

Bana ne maceradan C veya C + + ile, emacs istediğiniz gibi örneğin, benim kodları girinti yapabiliyor olmasıdır:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    [...]
    if ((cond = strcmp(word, mid->word)) < 0) {
        high = mid;
        low = mid - 1;
    } else if (cond > 0) {
        low = mid + 1;
        high = mid + 2;
    } else
        return mid;
}

Ben tekrar CC Mod kılavuzunu inceledim ama emacs yüzden gibi davranmasına neden ne çözemedim. Ben tipik Cc Cs ve syntatical eleman PHP "ifadesi" olarak iyi mi, neden PHP durumunda, emacs ofset hesaplaması için çıpa olarak başka yılında 'e' kullanır, ancak C / C + +, kullandığı olması gerektiği gibi kapatma ayracı '}'? Ben herhangi bir ipucu ve / veya işaretçileri seviniriz.

1 Cevap

Senin sorunun başka sonra bir eksik {değildir. Eğer başka devam sanki Emacs girinti edilir. {Ekleyin ve iyi iş olacak