Coder Social home page Coder Social logo

Weird indent behavior about web-mode HOT 9 CLOSED

fxbois avatar fxbois commented on May 22, 2024
Weird indent behavior

from web-mode.

Comments (9)

fxbois avatar fxbois commented on May 22, 2024

@milouse Salut Milouse,
je vais regarder ce bug.
Je précise en revanche que web-mode est un mode prévu avant tout pour l'édition de tempates. Un bloc de code dans un template est généralement assez simple. Places tu des déclarations de fonctions (cf. plus haut) dans des templates ?
Pour ma part, j'utilise moi même php-mode.el lorsqu'il s'agit d'éditer des scripts qui ne contiennent que du php.

from web-mode.

milouse avatar milouse commented on May 22, 2024

Salut,

Je n'utilise pas à proprement parler de templates. Je pensais que web-mode m'aiderait à résoudre l'équation impossible de l'édition de fichier mélangeant html/css/javascript/php. Je sais ce n'est pas optimal mais lors de phase de prototypage rapide, c'est plutôt pratique. Néanmoins, même dans ce cas, j'évite les mélanges trop éxotiques et me contente de l'organisation suivante :

<?php 
tout mon code php (dont effectivement éventuellement des déclarations, 
mais dans le cas de mélange, c'est rare
?>
<html>
Le HTML vient ensuite et le PHP se résume ici au grand maximum à des 
echo éventuellement imbriqués dans des foreach.
</html>

Cependant, le problème se pose pour moi même dans des fichiers ne contenant que du PHP ou que du html/javascript. C'est pour cela que je soupçonne que le problème vienne d'une incompatibilité entre web-mode et les déclarations de style générale que j'effectue dans mon init.el.

Je vais essayer de faire un test à vide (init quasi vide) pour voir si je trouve l'origine.

from web-mode.

fxbois avatar fxbois commented on May 22, 2024

@milouse should be solved with last commit

from web-mode.

milouse avatar milouse commented on May 22, 2024

C'est quasiment bon pour tout. Il me reste un petit manque : lorsque j'enchaîne de longue concaténations, celles-ci ne s'indente pas comme je le souhaiterait. J'aimerais obtenir ceci :

$test = 'titi' . $truc
    . ' chose';

Mais pour l'instant la deuxième ligne ne s'indente pas et reste alignée sur la première ligne :

$test = 'titi' . $truc
. ' chose';

from web-mode.

fxbois avatar fxbois commented on May 22, 2024

@milouse ça devrait être ok avec le dernier commit

from web-mode.

milouse avatar milouse commented on May 22, 2024

Je ne comprends pas très bien comment fonctionne les règles d'indentation, du coup je ne sais pas jusqu'à quel point ce n'est pas plutôt les réglages évoqué dans mon premier message qui peuvent interférer, mais il me reste deux souci :

Le premier avec les switch : si jeu veux quelque chose comme ça :

switch($toto){
    case 'truc':
        code code code
        break;
    case 'chose':
         code code code
         break;
    default:
}

Pour l'instant les blocs de code au sein des case restent alignés au case (pas d'indentation supplémentaire) :

switch($toto){
    case 'truc':
    code code code
    break;
    case 'chose':
    code code code
    break;
    default:
}

L'autre souci provient des concaténations comme dans mon précédent message, ou si je veux :

$test = 'titi' . $truc
    . ' chose';

J'obtiens

$test = 'titi' . $truc
      . ' chose';

C'est à dire qu'au lieu d'être indentées avec un cran d'indentation supplémentaire, les lignes suivantes sont alignées sur le =.
Maintenant je me rends bien compte que je demande des réglages hyper fins et personnels. Si le but de web mode est de rester générique je le comprend tout à fait, aussi n'hésitez pas à clôturer l'issue si j'en demande trop.

Merci beaucoup

from web-mode.

fxbois avatar fxbois commented on May 22, 2024

@milouse Les modes d'édition de code utilisent souvent les fonctions d'indentation proposées par cc-mode (http://www.gnu.org/software/emacs/manual/html_mono/ccmode.html).
web-mode devant être compatible avec pas mal de langages différents (php, js, css, java, etc.) j'ai pris le parti d'écrire ma propre fonction (basique) d'indentation. Ceci explique que le comportement soit différent d'autres modes. Concernant tes demandes, le décalage sous le "case" sera peut être géré mais pas dans un futur proche (vraiment pas évident à gérer dans l'état actuel du code). Et pour la concaténation des chaines, le fonctionnement est volontaire ... je préfère que l'alignement se fasse sur les guillemets.

from web-mode.

fxbois avatar fxbois commented on May 22, 2024

@milouse j'ai finalement regardé la gestion du switch ... case et cela devrait désormais fonctionner.

from web-mode.

milouse avatar milouse commented on May 22, 2024

Ok merci pour tout alors.

from web-mode.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.